diff --git a/youtube_dl/extractor/lemonde.py b/youtube_dl/extractor/lemonde.py index 3306892e8..ef2d0b824 100644 --- a/youtube_dl/extractor/lemonde.py +++ b/youtube_dl/extractor/lemonde.py @@ -1,58 +1,62 @@ +# coding: utf-8 + 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)) - + 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') - return self.url_result(url, 'Generic') + mobj = re.search(r'data-id="(?P.+)" data-provider="(?P[^ ]+)"', webpage) + video_id = mobj.group('id') if mobj else display_id + provider = mobj.group('provider') if mobj else "" + + embeded_url = self._PROVIDERS.get(provider, "{}").format(video_id) + + return self.url_result(embeded_url, video_id=video_id)