prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  [https://www.franceinter.fr] WARNING: unable to extract upload date
  ---
  
  ### Make sure you are using the *latest* version: run `youtube-dl --version` and ensure your version is *2017.12.14*. If it's not, read [this FAQ entry](https://github.com/rg3/youtube-dl/blob/master/README.md#how-do-i-update-youtube-dl) and update. Issues with outdated version will be rejected.
  - [x] I've **verified** and **I assure** that I'm running youtube-dl **2017.12.14**
  
  ### Before submitting an *issue* make sure you have:
  - [x] At least skimmed through the [README](https://github.com/rg3/youtube-dl/blob/master/README.md), **most notably** the [FAQ](https://github.com/rg3/youtube-dl#faq) and [BUGS](https://github.com/rg3/youtube-dl#bugs) sections
  - [x] [Searched](https://github.com/rg3/youtube-dl/search?type=Issues) the bugtracker for similar issues including closed ones
  
  ### What is the purpose of your *issue*?
  - [ ] Bug report (encountered problems with youtube-dl)
  - [x] Site support request (request for adding support for a new site)
  - [ ] Feature request (request for a new functionality)
  - [ ] Question
  - [ ] Other
  
  ---
  
  ``` 
  youtube-dl-mp3 "https://www.franceinter.fr/emissions/les-concerts-d-inter/les-concerts-d-inter-14-decembre-2017"
  [FranceInter] les-concerts-d-inter/les-concerts-d-inter-14-decembre-2017: Downloading webpage
  WARNING: unable to extract upload date; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  ```
  
  ```
  [debug] System config: []
  [debug] User config: []
  [debug] Custom config: []
  [debug] Command-line args: [u'-v']
  [debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
  [debug] youtube-dl version 2017.12.14
  [debug] Python version 2.7.12 - Linux-4.4.0-103-generic-x86_64-with-Ubuntu-16.04-xenial
  [debug] exe versions: avconv 2.8.11-0ubuntu0.16.04.1, avprobe 2.8.11-0ubuntu0.16.04.1, ffmpeg 2.8.11-0ubuntu0.16.04.1, ffprobe 2.8.11-0ubuntu0.16.04.1
  [debug] Proxy map: {}
  ```
  
  </issue>
  <code>
  [start of 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 month_by_name
  6 
  7 
  8 class FranceInterIE(InfoExtractor):
  9     _VALID_URL = r'https?://(?:www\.)?franceinter\.fr/emissions/(?P<id>[^?#]+)'
  10 
  11     _TEST = {
  12         'url': 'https://www.franceinter.fr/emissions/affaires-sensibles/affaires-sensibles-07-septembre-2016',
  13         'md5': '9e54d7bdb6fdc02a841007f8a975c094',
  14         'info_dict': {
  15             'id': 'affaires-sensibles/affaires-sensibles-07-septembre-2016',
  16             'ext': 'mp3',
  17             'title': 'Affaire Cahuzac : le contentieux du compte en Suisse',
  18             'description': 'md5:401969c5d318c061f86bda1fa359292b',
  19             'upload_date': '20160907',
  20         },
  21     }
  22 
  23     def _real_extract(self, url):
  24         video_id = self._match_id(url)
  25 
  26         webpage = self._download_webpage(url, video_id)
  27 
  28         video_url = self._search_regex(
  29             r'(?s)<div[^>]+class=["\']page-diffusion["\'][^>]*>.*?<button[^>]+data-url=(["\'])(?P<url>(?:(?!\1).)+)\1',
  30             webpage, 'video url', group='url')
  31 
  32         title = self._og_search_title(webpage)
  33         description = self._og_search_description(webpage)
  34 
  35         upload_date_str = self._search_regex(
  36             r'class=["\']cover-emission-period["\'][^>]*>[^<]+\s+(\d{1,2}\s+[^\s]+\s+\d{4})<',
  37             webpage, 'upload date', fatal=False)
  38         if upload_date_str:
  39             upload_date_list = upload_date_str.split()
  40             upload_date_list.reverse()
  41             upload_date_list[1] = '%02d' % (month_by_name(upload_date_list[1], lang='fr') or 0)
  42             upload_date_list[2] = '%02d' % int(upload_date_list[2])
  43             upload_date = ''.join(upload_date_list)
  44         else:
  45             upload_date = None
  46 
  47         return {
  48             'id': video_id,
  49             'title': title,
  50             'description': description,
  51             'upload_date': upload_date,
  52             'formats': [{
  53                 'url': video_url,
  54                 'vcodec': 'none',
  55             }],
  56         }
  57
  [end of youtube_dl/extractor/franceinter.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/youtube_dl/extractor/franceinter.py b/youtube_dl/extractor/franceinter.py
  --- a/youtube_dl/extractor/franceinter.py
  +++ b/youtube_dl/extractor/franceinter.py
  @@ -33,7 +33,7 @@
           description = self._og_search_description(webpage)
   
           upload_date_str = self._search_regex(
  -            r'class=["\']cover-emission-period["\'][^>]*>[^<]+\s+(\d{1,2}\s+[^\s]+\s+\d{4})<',
  +            r'class=["\']\s*cover-emission-period\s*["\'][^>]*>[^<]+\s+(\d{1,2}\s+[^\s]+\s+\d{4})<',
               webpage, 'upload date', fatal=False)
           if upload_date_str:
               upload_date_list = upload_date_str.split()
  
verification_info: {"golden_diff": "diff --git a/youtube_dl/extractor/franceinter.py b/youtube_dl/extractor/franceinter.py\n--- a/youtube_dl/extractor/franceinter.py\n+++ b/youtube_dl/extractor/franceinter.py\n@@ -33,7 +33,7 @@\n         description = self._og_search_description(webpage)\n \n         upload_date_str = self._search_regex(\n-            r'class=[\"\\']cover-emission-period[\"\\'][^>]*>[^<]+\\s+(\\d{1,2}\\s+[^\\s]+\\s+\\d{4})<',\n+            r'class=[\"\\']\\s*cover-emission-period\\s*[\"\\'][^>]*>[^<]+\\s+(\\d{1,2}\\s+[^\\s]+\\s+\\d{4})<',\n             webpage, 'upload date', fatal=False)\n         if upload_date_str:\n             upload_date_list = upload_date_str.split()\n", "issue": "[https://www.franceinter.fr] WARNING: unable to extract upload date\n---\r\n\r\n### Make sure you are using the *latest* version: run `youtube-dl --version` and ensure your version is *2017.12.14*. If it's not, read [this FAQ entry](https://github.com/rg3/youtube-dl/blob/master/README.md#how-do-i-update-youtube-dl) and update. Issues with outdated version will be rejected.\r\n- [x] I've **verified** and **I assure** that I'm running youtube-dl **2017.12.14**\r\n\r\n### Before submitting an *issue* make sure you have:\r\n- [x] At least skimmed through the [README](https://github.com/rg3/youtube-dl/blob/master/README.md), **most notably** the [FAQ](https://github.com/rg3/youtube-dl#faq) and [BUGS](https://github.com/rg3/youtube-dl#bugs) sections\r\n- [x] [Searched](https://github.com/rg3/youtube-dl/search?type=Issues) the bugtracker for similar issues including closed ones\r\n\r\n### What is the purpose of your *issue*?\r\n- [ ] Bug report (encountered problems with youtube-dl)\r\n- [x] Site support request (request for adding support for a new site)\r\n- [ ] Feature request (request for a new functionality)\r\n- [ ] Question\r\n- [ ] Other\r\n\r\n---\r\n\r\n``` \r\nyoutube-dl-mp3 \"https://www.franceinter.fr/emissions/les-concerts-d-inter/les-concerts-d-inter-14-decembre-2017\"\r\n[FranceInter] les-concerts-d-inter/les-concerts-d-inter-14-decembre-2017: Downloading webpage\r\nWARNING: unable to extract upload date; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.\r\n```\r\n\r\n```\r\n[debug] System config: []\r\n[debug] User config: []\r\n[debug] Custom config: []\r\n[debug] Command-line args: [u'-v']\r\n[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8\r\n[debug] youtube-dl version 2017.12.14\r\n[debug] Python version 2.7.12 - Linux-4.4.0-103-generic-x86_64-with-Ubuntu-16.04-xenial\r\n[debug] exe versions: avconv 2.8.11-0ubuntu0.16.04.1, avprobe 2.8.11-0ubuntu0.16.04.1, ffmpeg 2.8.11-0ubuntu0.16.04.1, ffprobe 2.8.11-0ubuntu0.16.04.1\r\n[debug] Proxy map: {}\r\n```\n", "before_files": [{"content": "# coding: utf-8\nfrom __future__ import unicode_literals\n\nfrom .common import InfoExtractor\nfrom ..utils import month_by_name\n\n\nclass FranceInterIE(InfoExtractor):\n    _VALID_URL = r'https?://(?:www\\.)?franceinter\\.fr/emissions/(?P<id>[^?#]+)'\n\n    _TEST = {\n        'url': 'https://www.franceinter.fr/emissions/affaires-sensibles/affaires-sensibles-07-septembre-2016',\n        'md5': '9e54d7bdb6fdc02a841007f8a975c094',\n        'info_dict': {\n            'id': 'affaires-sensibles/affaires-sensibles-07-septembre-2016',\n            'ext': 'mp3',\n            'title': 'Affaire Cahuzac : le contentieux du compte en Suisse',\n            'description': 'md5:401969c5d318c061f86bda1fa359292b',\n            'upload_date': '20160907',\n        },\n    }\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n\n        webpage = self._download_webpage(url, video_id)\n\n        video_url = self._search_regex(\n            r'(?s)<div[^>]+class=[\"\\']page-diffusion[\"\\'][^>]*>.*?<button[^>]+data-url=([\"\\'])(?P<url>(?:(?!\\1).)+)\\1',\n            webpage, 'video url', group='url')\n\n        title = self._og_search_title(webpage)\n        description = self._og_search_description(webpage)\n\n        upload_date_str = self._search_regex(\n            r'class=[\"\\']cover-emission-period[\"\\'][^>]*>[^<]+\\s+(\\d{1,2}\\s+[^\\s]+\\s+\\d{4})<',\n            webpage, 'upload date', fatal=False)\n        if upload_date_str:\n            upload_date_list = upload_date_str.split()\n            upload_date_list.reverse()\n            upload_date_list[1] = '%02d' % (month_by_name(upload_date_list[1], lang='fr') or 0)\n            upload_date_list[2] = '%02d' % int(upload_date_list[2])\n            upload_date = ''.join(upload_date_list)\n        else:\n            upload_date = None\n\n        return {\n            'id': video_id,\n            'title': title,\n            'description': description,\n            'upload_date': upload_date,\n            'formats': [{\n                'url': video_url,\n                'vcodec': 'none',\n            }],\n        }\n", "path": "youtube_dl/extractor/franceinter.py"}]}