Repository: ytdl-org/youtube-dl

Issue:
Add download video website: https://charlierose.com/videos/27996
Add download video website: https://charlierose.com/videos/27996

There's nothing download video tool can download video from https://charlierose.com/videos/27996, 
and many users need it . Pls add it .

Thanks a lot.



Discussion:
Meanwhile it can be downloaded with this URL https://charlierose.com/video/player/27996?autoplay=false.

```
PS D:\> .\youtube-dl.exe https://charlierose.com/video/player/27996?autoplay=false
[generic] 27996?autoplay=false: Requesting header
WARNING: Falling back on generic information extractor.
[generic] 27996?autoplay=false: Downloading webpage
[generic] 27996?autoplay=false: Extracting information
[generic] 1HYMMFI_003-v1: Downloading m3u8 information
ERROR: Failed to download m3u8 information: <urlopen error EOF occurred in violation of protocol (_ssl.c:600)> (caused by URL
Error(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:600)'),))
```

@dstftw 

oh I know . 

it correct url is https://charlierose.com/video/player/27996 
it has no " ?autoplay=false "

Thank @dstftw so much !

but Why is this ? What is this ? What are youtube-dl doing ?
@dstftw @yan12125 

```
PS D:\> .\youtube-dl.exe https://charlierose.com/video/player/23983
[generic] 23983: Requesting header
WARNING: Falling back on generic information extractor.
[generic] 23983: Downloading webpage
[generic] 23983: Extracting information
[generic] 1HYLJWP_001-v1: Downloading m3u8 information
[download] Destination: Tim Cook, Pt. 4 - Charlie Rose-1HYLJWP_001-v1.mp4
ffmpeg version N-81045-g450cf40 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enabl
e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable
-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-lib
twolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --
enable-lzma --enable-decklink --enable-zlib
  libavutil      55. 28.100 / 55. 28.100
  libavcodec     57. 50.100 / 57. 50.100
  libavformat    57. 42.100 / 57. 42.100
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 47.100 /  6. 47.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
[tls @ 000000000269ee80] Failed to read handshake response
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 00000000026bbfe0] Failed to read handshake response
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
Input #0, hls,applehttp, from 'https://pfm1hyus01-vh.akamaihd.net/i/LJW/P/1HYLJWP_001_xp.f4v/index_0_av.m3u8':
  Duration: 00:22:03.33, start: 20.101000, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 768x432 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 32000 Hz, stereo, fltp, 63 kb/s
[mp4 @ 00000000034e88a0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
    Last message repeated 1 times
Output #0, mp4, to 'file:Tim Cook, Pt. 4 - Charlie Rose-1HYLJWP_001-v1.mp4.part':
  Metadata:
    encoder         : Lavf57.42.100
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 768x432 [SAR 1:1 DAR 16:9], q=2-31, 29.97 fps, 29.97 tbr, 90k tbn, 90k tbc
    Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 32000 Hz, stereo, 63 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[tls @ 0000000002736260] Failed to read handshake response0 bitrate=1801.5kbits/s speed=1.21x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response4 bitrate=1657.1kbits/s speed=0.754x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response8 bitrate=1465.5kbits/s speed=0.63x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response5 bitrate=1539.3kbits/s speed=0.489x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response2 bitrate=1511.5kbits/s speed=0.482x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response3 bitrate=1499.9kbits/s speed=0.485x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 00.1kbits/s speed=0.464x
[tls @ 0000000003462f00] Failed to read handshake response
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response1 bitrate=1446.5kbits/s speed=0.473x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response8 bitrate=1444.7kbits/s speed=0.468x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response0 bitrate=1428.3kbits/s speed=0.483x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response8 bitrate=1428.8kbits/s speed=0.489x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response6 bitrate=1458.4kbits/s speed=0.51x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response4 bitrate=1477.3kbits/s speed=0.41x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response1 bitrate=1455.3kbits/s speed=0.383x
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
[tls @ 0000000003462f00] Failed to read handshake response
[hls,applehttp @ 00000000026927e0] Failed to open segment of playlist 0
frame=14712 fps=8.3 q=-1.0 size=  117510kB time=00:11:20.99 bitrate=1413.6kbits/s speed=0.386x
```

The video does not obey standards, so there are warnings. Those are just warnings and shouldn't affect the result.

Thanks answered.

Could you download this video by `youtube-dl https://charlierose.com/video/player/23983` ? 

Mine is waiting .

I don't have my laptop now so I can't try, sorry.

not right now. when you get a laptop. I'm waiting. thanks

Yeah, works perfectly fine! At the end ffmpeg sais:
[ffmpeg] Downloaded 326326896 bytes
[download] 100% of 311.21MiB

Just keep in mind that since it's HLS-Protocol you need to also specify --ffmpeg-location like this: `--ffmpeg-location "C:\PathToYourFFMPEG-bin"`

Or use native hls with `--hls-prefer-native`.


Resolving patch:
diff --git a/youtube_dl/extractor/charlierose.py b/youtube_dl/extractor/charlierose.py
new file mode 100644
--- /dev/null
+++ b/youtube_dl/extractor/charlierose.py
@@ -0,0 +1,45 @@
+from __future__ import unicode_literals
+
+from .common import InfoExtractor
+from ..utils import remove_end
+
+
+class CharlieRoseIE(InfoExtractor):
+    _VALID_URL = r'https?://(?:www\.)?charlierose\.com/video(?:s|/player)/(?P<id>\d+)'
+    _TEST = {
+        'url': 'https://charlierose.com/videos/27996',
+        'info_dict': {
+            'id': '27996',
+            'ext': 'mp4',
+            'title': 'Remembering Zaha Hadid',
+            'thumbnail': 're:^https?://.*\.jpg\?\d+',
+            'description': 'We revisit past conversations with Zaha Hadid, in memory of the world renowned Iraqi architect.',
+        },
+        'params': {
+            # m3u8 download
+            'skip_download': True,
+        }
+    }
+
+    _PLAYER_BASE = 'https://charlierose.com/video/player/%s'
+
+    def _real_extract(self, url):
+        video_id = self._match_id(url)
+        webpage = self._download_webpage(self._PLAYER_BASE % video_id, video_id)
+
+        title = remove_end(self._og_search_title(webpage), ' - Charlie Rose')
+
+        entries = self._parse_html5_media_entries(self._PLAYER_BASE % video_id, webpage, video_id)[0]
+        formats = entries['formats']
+
+        self._sort_formats(formats)
+        self._remove_duplicate_formats(formats)
+
+        return {
+            'id': video_id,
+            'title': title,
+            'formats': formats,
+            'thumbnail': self._og_search_thumbnail(webpage),
+            'description': self._og_search_description(webpage),
+            'subtitles': entries.get('subtitles'),
+        }
diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py
--- a/youtube_dl/extractor/extractors.py
+++ b/youtube_dl/extractor/extractors.py
@@ -134,6 +134,7 @@
 from .cda import CDAIE
 from .ceskatelevize import CeskaTelevizeIE
 from .channel9 import Channel9IE
+from .charlierose import CharlieRoseIE
 from .chaturbate import ChaturbateIE
 from .chilloutzone import ChilloutzoneIE
 from .chirbit import (


Test patch: