change youtube id extract algorithm + variable as string if null fix + add youtube icon and fix icons on slideshow list + fix slide preview location
This commit is contained in:
parent
0dd8571d4b
commit
53f641a48d
@ -165,6 +165,9 @@ class Variable:
|
||||
return bool(int(self._value))
|
||||
|
||||
def as_string(self) -> str:
|
||||
if self._value is None:
|
||||
return ''
|
||||
|
||||
return str(self._value)
|
||||
|
||||
def as_int(self) -> int:
|
||||
|
||||
55
src/utils.py
55
src/utils.py
@ -3,7 +3,6 @@ import re
|
||||
import subprocess
|
||||
import platform
|
||||
|
||||
from urllib.parse import urlparse, parse_qs
|
||||
from typing import Optional, List, Dict
|
||||
from enum import Enum
|
||||
from cron_descriptor import ExpressionDescriptor
|
||||
@ -159,24 +158,40 @@ def get_ip_address() -> Optional[str]:
|
||||
return None
|
||||
|
||||
|
||||
def get_yt_video_id(url_or_id: str) -> str:
|
||||
if len(url_or_id) == 14:
|
||||
def regex_search(pattern: str, string: str, group: int):
|
||||
"""Shortcut method to search a string for a given pattern.
|
||||
:param str pattern:
|
||||
A regular expression pattern.
|
||||
:param str string:
|
||||
A target string to search.
|
||||
:param int group:
|
||||
Index of group to return.
|
||||
:rtype:
|
||||
str or tuple
|
||||
:returns:
|
||||
Substring pattern matches.
|
||||
"""
|
||||
regex = re.compile(pattern)
|
||||
results = regex.search(string)
|
||||
if not results:
|
||||
return False
|
||||
|
||||
return results.group(group)
|
||||
|
||||
|
||||
def get_yt_video_id(url: str) -> str:
|
||||
if len(url) <= 14:
|
||||
return url
|
||||
|
||||
if not url.startswith('http'):
|
||||
url = 'http://' + url
|
||||
|
||||
query = urlparse(url)
|
||||
|
||||
try:
|
||||
if 'youtube' in query.hostname:
|
||||
if query.path == '/watch':
|
||||
return parse_qs(query.query)['v'][0]
|
||||
elif query.path.startswith(('/embed/', '/v/')):
|
||||
return query.path.split('/')[2]
|
||||
elif 'youtu.be' in query.hostname:
|
||||
return query.path[1:]
|
||||
except:
|
||||
return ''
|
||||
|
||||
return ''
|
||||
"""Extract the ``video_id`` from a YouTube url.
|
||||
This function supports the following patterns:
|
||||
- :samp:`https://youtube.com/watch?v={video_id}`
|
||||
- :samp:`https://youtube.com/embed/{video_id}`
|
||||
- :samp:`https://youtu.be/{video_id}`
|
||||
:param str url:
|
||||
A YouTube url containing a video id.
|
||||
:rtype: str
|
||||
:returns:
|
||||
YouTube video id.
|
||||
"""
|
||||
return regex_search(r"(?:v=|\/)([0-9A-Za-z_-]{11}).*", url, group=1)
|
||||
|
||||
@ -33,10 +33,12 @@
|
||||
<i class="fa fa-sort icon-left"></i>
|
||||
</a>
|
||||
{% set icon_type = 'globe' %}
|
||||
{% if slide.type == 'video' %}
|
||||
{% set icon_type = 'video' %}
|
||||
{% elif slide.type == 'picture' %}
|
||||
{% if slide.type == enum_slide_type.VIDEO %}
|
||||
{% set icon_type = 'film' %}
|
||||
{% elif slide.type == enum_slide_type.PICTURE %}
|
||||
{% set icon_type = 'image' %}
|
||||
{% elif slide.type == enum_slide_type.YOUTUBE %}
|
||||
{% set icon_type = 'video' %}
|
||||
{% endif %}
|
||||
|
||||
<i class="fa fa-{{ icon_type }} icon-left"></i>
|
||||
@ -79,15 +81,21 @@
|
||||
<a href="javascript:void(0);" class="item-edit slide-edit">
|
||||
<i class="fa fa-pencil"></i>
|
||||
</a>
|
||||
{% if not fleet_mode or not slide.has_file() %}
|
||||
<a href="{{ slide.location }}" class="item-download slide-download" target="_blank">
|
||||
<i class="fa fa-eye"></i>
|
||||
</a>
|
||||
{% elif var_external_url.value|length > 0 %}
|
||||
<a href="{{ var_external_url.value }}/{{ slide.location }}" class="item-download slide-download" target="_blank">
|
||||
<i class="fa fa-eye"></i>
|
||||
</a>
|
||||
|
||||
{% set location = slide.location %}
|
||||
|
||||
{% if var_external_url.as_string().strip()|length > 0 and slide.has_file() %}
|
||||
{% set location = var_external_url.value ~ '/' ~ slide.location %}
|
||||
{% endif %}
|
||||
|
||||
{% if slide.type == enum_slide_type.YOUTUBE %}
|
||||
{% set location = 'https://www.youtube.com/watch?v=' ~ slide.location %}
|
||||
{% endif %}
|
||||
|
||||
<a href="{{ location }}" class="item-download slide-download" target="_blank">
|
||||
<i class="fa fa-eye"></i>
|
||||
</a>
|
||||
|
||||
<a href="javascript:void(0);" class="item-delete slide-delete">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user