From cf13c3e6c409e4b7e28a14850f78ef4b30fc5ea1 Mon Sep 17 00:00:00 2001 From: El Mau Date: Sun, 9 Apr 2023 21:43:36 -0600 Subject: [PATCH 1/3] Fix #11 --- source/main/models.py | 69 +++++++++++++++++++++----------------- source/mauflix/settings.py | 7 ++++ 2 files changed, 45 insertions(+), 31 deletions(-) diff --git a/source/main/models.py b/source/main/models.py index 231063f..2842ca7 100644 --- a/source/main/models.py +++ b/source/main/models.py @@ -275,27 +275,27 @@ class MovieQuerySet(models.QuerySet): OJO: hay más variantes de Tarahumara y de Mixteco """ langs = { - "spa": {"iso639_1": "es", "label": "Español"}, - "eng": {"iso639_1": "en", "label": "Inglés"}, - "fra": {"iso639_1": "fr", "label": "Francés"}, - "por": {"iso639_1": "pt", "label": "Portugués"}, - "rum": {"iso639_1": "ro", "label": "Rumano"}, - "cat": {"iso639_1": "ca", "label": "Catalán"}, - "glg": {"iso639_1": "gl", "label": "Gallego"}, - "grn": {"iso639_1": "gn", "label": "Guaraní"}, - "gug": {"iso639_1": "gn", "label": "Guaraní"}, - "nah": {"iso639_1": "!!", "label": "Náhuatl"}, - "myn": {"iso639_1": "!!", "label": "Maya"}, - "zap": {"iso639_1": "!!", "label": "Zapoteco"}, - "oto": {"iso639_1": "!!", "label": "Otomí"}, - "tar": {"iso639_1": "!!", "label": "Tarahumara"}, - "mix": {"iso639_1": "!!", "label": "Mixteco"}, - "apa": {"iso639_1": "!!", "label": "Apache"}, - "rus": {"iso639_1": "ru", "label": "Ruso"}, - "deu": {"iso639_1": "de", "label": "Alemán"}, - "ger": {"iso639_1": "de", "label": "Alemán"}, - "chi": {"iso639_1": "zh", "label": "Chino"}, - "zho": {"iso639_1": "zh", "label": "Chino"}, + "spa": {"iso639_1": "es", "label": "Español"}, + "eng": {"iso639_1": "en", "label": "Inglés"}, + "fra": {"iso639_1": "fr", "label": "Francés"}, + "por": {"iso639_1": "pt", "label": "Portugués"}, + # ~ "rum": {"iso639_1": "ro", "label": "Rumano"}, + # ~ "cat": {"iso639_1": "ca", "label": "Catalán"}, + # ~ "glg": {"iso639_1": "gl", "label": "Gallego"}, + # ~ "grn": {"iso639_1": "gn", "label": "Guaraní"}, + # ~ "gug": {"iso639_1": "gn", "label": "Guaraní"}, + # ~ "nah": {"iso639_1": "!!", "label": "Náhuatl"}, + # ~ "myn": {"iso639_1": "!!", "label": "Maya"}, + # ~ "zap": {"iso639_1": "!!", "label": "Zapoteco"}, + # ~ "oto": {"iso639_1": "!!", "label": "Otomí"}, + # ~ "tar": {"iso639_1": "!!", "label": "Tarahumara"}, + # ~ "mix": {"iso639_1": "!!", "label": "Mixteco"}, + # ~ "apa": {"iso639_1": "!!", "label": "Apache"}, + # ~ "rus": {"iso639_1": "ru", "label": "Ruso"}, + # ~ "deu": {"iso639_1": "de", "label": "Alemán"}, + # ~ "ger": {"iso639_1": "de", "label": "Alemán"}, + # ~ "chi": {"iso639_1": "zh", "label": "Chino"}, + # ~ "zho": {"iso639_1": "zh", "label": "Chino"}, } if key in langs: lang = langs[key] @@ -309,17 +309,24 @@ class MovieQuerySet(models.QuerySet): TODO: en la restructuración de la DB no debería hacer requests. """ - file = self._fix_path_movie(Movie.objects.get(pk=id).file_name) - file = Path(re.sub(r"^https?://", "", file)) - page = requests.get(f"https://{file.parent}").text - soup = BeautifulSoup(page, 'html.parser') + file_name = Movie.objects.get(pk=id).file_name + if not file_name: + return [] + + letter = file_name[0].upper() + if letter.isdigit(): + letter = "0" + + url_base = f"{settings.URL_CDN}/{letter}" + base_name = Path(file_name).stem + subs = [] - for node in soup.find_all("a"): - if node.get("href").endswith("vtt"): - url = node.get("href") - lang = self.get_sub_lang(Path(url).suffixes[0][1:]) - lang["path"] = "https://" + str(file.parent / url) - subs.append(lang) + for k, v in settings.LANG_SUBTITLES.items(): + url_sub = f'{url_base}/{base_name}.{k}.vtt' + response = requests.get(url_sub) + if response.status_code==200: + subs.append(v) + return subs def get_wiki(self, movie, again=True): diff --git a/source/mauflix/settings.py b/source/mauflix/settings.py index b2a6cfc..9461f17 100644 --- a/source/mauflix/settings.py +++ b/source/mauflix/settings.py @@ -146,3 +146,10 @@ SESSION_EXPIRE_AT_BROWSER_CLOSE = True SESSION_COOKIE_AGE = 3600 URL_MASTODON = "https://mstdn.mx/" + +LANG_SUBTITLES = { + "spa": {"iso639_1": "es", "label": "Español", "suffix": "spa"}, + "eng": {"iso639_1": "en", "label": "Inglés", "suffix": "eng"}, + "fra": {"iso639_1": "fr", "label": "Francés", "suffix": "fra"}, + "por": {"iso639_1": "pt", "label": "Portugués", "suffix": "por"}, +} \ No newline at end of file From 4377b315d1d578bb7bda0ab7c16b220b07a12374 Mon Sep 17 00:00:00 2001 From: El Mau Date: Sun, 9 Apr 2023 22:10:04 -0600 Subject: [PATCH 2/3] Fix #11 --- source/main/models.py | 40 +++++++++++++++++++------------------- source/mauflix/settings.py | 1 + 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/source/main/models.py b/source/main/models.py index 2842ca7..43c52ef 100644 --- a/source/main/models.py +++ b/source/main/models.py @@ -265,20 +265,20 @@ class MovieQuerySet(models.QuerySet): else: return f"{num}{sym}" - def get_sub_lang(self, key): - """ - Obtiene los lenguajes de los subtítulos en diversas nomenclaturas. + # ~ def get_sub_lang(self, key): + # ~ """ + # ~ Obtiene los lenguajes de los subtítulos en diversas nomenclaturas. - La llave está en ISO-639-2 o ISO-639-3. - Cfr. https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes - https://en.wikipedia.org/wiki/ISO_639-2 - OJO: hay más variantes de Tarahumara y de Mixteco - """ - langs = { - "spa": {"iso639_1": "es", "label": "Español"}, - "eng": {"iso639_1": "en", "label": "Inglés"}, - "fra": {"iso639_1": "fr", "label": "Francés"}, - "por": {"iso639_1": "pt", "label": "Portugués"}, + # ~ La llave está en ISO-639-2 o ISO-639-3. + # ~ Cfr. https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes + # ~ https://en.wikipedia.org/wiki/ISO_639-2 + # ~ OJO: hay más variantes de Tarahumara y de Mixteco + # ~ """ + # ~ langs = { + # ~ "spa": {"iso639_1": "es", "label": "Español"}, + # ~ "eng": {"iso639_1": "en", "label": "Inglés"}, + # ~ "fra": {"iso639_1": "fr", "label": "Francés"}, + # ~ "por": {"iso639_1": "pt", "label": "Portugués"}, # ~ "rum": {"iso639_1": "ro", "label": "Rumano"}, # ~ "cat": {"iso639_1": "ca", "label": "Catalán"}, # ~ "glg": {"iso639_1": "gl", "label": "Gallego"}, @@ -296,12 +296,12 @@ class MovieQuerySet(models.QuerySet): # ~ "ger": {"iso639_1": "de", "label": "Alemán"}, # ~ "chi": {"iso639_1": "zh", "label": "Chino"}, # ~ "zho": {"iso639_1": "zh", "label": "Chino"}, - } - if key in langs: - lang = langs[key] - lang["suffix"] = key - return lang - return {"suffix": key, "iso639_1": "!!", "label": key} + # ~ } + # ~ if key in langs: + # ~ lang = langs[key] + # ~ lang["suffix"] = key + # ~ return lang + # ~ return {"suffix": key, "iso639_1": "!!", "label": key} def get_subs(self, id): """ @@ -322,7 +322,7 @@ class MovieQuerySet(models.QuerySet): subs = [] for k, v in settings.LANG_SUBTITLES.items(): - url_sub = f'{url_base}/{base_name}.{k}.vtt' + url_sub = f'{settings.URL_BASE}{url_base}/{base_name}.{k}.vtt' response = requests.get(url_sub) if response.status_code==200: subs.append(v) diff --git a/source/mauflix/settings.py b/source/mauflix/settings.py index 9461f17..e389803 100644 --- a/source/mauflix/settings.py +++ b/source/mauflix/settings.py @@ -21,6 +21,7 @@ from .conf import ( TOKEN_TELEGRAM, CHAT_ID, API_TOKEN, + URL_BASE, URL_CDN, URL_DEBUG, ) From 19775e1ed77c15790b847cbbd557109361862ac1 Mon Sep 17 00:00:00 2001 From: El Mau Date: Sun, 9 Apr 2023 22:17:23 -0600 Subject: [PATCH 3/3] Fix #11 --- source/main/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/source/main/models.py b/source/main/models.py index 43c52ef..be3c4b5 100644 --- a/source/main/models.py +++ b/source/main/models.py @@ -325,6 +325,7 @@ class MovieQuerySet(models.QuerySet): url_sub = f'{settings.URL_BASE}{url_base}/{base_name}.{k}.vtt' response = requests.get(url_sub) if response.status_code==200: + v['path'] = url_sub subs.append(v) return subs