From 02a64d2449126d146fc6a5277e6da20472d07d5a Mon Sep 17 00:00:00 2001 From: Lucas Date: Mon, 23 Dec 2019 00:26:09 +0100 Subject: [PATCH 1/3] Fix extractor, closes #22461 --- youtube_dl/extractor/lemonde.py | 68 +++++++++++++++++---------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/youtube_dl/extractor/lemonde.py b/youtube_dl/extractor/lemonde.py index 3306892e8..bc25a4673 100644 --- a/youtube_dl/extractor/lemonde.py +++ b/youtube_dl/extractor/lemonde.py @@ -1,58 +1,62 @@ from __future__ import unicode_literals from .common import InfoExtractor +from ..utils import ExtractorError +import re class LemondeIE(InfoExtractor): _VALID_URL = r'https?://(?:.+?\.)?lemonde\.fr/(?:[^/]+/)*(?P[^/]+)\.html' _TESTS = [{ + # Youtube embeded 'url': 'http://www.lemonde.fr/police-justice/video/2016/01/19/comprendre-l-affaire-bygmalion-en-cinq-minutes_4849702_1653578.html', - 'md5': 'da120c8722d8632eec6ced937536cc98', + 'md5': 'bf4645c22f7bde53a2a55cd2b089ee57', 'info_dict': { - 'id': 'lqm3kl', + 'id': 'tiv9ZFUrFj4', 'ext': 'mp4', - 'title': "Comprendre l'affaire Bygmalion en 5 minutes", + 'title': "L’affaire Bygmalion expliquée en\xa05\xa0minutes", 'thumbnail': r're:^https?://.*\.jpg', - 'duration': 309, - 'upload_date': '20160119', - 'timestamp': 1453194778, - 'uploader_id': '3pmkp', + 'duration': 296, + 'upload_date': '20181025', + 'uploader': 'Le Monde', + 'uploader_id': 'LeMonde', + 'description': 'Dans l’affaire Bygmalion, la justice a confirmé le renvoi en correctionnelle de Nicolas Sarkozy, jeudi 25 octobre. Dans la foulée, son avocat Thierry Herzog a annoncé que l’ancien président de la République allait former un pourvoi en cassation.\n\nLe 5 mars 2014, le parquet de Paris ouvrait une enquête préliminaire pour « faux », «abus de biens sociaux » et « abus de confiance » visant la société Bygmalion, soupçonnée d’être au centre d’un système de fausses factures. Grâce à elles, les responsables de Bygmalion et de sa filiale Event and Cie, ainsi que des membres de l’UMP — devenue Les Républicains en 2015 — et de l’équipe de campagne de Nicolas Sarkozy, auraient fait en sorte que les dépenses de campagne du candidat pour l’élection présidentielle de 2012 restent inférieures au plafond autorisé par la loi.\n\nQuatorze personnes, dont Guillaume Lambert, qui était le directeur de campagne de Nicolas Sarkozy, et Jérôme Lavrilleux, alors directeur adjoint de campagne, sont renvoyées en procès. Jean-François Copé, lui, a bénéficié d’un non-lieu et est définitivement blanchi.\n\nComment fonctionnait ce système de fausses factures ? Explications avec cette vidéo réalisée en janvier 2016.\n_______\n\nAbonnez-vous à la chaîne YouTube du Monde dès maintenant :\nhttp://www.youtube.com/subscription_center?add_user=LeMonde\n_______\n\nAbonnez-vous à la chaîne YouTube du Monde dès maintenant :\nhttp://www.youtube.com/subscription_center?add_user=LeMonde', }, }, { - # standard iframe embed + # Dailymotion embeded 'url': 'http://www.lemonde.fr/les-decodeurs/article/2016/10/18/tout-comprendre-du-ceta-le-petit-cousin-du-traite-transatlantique_5015920_4355770.html', 'info_dict': { - 'id': 'uzsxms', + 'id': 'x4yejm2', 'ext': 'mp4', - 'title': "CETA : quelles suites pour l'accord commercial entre l'Europe et le Canada ?", - 'thumbnail': r're:^https?://.*\.jpg', - 'duration': 325, + 'title': "CETA : quelles suites l'accord commercial entre l'Europe et le Canada ?", + 'duration': 326, 'upload_date': '20161021', - 'timestamp': 1477044540, - 'uploader_id': '3pmkp', - }, - 'params': { - 'skip_download': True, - }, - }, { - 'url': 'http://redaction.actu.lemonde.fr/societe/video/2016/01/18/calais-debut-des-travaux-de-defrichement-dans-la-jungle_4849233_3224.html', - 'only_matching': True, - }, { - # YouTube embeds - 'url': 'http://www.lemonde.fr/pixels/article/2016/12/09/pourquoi-pewdiepie-superstar-de-youtube-a-menace-de-fermer-sa-chaine_5046649_4408996.html', - 'only_matching': True, + 'timestamp': 1477044897, + 'uploader_id': 'x1wd0c', + 'uploader': 'Le Monde.fr', + 'description': 'CETA. 4 lettres pour Comprehensive Economic and Trade Agreement, ou Accord économique et commercial global). Un nom un peu barbare pour un traité transatlantique, cousin du Tafta, qui agite en ce moment l’actualité européenne.\xa0Pour comprendre les enjeux de cet accord commercial, notre spécialiste Maxime Vaudano.' + } }] + _PROVIDERS = { + "youtube": "https://www.youtube.com/embed/{}", + "dailymotion": "https://www.dailymotion.com/video/{}" + } + def _real_extract(self, url): display_id = self._match_id(url) - webpage = self._download_webpage(url, display_id) - digiteka_url = self._proto_relative_url(self._search_regex( - r'url\s*:\s*(["\'])(?P(?:https?://)?//(?:www\.)?(?:digiteka\.net|ultimedia\.com)/deliver/.+?)\1', - webpage, 'digiteka url', group='url', default=None)) + mobj = re.search(r'data-id="(?P.+)" data-provider="(?P[^ ]+)"', webpage) + video_id = mobj.group('id') + provider = mobj.group('provider') - if digiteka_url: - return self.url_result(digiteka_url, 'Digiteka') + if(provider not in self._PROVIDERS): + raise ExtractorError('Unsupported provider ' % provider) - return self.url_result(url, 'Generic') + embeded_url = self._PROVIDERS.get(provider, "").format(video_id) + + return { + '_type': 'url', + 'url': embeded_url + } From caffa836fdbf25818d7e1dc4e309c43df3b668e9 Mon Sep 17 00:00:00 2001 From: Lucas Date: Mon, 23 Dec 2019 15:56:03 +0100 Subject: [PATCH 2/3] Add coding for python 2 --- youtube_dl/extractor/lemonde.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/youtube_dl/extractor/lemonde.py b/youtube_dl/extractor/lemonde.py index bc25a4673..869e115b1 100644 --- a/youtube_dl/extractor/lemonde.py +++ b/youtube_dl/extractor/lemonde.py @@ -1,3 +1,5 @@ +# coding: utf-8 + from __future__ import unicode_literals from .common import InfoExtractor From b24df895ff665d23cd9ff47bb20d0229ca95f168 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 4 Jan 2020 17:06:20 +0100 Subject: [PATCH 3/3] pending-fixes --- youtube_dl/extractor/lemonde.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/youtube_dl/extractor/lemonde.py b/youtube_dl/extractor/lemonde.py index 869e115b1..ef2d0b824 100644 --- a/youtube_dl/extractor/lemonde.py +++ b/youtube_dl/extractor/lemonde.py @@ -49,16 +49,14 @@ class LemondeIE(InfoExtractor): display_id = self._match_id(url) webpage = self._download_webpage(url, display_id) + digiteka_url = self._proto_relative_url(self._search_regex(r'url\s*:\s*(["\'])(?P(?:https?://)?//(?:www\.)?(?:digiteka\.net|ultimedia\.com)/deliver/.+?)\1',webpage, 'digiteka url', group='url', default=None)) + if digiteka_url: + return self.url_result(digiteka_url, 'Digiteka') + mobj = re.search(r'data-id="(?P.+)" data-provider="(?P[^ ]+)"', webpage) - video_id = mobj.group('id') - provider = mobj.group('provider') + video_id = mobj.group('id') if mobj else display_id + provider = mobj.group('provider') if mobj else "" - if(provider not in self._PROVIDERS): - raise ExtractorError('Unsupported provider ' % provider) + embeded_url = self._PROVIDERS.get(provider, "{}").format(video_id) - embeded_url = self._PROVIDERS.get(provider, "").format(video_id) - - return { - '_type': 'url', - 'url': embeded_url - } + return self.url_result(embeded_url, video_id=video_id)