[utils,franceinter] Add french months' names and fix extraction
[youtube-dl] / youtube_dl / extractor / franceinter.py
1 # coding: utf-8
2 from __future__ import unicode_literals
3
4 from .common import InfoExtractor
5 from ..utils import (
6     unified_timestamp,
7     month_by_name,
8 )
9
10
11 class FranceInterIE(InfoExtractor):
12     _VALID_URL = r'https?://(?:www\.)?franceinter\.fr/emissions/(?P<id>[^?#]+)'
13
14     _TEST = {
15         'url': 'https://www.franceinter.fr/emissions/la-marche-de-l-histoire/la-marche-de-l-histoire-18-decembre-2013',
16         'md5': '4764932e466e6f6c79c317d2e74f6884',
17         'info_dict': {
18             'id': 'la-marche-de-l-histoire/la-marche-de-l-histoire-18-decembre-2013',
19             'ext': 'mp3',
20             'title': 'L’Histoire dans les jeux vidéo du 18 décembre 2013 - France Inter',
21             'description': 'L’Histoire dans les jeux vidéo du 18 décembre 2013  par Jean Lebrun en replay sur France Inter. Retrouvez l\'émission en réécoute gratuite et abonnez-vous au podcast !',
22             'timestamp': 1387324800,
23             'upload_date': '20131218',
24         },
25     }
26
27     def _real_extract(self, url):
28         video_id = self._match_id(url)
29
30         webpage = self._download_webpage(url, video_id)
31
32         video_url = self._search_regex(
33             r'<button class="replay-button playable" data-is-aod="1" data-url="([^"]+)"', webpage, 'video url')
34
35         title = self._og_search_title(webpage)
36         description = self._og_search_description(webpage)
37
38         extractdate = self._search_regex('(\d{2}-([a-zA-Z\s]+)-\d{4}$)', url, 'extractdate', fatal=False)
39         extractdate = extractdate.split('-')
40         extractdate = extractdate[2] + "," + str(month_by_name(extractdate[1], 'fr')) + "," + extractdate[0]
41
42         timestamp = unified_timestamp(extractdate)
43
44         return {
45             'id': video_id,
46             'title': title,
47             'description': description,
48             'timestamp': timestamp,
49             'formats': [{
50                 'url': video_url,
51                 'vcodec': 'none',
52             }],
53         }