"YouTube Movies" cannot be downloaded #11954

Closed
opened 2026-02-21 05:09:38 -05:00 by deekerman · 2 comments
Owner

Originally created by @ghost on GitHub (Oct 10, 2017).

Please follow the guide below

  • You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
  • Put an x into all the boxes [ ] relevant to your issue (like this: [x])
  • Use the Preview tab to see what your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2017.10.07. If it's not, read this FAQ entry and update. Issues with outdated version will be rejected.

  • I've verified and I assure that I'm running youtube-dl 2017.10.07

Before submitting an issue make sure you have:

  • At least skimmed through the README, most notably the FAQ and BUGS sections
  • Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

  • Bug report (encountered problems with youtube-dl)
  • Site support request (request for adding support for a new site)
  • Feature request (request for a new functionality)
  • Question
  • Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue


If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:

Add the -v flag to your command line you run youtube-dl with (youtube-dl -v <your command line>), copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):

[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.10.07
[debug] Python version 2.7.12 - Linux-4.4.0-43-Microsoft-x86_64-with-Ubuntu-16.04-xenial
[debug] exe versions: ffmpeg N-87747-g123f6dc, ffprobe N-87747-g123f6dc
[debug] Proxy map: {}
Usage: youtube-dl [OPTIONS] URL [URL...]

youtube-dl: error: You must provide at least one URL.
...
<end of log>

Description of your issue, suggested solution and other information

If you go to https://www.youtube.com/watch?v=hH5jkaRT62w you should see a trailer for the movie [i]The Last Man on the Moon[/i]. If you purchase the movie, that same URL will take you to the actual movie instead of the trailer.

Even with 2FA disabled, you cannot download this movie.

Output:

xnaas@xnaasRZ:/mnt/d/mov$ youtube-dl --verbose -u "[REDACTED]" -v https://www.youtube.com/watch?v=hH5jkaRT62w
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'--verbose', u'-u', u'PRIVATE', u'-v', u'https://www.youtube.com/watch?v=hH5jkaRT62w']
Type account password and press [Return]:
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2017.10.07
[debug] Python version 2.7.12 - Linux-4.4.0-43-Microsoft-x86_64-with-Ubuntu-16.04-xenial
[debug] exe versions: ffmpeg N-87747-g123f6dc, ffprobe N-87747-g123f6dc
[debug] Proxy map: {}
[youtube] Downloading login page
[youtube] Looking up account info
[youtube] Logging in
[youtube] Checking cookie
[youtube] hH5jkaRT62w: Downloading webpage
[youtube] hH5jkaRT62w: Downloading video info webpage
[youtube] hH5jkaRT62w: Extracting video information
ERROR: This video is unavailable.
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/youtube_dl/YoutubeDL.py", line 784, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/lib/python2.7/dist-packages/youtube_dl/extractor/common.py", line 434, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/lib/python2.7/dist-packages/youtube_dl/extractor/youtube.py", line 1948, in _real_extract
    raise ExtractorError(unavailable_message, expected=True)
ExtractorError: This video is unavailable.

I've also tried passing cookies. Same exact deal.

I've read through a good few dozen issues on GitHub to no avail. I can't find anyone getting the same error.

Additionally, I tested YouTube Red content just to see if that works and it does without issue.

I take it there's either a lack of support for this or Google recently increased their ability to block downloads...either way, any thought on this from anyone?

Originally created by @ghost on GitHub (Oct 10, 2017). ## Please follow the guide below - You will be asked some questions and requested to provide some information, please read them **carefully** and answer honestly - Put an `x` into all the boxes [ ] relevant to your *issue* (like this: `[x]`) - Use the *Preview* tab to see what your issue will actually look like --- ### Make sure you are using the *latest* version: run `youtube-dl --version` and ensure your version is *2017.10.07*. 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.10.07** ### 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*? - [x] Bug report (encountered problems with youtube-dl) - [ ] Site support request (request for adding support for a new site) - [ ] Feature request (request for a new functionality) - [ ] Question - [ ] Other --- ### The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your *issue* --- ### If the purpose of this *issue* is a *bug report*, *site support request* or you are not completely sure provide the full verbose output as follows: Add the `-v` flag to **your command line** you run youtube-dl with (`youtube-dl -v <your command line>`), copy the **whole** output and insert it here. It should look similar to one below (replace it with **your** log inserted between triple ```): ``` [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.10.07 [debug] Python version 2.7.12 - Linux-4.4.0-43-Microsoft-x86_64-with-Ubuntu-16.04-xenial [debug] exe versions: ffmpeg N-87747-g123f6dc, ffprobe N-87747-g123f6dc [debug] Proxy map: {} Usage: youtube-dl [OPTIONS] URL [URL...] youtube-dl: error: You must provide at least one URL. ... <end of log> ``` --- ### Description of your *issue*, suggested solution and other information If you go to https://www.youtube.com/watch?v=hH5jkaRT62w you should see a trailer for the movie [i]The Last Man on the Moon[/i]. If you purchase the movie, that same URL will take you to the actual movie instead of the trailer. **Even with 2FA disabled**, you cannot download this movie. Output: ``` xnaas@xnaasRZ:/mnt/d/mov$ youtube-dl --verbose -u "[REDACTED]" -v https://www.youtube.com/watch?v=hH5jkaRT62w [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: [u'--verbose', u'-u', u'PRIVATE', u'-v', u'https://www.youtube.com/watch?v=hH5jkaRT62w'] Type account password and press [Return]: [debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8 [debug] youtube-dl version 2017.10.07 [debug] Python version 2.7.12 - Linux-4.4.0-43-Microsoft-x86_64-with-Ubuntu-16.04-xenial [debug] exe versions: ffmpeg N-87747-g123f6dc, ffprobe N-87747-g123f6dc [debug] Proxy map: {} [youtube] Downloading login page [youtube] Looking up account info [youtube] Logging in [youtube] Checking cookie [youtube] hH5jkaRT62w: Downloading webpage [youtube] hH5jkaRT62w: Downloading video info webpage [youtube] hH5jkaRT62w: Extracting video information ERROR: This video is unavailable. Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/youtube_dl/YoutubeDL.py", line 784, in extract_info ie_result = ie.extract(url) File "/usr/local/lib/python2.7/dist-packages/youtube_dl/extractor/common.py", line 434, in extract ie_result = self._real_extract(url) File "/usr/local/lib/python2.7/dist-packages/youtube_dl/extractor/youtube.py", line 1948, in _real_extract raise ExtractorError(unavailable_message, expected=True) ExtractorError: This video is unavailable. ``` I've also tried **passing cookies**. Same exact deal. I've read through a good few dozen issues on GitHub to no avail. I can't find anyone getting the same error. Additionally, I tested YouTube Red content just to see if that works and it does without issue. I take it there's either a lack of support for this or Google recently increased their ability to block downloads...either way, any thought on this from anyone?
Author
Owner

@beeradmoore commented on GitHub (Oct 12, 2017):

Am getting the same issue here. Tried to download this movie. Plays fine in browser so it shouldn't be region locked. When I use --cookies or -u and entering the password (TFA is disabled), the response is
ERROR: This video is unavailable.

Tried YT Red content, --cookies and -u method work.

When I try the first movie without any auth credentials it downloads the trailer.

A dump of some of the HTML from the movie that is failing at least shows where the error text is coming from, also noted over in this post.

...
</div><div id="masthead-positioner-height-offset"></div><div id="page-container"><div id="page" class="  watch        video-an7xvrFrQ7A clearfix"><div id="guide" class="yt-scrollbar">    <div id="appbar-guide-menu" class="appbar-menu appbar-guide-menu-layout appbar-guide-clickable-ancestor">
    <div id="guide-container">
      <div class="guide-module-content guide-module-loading">
          <p class="yt-spinner ">
        <span title="Loading icon" class="yt-spinner-img  yt-sprite"></span>

    <span class="yt-spinner-message">
Loading...
    </span>
  </p>

      </div>
    </div>
  </div>

</div><div class="alerts-wrapper"><div id="alerts" class="content-alignment">    
  <div id="editor-progress-alert-container"></div>
  <div class="yt-alert yt-alert-default yt-alert-warn hid " id="editor-progress-alert-template">  <div class="yt-alert-icon">
    <span class="icon master-sprite yt-sprite"></span>
  </div>
<div class="yt-alert-content" role="alert"></div><div class="yt-alert-buttons"><button class="yt-uix-button yt-uix-button-size-default yt-uix-button-close close yt-uix-close" type="button" onclick=";return false;" aria-label="Close" data-close-parent-class="yt-alert"><span class="yt-uix-button-content">Close</span></button></div></div>

    <div id="edit-confirmation-alert"></div>
  <div class="yt-alert yt-alert-actionable yt-alert-info hid " id="edit-confirmation-alert-template">  <div class="yt-alert-icon">
    <span class="icon master-sprite yt-sprite"></span>
  </div>
<div class="yt-alert-content" role="alert">    <div class="yt-alert-message" tabindex="0">
    </div>
</div><div class="yt-alert-buttons">  <button class="yt-uix-button yt-uix-button-size-default yt-uix-button-alert-info yt-uix-button-has-icon edit-confirmation-yes" type="button" onclick=";return false;"><span class="yt-uix-button-icon-wrapper"><span class="yt-uix-button-icon yt-uix-button-icon-watch-like-invert yt-sprite"></span></span><span class="yt-uix-button-content">Yeah, keep it</span></button>
  <button class="yt-uix-button yt-uix-button-size-default yt-uix-button-alert-info yt-uix-button-has-icon edit-confirmation-no" type="button" onclick=";return false;"><span class="yt-uix-button-icon-wrapper"><span class="yt-uix-button-icon yt-uix-button-icon-watch-unlike-invert yt-sprite"></span></span><span class="yt-uix-button-content">Undo</span></button>
<button class="yt-uix-button yt-uix-button-size-default yt-uix-button-close close yt-uix-close" type="button" onclick=";return false;" aria-label="Close" data-close-parent-class="yt-alert"><span class="yt-uix-button-content">Close</span></button></div></div>



</div></div><div id="header"></div><div id="player" class="  content-alignment       watch-small  " role="complementary"><div id="theater-background" class="player-height"></div>  <div id="player-mole-container">
    <div id="player-unavailable" class="    hid    player-width player-height    player-unavailable ">
              <img class="icon meh" src="/yts/img/pixel-vfl3z5WfW.gif" data-icon="/yts/img/meh7-vflGevej7.png" alt="">
  <div class="content">
    <h1 id="unavailable-message" class="message">
              This video is unavailable.

    </h1>
    <div id="unavailable-submessage" class="submessage">
    </div>
  </div>


    </div>

    <div id="player-api" class="player-width player-height off-screen-target player-api" tabIndex="-1"></div>
        <script >if (window.ytcsi) {window.ytcsi.tick("cfg", null, '');}</script>
    <script >var ytplayer = ytplayer || {};ytplayer.config = {"args":{"user_display_name":"REDACTED","user_age":"29","vmap":"\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003cvmap:VMAP xmlns:vmap=\"http:\/\/www.iab.net\/videosuite\/vmap\" xmlns:yt=\"http:\/\/youtube.com\" version=\"1.0\"\u003e\u003c\/vmap:VMAP\u003e","innertube_context_client_version":"1.20171011","ypc_license_checker_module":"1","innertube_api_version":"v1","iv3_module":"1",
...

EDIT: I had a quick look at the errors that the code is throwing, looks like its coming from here simply because that unavailable-message div exists. As you can see from the rest of the snippet posted above it does go to create the video player div, further down there is some license tokens and other things.

I think from the examples I posted they are different because one video I had to purchase (and have), the other I got for free because of my account level. As per the tag added, account credentials to a broken download needs to be handed over so someone can investigate further.

@beeradmoore commented on GitHub (Oct 12, 2017): Am getting the same issue here. Tried to download [this](https://www.youtube.com/watch?v=an7xvrFrQ7A) movie. Plays fine in browser so it shouldn't be region locked. When I use --cookies or -u and entering the password (TFA is disabled), the response is `ERROR: This video is unavailable.` Tried YT Red [content](https://www.youtube.com/watch?v=zPATuHtQa80), --cookies and -u method work. When I try the first movie without any auth credentials it downloads the trailer. A dump of some of the HTML from the movie that is failing at least shows where the error text is coming from, also noted over in [this](https://github.com/rg3/youtube-dl/issues/13075#issuecomment-314120492) post. ``` ... </div><div id="masthead-positioner-height-offset"></div><div id="page-container"><div id="page" class=" watch video-an7xvrFrQ7A clearfix"><div id="guide" class="yt-scrollbar"> <div id="appbar-guide-menu" class="appbar-menu appbar-guide-menu-layout appbar-guide-clickable-ancestor"> <div id="guide-container"> <div class="guide-module-content guide-module-loading"> <p class="yt-spinner "> <span title="Loading icon" class="yt-spinner-img yt-sprite"></span> <span class="yt-spinner-message"> Loading... </span> </p> </div> </div> </div> </div><div class="alerts-wrapper"><div id="alerts" class="content-alignment"> <div id="editor-progress-alert-container"></div> <div class="yt-alert yt-alert-default yt-alert-warn hid " id="editor-progress-alert-template"> <div class="yt-alert-icon"> <span class="icon master-sprite yt-sprite"></span> </div> <div class="yt-alert-content" role="alert"></div><div class="yt-alert-buttons"><button class="yt-uix-button yt-uix-button-size-default yt-uix-button-close close yt-uix-close" type="button" onclick=";return false;" aria-label="Close" data-close-parent-class="yt-alert"><span class="yt-uix-button-content">Close</span></button></div></div> <div id="edit-confirmation-alert"></div> <div class="yt-alert yt-alert-actionable yt-alert-info hid " id="edit-confirmation-alert-template"> <div class="yt-alert-icon"> <span class="icon master-sprite yt-sprite"></span> </div> <div class="yt-alert-content" role="alert"> <div class="yt-alert-message" tabindex="0"> </div> </div><div class="yt-alert-buttons"> <button class="yt-uix-button yt-uix-button-size-default yt-uix-button-alert-info yt-uix-button-has-icon edit-confirmation-yes" type="button" onclick=";return false;"><span class="yt-uix-button-icon-wrapper"><span class="yt-uix-button-icon yt-uix-button-icon-watch-like-invert yt-sprite"></span></span><span class="yt-uix-button-content">Yeah, keep it</span></button> <button class="yt-uix-button yt-uix-button-size-default yt-uix-button-alert-info yt-uix-button-has-icon edit-confirmation-no" type="button" onclick=";return false;"><span class="yt-uix-button-icon-wrapper"><span class="yt-uix-button-icon yt-uix-button-icon-watch-unlike-invert yt-sprite"></span></span><span class="yt-uix-button-content">Undo</span></button> <button class="yt-uix-button yt-uix-button-size-default yt-uix-button-close close yt-uix-close" type="button" onclick=";return false;" aria-label="Close" data-close-parent-class="yt-alert"><span class="yt-uix-button-content">Close</span></button></div></div> </div></div><div id="header"></div><div id="player" class=" content-alignment watch-small " role="complementary"><div id="theater-background" class="player-height"></div> <div id="player-mole-container"> <div id="player-unavailable" class=" hid player-width player-height player-unavailable "> <img class="icon meh" src="/yts/img/pixel-vfl3z5WfW.gif" data-icon="/yts/img/meh7-vflGevej7.png" alt=""> <div class="content"> <h1 id="unavailable-message" class="message"> This video is unavailable. </h1> <div id="unavailable-submessage" class="submessage"> </div> </div> </div> <div id="player-api" class="player-width player-height off-screen-target player-api" tabIndex="-1"></div> <script >if (window.ytcsi) {window.ytcsi.tick("cfg", null, '');}</script> <script >var ytplayer = ytplayer || {};ytplayer.config = {"args":{"user_display_name":"REDACTED","user_age":"29","vmap":"\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003cvmap:VMAP xmlns:vmap=\"http:\/\/www.iab.net\/videosuite\/vmap\" xmlns:yt=\"http:\/\/youtube.com\" version=\"1.0\"\u003e\u003c\/vmap:VMAP\u003e","innertube_context_client_version":"1.20171011","ypc_license_checker_module":"1","innertube_api_version":"v1","iv3_module":"1", ... ``` EDIT: I had a quick look at the errors that the code is throwing, looks like its coming from [here](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/youtube.py#L1945-L1949) simply because that unavailable-message div exists. As you can see from the rest of the snippet posted above it does go to create the video player div, further down there is some license tokens and other things. I think from the examples I posted they are different because one video I had to purchase (and have), the other I got for free because of my account level. As per the tag added, account credentials to a broken download needs to be handed over so someone can investigate further.
Author
Owner

@Fabian42 commented on GitHub (Oct 28, 2018):

This is a duplicate of #1774.

@Fabian42 commented on GitHub (Oct 28, 2018): This is a duplicate of #1774.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/youtube-dl#11954
No description provided.