initial commit

This commit is contained in:
Frank de Lange 2022-02-13 14:05:30 +00:00
commit f59b9683f7
15 changed files with 1542 additions and 0 deletions

49
spodcast/utils.py Normal file
View file

@ -0,0 +1,49 @@
import re
import string
import unicodedata
from enum import Enum
from typing import List, Tuple
from .spodcast import Spodcast
valid_filename_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
def regex_input_for_urls(search_input) -> Tuple[str, str, str, str, str, str]:
episode_uri_search = re.search(
r'^spotify:episode:(?P<EpisodeID>[0-9a-zA-Z]{22})$', search_input)
episode_url_search = re.search(
r'^(https?://)?open\.spotify\.com/episode/(?P<EpisodeID>[0-9a-zA-Z]{22})(\?si=.+?)?$',
search_input,
)
show_uri_search = re.search(
r'^spotify:show:(?P<ShowID>[0-9a-zA-Z]{22})$', search_input)
show_url_search = re.search(
r'^(https?://)?open\.spotify\.com/show/(?P<ShowID>[0-9a-zA-Z]{22})(\?si=.+?)?$',
search_input,
)
if episode_uri_search is not None or episode_url_search is not None:
episode_id_str = (episode_uri_search
if episode_uri_search is not None else
episode_url_search).group('EpisodeID')
else:
episode_id_str = None
if show_uri_search is not None or show_url_search is not None:
show_id_str = (show_uri_search
if show_uri_search is not None else
show_url_search).group('ShowID')
else:
show_id_str = None
return episode_id_str, show_id_str
def clean_filename(filename, whitelist=valid_filename_chars, replace=' '):
for r in replace:
filename = filename.replace(r,'_')
cleaned_filename = unicodedata.normalize('NFKD', filename).encode('ASCII', 'ignore').decode()
cleaned_filename = ''.join(c for c in cleaned_filename if c in whitelist)
return cleaned_filename