Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RoosterTeeth.com support is broken following site update #16094

Closed
6 of 9 tasks
Candunc opened this issue Apr 4, 2018 · 53 comments
Closed
6 of 9 tasks

RoosterTeeth.com support is broken following site update #16094

Candunc opened this issue Apr 4, 2018 · 53 comments
Assignees

Comments

@Candunc
Copy link

Candunc commented Apr 4, 2018

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 2018.04.03. 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 2018.04.03

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
  • Checked that provided video/audio/playlist URLs (if any) are alive and playable in a browser

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
youtube-dl : [debug] System config: []
 
[debug] User config: []

[debug] Custom config: []

[debug] Command-line args: ['--verbose', 
'https://roosterteeth.com/episode/rooster-teeth-podcast-2018-486']

[debug] Encodings: locale cp1252, fs mbcs, out cp1252, pref cp1252

[debug] youtube-dl version 2018.04.03

[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.16299

[debug] exe versions: ffmpeg N-86482-gbc40674, ffprobe N-86482-gbc40674

[debug] Proxy map: {}

ERROR: Unable to extract m3u8 URL; please report this issue on 
https://yt-dl.org/bug . Make sure you are using the latest version; type  
youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag 
and include its complete output.

Traceback (most recent call last):
  File "C:\Users\dst\AppData\Roaming\Build 
archive\youtube-dl\rg3\tmp_it5pa_f\build\youtube_dl\YoutubeDL.py", line 785, 
in extract_info
  File "C:\Users\dst\AppData\Roaming\Build 
archive\youtube-dl\rg3\tmp_it5pa_f\build\youtube_dl\extractor\common.py", line 
440, in extract
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmp_it5pa_f\b
uild\youtube_dl\extractor\roosterteeth.py", line 115, in _real_extract
youtube_dl.utils.ExtractorError: Unable to extract m3u8 URL; please report 
this issue on https://yt-dl.org/bug . Make sure you are using the latest 
version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the 
--verbose flag and include its complete output.

Single video: https://rtv3-roosterteeth.akamaized.net/store/7281d24a2d5af5cba832b5335ced69ea-1e35796e/ts/index.m3u8

Note that youtube-dl does not support sites dedicated to copyright infringement. In order for site support request to be accepted all provided example URLs should not violate any copyrights.


Description of your issue, suggested solution and other information

Following the upgrade to RoosterTeeth.com, youtube-dl is no longer able to download videos, nor authenticate with the login page.

The m3u8 files have previously been hard to find, but now they are nearly impossible - it seems that the pages are dynamically generated on the client side as the tag is completely empty, aside from some required <script> tags. Reverse engineering the API may be necessary, as simply snooping on network traffic doesn't result in getting the m3u8 value.

See below content, the m3u8 file is available through an API call

@Candunc
Copy link
Author

Candunc commented Apr 4, 2018

Nevermind, the API provides it directly. Example:

https://svod-be.roosterteeth.com/api/v1/episodes/rooster-teeth-podcast-2018-486/videos

From input url "https://roosterteeth.com/episode/rooster-teeth-podcast-2018-486", grab the last item and call the API endpoint. This doesn't work for FIRST videos, as they likely want authentication tokens passed along.

@ddmgy
Copy link

ddmgy commented Apr 6, 2018

I opened a pull request to use the new API, so downloading public videos works now, but anything that requires you to be logged in fails. I'm trying to find out how to authenticate with the API, but I'm not making much headway.

@JordanCarr
Copy link

@ddmgy I Might be able to help the AchieveLand MineCraft Lets Play is currently FIRST and while I haven't had time to determine precisely why, I am currently able to download it.

The steps I used were log in to my account in Safari (obviously I'm using macOS) then once the video loads I right clicked and copied the video URL which is a standard right click option for HTML5 video in safari if I remember correctly. Then I gave that URL without a username or password to youtube-dl and it started downloading using hls , applehttp.

If you need any more information then I can provide that although I will be somewhat busy

@Candunc
Copy link
Author

Candunc commented Apr 7, 2018

I can confirm this, the m3u8 urls don't seem to require authentication to access. However we still face the issue of getting the initial m3u8 file.

After a bit of network analysis, I've found what I believe should allow a username/password combo to access FIRST content.

A POST request to 'https://auth.roosterteeth.com/oauth/token' with the below JSON file returns some parameters.

"client_id":"4338d2b4bdc8db1239360f28e72f0d9ddb1fd01e7a38fbb07b4b1f4ba4564cc5",
"grant_type":"password",
"username":"<<username>>",
"password":"<<password>>",
"scope":"user public"

Of these parameters, "access_token" seems to be most valuable. By calling the api url with the 'authorization' header set to "Bearer <<access_token>>" returns the m3u8 file.

I have no idea what client_id is. It might be related to their various apps (Xbox, Apple TV, iOS, Browser?) I'm sharing it as I presume it isn't unique to my username, as it was set prior to the login.

@ddmgy
Copy link

ddmgy commented Apr 7, 2018

@Candunc Yeah, that client_id is not unique to your account, I see it in my request headers.

I found that authorization URL earlier and I'm able to log in through youtube-dl now. I'm trying to get the m3u8 URL now, to see if downloading FIRST videos will work. Thanks for the tip about the Authorization header; I haven't done anything with OAuth in years, so it didn't occur to me how to use the access_token.

Edit: Downloading FIRST-only videos now works. I'll clean it up and push my changes, and hopefully someone will take a look at merging my pull request soon.

@gwemmie
Copy link

gwemmie commented Jun 15, 2018

Wait, is it still broken for free videos? I don't understand how the OP (and second post) obtained any of those URLs, but I know that now that Camp Camp is not being uploaded to YouTube anymore, this is happening to me on the newest version (2018.06.14):


$ youtube-dl --verbose -F "https://roosterteeth.com/episode/camp-camp-season-3-2"
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--verbose', '-F', 'https://roosterteeth.com/episode/camp-camp-season-3-2']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.06.14
[debug] Python version 3.6.5 (CPython) - Linux-4.14.48-1-lts-x86_64-with-arch-Arch-Linux
[debug] exe versions: ffmpeg 4.0, ffprobe 4.0, rtmpdump 2.4
[debug] Proxy map: {}
[RoosterTeeth] camp-camp-season-3-2: Downloading webpage
ERROR: Unable to extract m3u8 URL; 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.
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/youtube_dl/YoutubeDL.py", line 792, in extract_info
    ie_result = ie.extract(url)
  File "/usr/lib/python3.6/site-packages/youtube_dl/extractor/common.py", line 500, in extract
    ie_result = self._real_extract(url)
  File "/usr/lib/python3.6/site-packages/youtube_dl/extractor/roosterteeth.py", line 115, in _real_extract
    raise ExtractorError('Unable to extract m3u8 URL')
youtube_dl.utils.ExtractorError: Unable to extract m3u8 URL; 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.



@catatonik
Copy link

Wait, is it still broken for free videos? I don't understand how the OP (and second post) obtained any of those URLs, but I know that now that Camp Camp is not being uploaded to YouTube anymore, this is happening to me on the newest version (2018.06.14):

If you put the episode you want to download in to this url:

https://svod-be.roosterteeth.com/api/v1/episodes/INPUTHERE/videos

eg:

https://roosterteeth.com/episode/camp-camp-season-3-2

becomes:

https://svod-be.roosterteeth.com/api/v1/episodes/camp-camp-season-3-2/videos

and then from that webpage copy the .m3u8 link, you can feed it in to youtube-dl, and it'll download OK.

@DuendeInexistente
Copy link

DuendeInexistente commented Jun 29, 2018

For now, a quick and dirty fix could be to run a python equivalent of this, which gets exactly what we want:
curl https://svod-be.roosterteeth.com/api/v1/episodes/<<videoID>>/videos | sed 's/"/\n/g' | grep .m3u8
Even if it's not implemented into youtube-dl like this, it's how I'm getting the URLs at the moment.

@ipat8
Copy link

ipat8 commented Oct 29, 2018

Has there been an update on this? Even free videos no longer work.

@Walkman100
Copy link

@DuendeInexistente this didn't work for me on a free video:

walkman@WalkmanPC:~/RWBY$ curl https://svod-be.roosterteeth.com/api/v1/episodes/rwby-volume-6-1/videos | sed 's/"/\n/g' | grep .m3u8
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   993    0   993    0     0    516      0 --:--:--  0:00:01 --:--:--   516
https://rtv3-video.roosterteeth.com/store/777dcdfb41acc2cebc48a69a94ab4460-f6785b63/ts/1540590815_index.m3u8
walkman@WalkmanPC:~/RWBY$ youtube-dl --verbose "https://rtv3-video.roosterteeth.com/store/777dcdfb41acc2cebc48a69a94ab4460-f6785b63/ts/1540590815_index.m3u8"
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--verbose', 'https://rtv3-video.roosterteeth.com/store/777dcdfb41acc2cebc48a69a94ab4460-f6785b63/ts/1540590815_index.m3u8']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.11.03
[debug] Python version 3.5.2 (CPython) - Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial
[debug] exe versions: avconv 2.8.14-0ubuntu0.16.04.1, avprobe 2.8.14-0ubuntu0.16.04.1, ffmpeg 2.8.14-0ubuntu0.16.04.1, ffprobe 2.8.14-0ubuntu0.16.04.1
[debug] Proxy map: {}
[generic] 1540590815_index: Requesting header
WARNING: Could not send HEAD request to https://rtv3-video.roosterteeth.com/store/777dcdfb41acc2cebc48a69a94ab4460-f6785b63/ts/1540590815_index.m3u8: <urlopen error [Errno -3] Temporary failure in name resolution>
[generic] 1540590815_index: Downloading webpage
ERROR: Unable to download webpage: <urlopen error [Errno -3] Temporary failure in name resolution> (caused by URLError(gaierror(-3, 'Temporary failure in name resolution'),))
  File "/usr/bin/youtube-dl/youtube_dl/extractor/common.py", line 605, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 2211, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.5/urllib/request.py", line 466, in open
    response = self._open(req, data)
  File "/usr/lib/python3.5/urllib/request.py", line 484, in _open
    '_open', req)
  File "/usr/lib/python3.5/urllib/request.py", line 444, in _call_chain
    result = func(*args)
  File "/usr/bin/youtube-dl/youtube_dl/utils.py", line 1139, in https_open
    req, **kwargs)
  File "/usr/lib/python3.5/urllib/request.py", line 1256, in do_open
    raise URLError(err)

I get the same error when doing it in one line (so no copy-and-paste):

curl https://svod-be.roosterteeth.com/api/v1/episodes/rwby-volume-6-1/videos | sed 's/"/\n/g' | grep .m3u8 | youtube-dl -a -

@madmalkav
Copy link

madmalkav commented Nov 3, 2018

@Walkman100 that URL to m3u8 file works OK for me here. Unfortunately, it can't fetch the subs, no errors in the output but:

video:795292kB audio:21132kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.072632%

I'm not on the last youtube-dl version, so I will update ASAP and report back about the subs.

EDIT: confirmed subs are also not fetched with 2018.11.03

@Walkman100
Copy link

Walkman100 commented Nov 4, 2018

weirdly enough that url works fine in a browser, I can download the m3u8 file and the file it references with aria2c, but even on another system it doesn't work with youtube-dl...

@gwemmie
Copy link

gwemmie commented Nov 4, 2018

In case this helps, the way I automated it still works for me with Camp Camp, when given a direct link to a video such as https://roosterteeth.com/episode/camp-camp-season-3-halloween-special (that I assigned to $URL):

if ! hash jq 2>/dev/null ; then
  echo "ERROR: roosterteeth.com support requires jq"
  exit 1
fi
API_URL="$(echo "$URL" | sed 's|roosterteeth.com/episode/\(.\+\)|svod-be.roosterteeth.com/api/v1/episodes/\1/videos|')"
URL="$(curl "$API_URL" 2>/dev/null | jq -r '.data[].attributes[]' | grep http)"
if echo "$URL" | grep -E "https?://roosterteeth.com/" || [ -z "$URL" ] \
|| [[ "$URL" =~ "parse error" ]]; then
  echo "ERROR: Couldn't get Rooster Teeth API URL" | tee "${DEST}Rooster Teeth - $TITLE"
  echo "\$API_URL=$API_URL" >> "${DEST}Rooster Teeth - $TITLE"
  exit 1
fi
# if we got this far, $URL is now the URL to the actual video stream that youtube-dl can deal with

@Walkman100
Copy link

Thanks for trying to help, but that gives the same playlist url as the one-liner above (although yours can be given the full page url) which gives the same errors

WARNING: Could not send HEAD request to https://rtv3-video.roosterteeth.com/store/777dcdfb41acc2cebc48a69a94ab4460-f6785b63/ts/1540590815_index.m3u8: <urlopen error [Errno -3] Temporary failure in name resolution>
ERROR: Unable to download webpage: <urlopen error [Errno -3] Temporary failure in name resolution> (caused by URLError(gaierror(-3, 'Temporary failure in name resolution'),))

I noted above this doesn't work on another system (which is my Raspberry Pi), I tried this on Termux on my Android phone, and it works (same WiFi connection)… so the one-liner above not working on my system has nothing to do with youtube-dl or the script, it's an issue with DNS on my two systems on command-line somehow...

@madmalkav
Copy link

About subtitles download:

The m3u8 file lists the different subtitles as this:
EXTM3U #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",LANGUAGE="ko",NAME="한국어",AUTOSELECT=NO,DEFAULT=NO,URI="https://rtv3-video.roosterteeth.com/caption_store/a452db27-6947-4e35-84d4-b7d9afb2a8fd/ko_manifest.m3u8" #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",LANGUAGE="pt",NAME="Português",AUTOSELECT=NO,DEFAULT=NO,URI="https://rtv3-video.roosterteeth.com/caption_store/c44e51fd-409d-489a-91f1-016aab1eeabe/pt_manifest.m3u8",FORCED=NO #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",LANGUAGE="de",NAME="Deutsche",AUTOSELECT=NO,DEFAULT=NO,URI="https://rtv3-video.roosterteeth.com/caption_store/2e3bc254-a69e-4889-882b-490a8d6e27da/de_manifest.m3u8",FORCED=NO #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",LANGUAGE="fr",NAME="Français",AUTOSELECT=NO,DEFAULT=NO,URI="https://rtv3-video.roosterteeth.com/caption_store/0e09e9b1-05ec-4fd3-b473-3fe672ea2ad1/fr_manifest.m3u8",FORCED=NO #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",LANGUAGE="es",NAME="Español",AUTOSELECT=NO,DEFAULT=NO,URI="https://rtv3-video.roosterteeth.com/caption_store/3ba18c5d-1f54-4f1d-b2fa-5e1c5e97eaca/es_manifest.m3u8",FORCED=NO #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=NO,URI="https://rtv3-video.roosterteeth.com/caption_store/f7ec91c5-0f41-47d5-a7b8-1c786d0c1bf6/en_manifest.m3u8",FORCED=NO

An inside each of those files, there is entries like this:

#EXTM3U #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-VERSION:1 #EXT-X-MEDIA-SEQUENCE:1 #EXT-X-TARGETDURATION:1352 #EXTINF:1352, vtt_es.webvtt #EXT-X-ENDLIST

So, i.e., you can fetch the spanish subtitles if you use the URL of the spanish subs m3u8 file and change the filename for the name inside of the subs m3u8 file:

https://rtv3-video.roosterteeth.com/caption_store/3ba18c5d-1f54-4f1d-b2fa-5e1c5e97eaca/vtt_es.webvtt

@ffuentesm
Copy link

Wait, is it still broken for free videos? I don't understand how the OP (and second post) obtained any of those URLs, but I know that now that Camp Camp is not being uploaded to YouTube anymore, this is happening to me on the newest version (2018.06.14):

If you put the episode you want to download in to this url:

https://svod-be.roosterteeth.com/api/v1/episodes/INPUTHERE/videos

eg:

https://roosterteeth.com/episode/camp-camp-season-3-2

becomes:

https://svod-be.roosterteeth.com/api/v1/episodes/camp-camp-season-3-2/videos

and then from that webpage copy the .m3u8 link, you can feed it in to youtube-dl, and it'll download OK.

so I am trying to download: https://roosterteeth.com/episode/rwby-volume-6-1

I have to input this: https://rtv3-video.roosterteeth.com/store/777dcdfb41acc2cebc48a69a94ab4460-f6785b63/ts/1540590815_index.m3u8

But it gives me an error:
[generic] 1540590815_index: Requesting header
WARNING: Falling back on generic information extractor.
[generic] 1540590815_index: Downloading webpage
[generic] 1540590815_index: Downloading m3u8 information
[download] Destination: 1540590815_index-1540590815_index.mp4
ERROR: m3u8 download detected but ffmpeg or avconv could not be found. Please install one.

So I have to download one of them and the problem is fix?

@Candunc
Copy link
Author

Candunc commented Jan 8, 2019

ERROR: m3u8 download detected but ffmpeg or avconv could not be found. Please install one.

Yes, install ffmpeg to your path and you can download the videos.

@thegreatestminer
Copy link

Can confirm, using the api trick and slapping the m3u8 link on to youtube-dl does indeed download Rooster Teeth videos. (I don't have a subscription so I can't say anything for those exclusive ones.)

Any update on this problem? It's been almost three months since last comment for both the pull request and issue thread.

@sasjafor
Copy link

When using the API trick I now get a "Missing Key-Pair-Id query parameter or cookie value" when putting the m3u8 url i nthe browser. And with yotube-dl I straight up get a 403.
I can watch the video in questions without being logged in.

@thegreatestminer
Copy link

@sasjafor Try clearing cache and cookies. If that doesn't work, wait a day. It happened to me once and that's what I had to do to make it work again.

@sasjafor
Copy link

sasjafor commented Apr 3, 2019

I got it to work now. So for anyone having the same problem.

  1. Plug the video name in the api, as described above.
  2. Copy the full m3u8 URL, with all the parameters and replace all instances of \u0026 with '&'. This way I could also download the m3u8 file in the browser.
  3. Then I used this command ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i "URL_TO_M3U8_FILE_FROM_2" -c copy video.mp4

I suspect that the crypto parameters might expire, so you probably can't wait too long between doing the API request and then downloading with ffmpeg.

I could not get it to work with youtube-dl as I kept getting a 403 error, but this is a solution until youtube-dl works.

@thegreatestminer
Copy link

@sasjafor Thanks for this workaround!

I noticed this is only necessary when the link starts with https://rtv3-roosterteeth.akamaized.net/store/.

When it starts with https://rtv2-roosterteeth.akamaized.net/uploads/videos/ you don't even need to copy the entire link, just up to the .m3u8 part.

@ipat8
Copy link

ipat8 commented Jun 17, 2019

Has there been any work to upstream a fix?

@jarrettyeo
Copy link

The steps described by @sasjafor works for me. I wrote a Python 3 script to automate downloading of RWBY Volume 6 videos:

import urllib.request, json 
import os

episode = input("Episode: ")
link = "https://svod-be.roosterteeth.com/api/v1/episodes/rwby-volume-6-%s/videos" % episode
with urllib.request.urlopen(link) as url:
    data = json.loads(url.read().decode())
    dl = data['data'][0]['attributes']['url']

cmd = 'ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i "%s" -c copy rwby-volume-6-%s.mp4' % (dl, episode)
os.system(cmd)

@Genje
Copy link

Genje commented Jun 23, 2019

Forgive my lack of programming knowledge, but I could not get either @sasjafor or @jarrettyeo 's solutions to work.

For @sasjafor , I followed the steps, and typed into command prompt:

"C:\Program Files\Youtube-DL\ffmpeg-20190621-01d8c72-win64-static\bin\ffmpeg.exe" -protocol_whitelist file,http,https,tcp,tls,crypto -i "{"data":[{"_index":"videos-production-en_20190622090728596","type":"video","id":"113692","score":98.830475,"id":113692,"type":"video","uuid":"4cde6796-0a42-4b57-bb3c-dc520042b539","attributes":{"url":"https://rtv3-roosterteeth.akamaized.net/store/777dcdfb41acc2cebc48a69a94ab4460-f6785b63/ts/1540590815_index.m3u8?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9ydHYzLXZpZGVvLnJvb3N0ZXJ0ZWV0aC5jb20vc3RvcmUvNzc3ZGNkZmI0MWFjYzJjZWJjNDhhNjlhOTRhYjQ0NjAtZjY3ODViNjMvdHMvMTU0MDU5MDgxNV9pbmRleC5tM3U4IiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNTYxMjc3NDQwfX19XX0%Signature=WURo1N6XtDjfUMBSvS7voRKevSamalW4Z-F5OkcE8eI3w8VN9BXXHZzACxDa2ViWBVEDWQ-ZPPdTGbSTGoswckpSPDtPpX98UZUhBzdOUEEj7DmTNrXXS4fNxriq4PExGcE0J3OgjoOA7rqQDoCvcvR9rKfHZK6OlRvliruZvljI41vYoDYbKTaxXtEhCsufaIcz27JXnZYBrpVpYu6ELLPAHoBX3LTsSgzcVnhhMWhkPSmFo-9qkGC1E3W9KmUW9jn2ch9qPEx61REDwfzcY0aLpBNPX9LEIlqBPGy0qclEngt49G13QAM1tMjPXD0P1hA3ve1cRgW~r8mw&Key-Pair-Id=APKAI5CBI4B75GD2U2IQ","content_id":29129,"content_slug":"rwby-volume-6-1","content_uuid":"2742d8e4-6574-4951-bdc4-b5a561bc44de","public_golive_at":"2018-11-03T15:00:00.000Z","sponsor_golive_at":"2018-10-27T14:45:00.000Z","member_golive_at":"2018-11-03T15:00:00.000Z","frame_sizes":null,"media_type":"manifest","bandwidth":null,"embed":false,"is_sponsors_only":false,"image_pattern_url":"https://rtv3-roosterteeth.akamaized.net/","bif_url":"https://rtv3-roosterteeth.akamaized.net/","ad_config":{"nw":"392564","caid":"RT-Episode-2742d8e4-6574-4951-bdc4-b5a561bc44de","afid":"84095505","prof":"392564:otter_desktop_rt","ad_timestamps":[356,847],"preroll":["freewheel"],"midroll":["freewheel"]}},"links":{"self":"/api/v1/episodes/rwby-volume-6-1/videos","content":"/api/v1/episodes/rwby-volume-6-1"},"included":{}}],"page":1,"per_page":1,"total_pages":0,"total_results":1}" -c copy video.mp4

All I get is:

No such file or directory
'Key-Pair-Id' is not recognized as an internal or external command,
operable program or batch file.

@Genje
Copy link

Genje commented Jun 23, 2019

For @jarrettyeo I opened up Notepad and put in:

import urllib.request, json
import os

episode = input("Episode: ")
link = "https://svod-be.roosterteeth.com/api/v1/episodes/rwby-volume-6-%s/videos" % episode
with urllib.request.urlopen(link) as url:
data = json.loads(url.read().decode())
dl = data['data'][0]['attributes']['url']

cmd = '"C:\Program Files\Youtube-DL\ffmpeg-20190621-01d8c72-win64-static\bin\ffmpeg.exe" -protocol_whitelist file,http,https,tcp,tls,crypto -i "%s" -c copy rwby-volume-6-%s.mp4' % (dl, episode)
os.system(cmd)

where "C:\Program Files\Youtube-DL\ffmpeg-20190621-01d8c72-win64-static\bin\ffmpeg.exe" is my ffmpeg location, and saved it as a .py file. Upon opening the file with Python 3.0, it seems to run initially, with a prompt for episode number. However, after typing in a number, the script closes and nothing happens.

@Genje
Copy link

Genje commented Jun 23, 2019

@sasjafor realized I was typing it in wrong. Now copied the url starting at the https: part. But I am getting 403 access denied error now.

@jarrettyeo
Copy link

@Genje I got the 403 error message as well. Only got it to work via my python 3 code. Try to open a terminal and execute the following:

cd /path/to/the/folder/containing/your/script
python name_of_your_file.py

@Genje
Copy link

Genje commented Jun 23, 2019

Hey @jarrettyeo thanks for trying to help.

I opened Command Prompt and ran your script like you said. It prompted for an episode number, like so:

C:\Users\Ryan\Documents>RWBY.py
Episode: 1

After pressing Enter I get:

Traceback (most recent call last):
File "C:\Users\Ryan\Documents\RWBY.py", line 6, in
with urllib.request.urlopen(link) as url:
AttributeError: 'addinfourl' object has no attribute 'exit'

@ipat8
Copy link

ipat8 commented Sep 4, 2019

@thegreatestminer It looks like a change was pushed a month ago, have you tried updating your version?

@thegreatestminer
Copy link

@ipat8 Well I'll be damned. Updated to 2019.09.01 and it works flawlessly.

Thanks!

@Matt14451
Copy link

Matt14451 commented Sep 8, 2019

Getting HTTP Error 404: Not Found (caused by HTTPError()) etc when trying to download a video that's first-exclusive, non-first videos work perfectly. Updated to latest version. Added username and password using -u and -p. Recognises the videos are first-exclusive when -u and -p aren't used.

@Matt14451
Copy link

@thegreatestminer Have you tried First-exclusive shows? Still doesn't work for me. Command I'm using is - "youtube-dl -u -p https://roosterteeth.com/watch/camp-camp-season-4-15" - with username and password.

@Candunc
Copy link
Author

Candunc commented Sep 13, 2019

First exclusive shows are broken as c72dc20 only extracts free episodes. It needs to be modified to support authentication tokens like #16105 does. @remitamine I can give you a valid first login to test with if you are willing to write a patch.

@RichardHancock
Copy link

I've just created a pull request with a working FIRST only video downloader. #22689 I've tested it with a few FIRST videos and it seems to work, please try it with any others and tell me if you have any problems.

@Matt14451
Copy link

I've just created a pull request with a working FIRST only video downloader. #22689 I've tested it with a few FIRST videos and it seems to work, please try it with any others and tell me if you have any problems.

Seems to have same problem as before, FIRST videos aren't working. Updated youtube-dl to latest version.

@RichardHancock
Copy link

@Matt14451 Did you specifically download the Version from my pull request? The main youtube-dl doesn't have my fixes until the pull request is approved and merged.

@madmalkav
Copy link

@RichardHancock does your PR support downloading subtitles too? If so, I will consider getting a subscription and trying.

@ipat8
Copy link

ipat8 commented Nov 3, 2019

@RichardHancock I downloaded and built yours and I get a 404 page not found error.

URL Used: https://roosterteeth.com/watch/rwby-volume-7-1

Here is the output.

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-u', 'PRIVATE', '-p', 'PRIVATE', 'https://roosterteeth.com/watch/rwby-volume-7-1', '--verbo se']
[debug] Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252
[debug] youtube-dl version 2018.09.26
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.18362
[debug] exe versions: ffmpeg 4.0, ffprobe 4.0
[debug] Proxy map: {}
[generic] rwby-volume-7-1: Requesting header
WARNING: Falling back on generic information extractor.
[generic] rwby-volume-7-1: Downloading webpage
[generic] rwby-volume-7-1: Extracting information
[generic] rwby-volume-7-1: Requesting header
WARNING: Could not send HEAD request to https://roosterteeth.com/embed/rwby-volume-7-1: HTTP Error 404: Not Found [generic] rwby-volume-7-1: Downloading webpage ERROR: Unable to download webpage: HTTP Error 404: Not Found (caused by HTTPError()); please report this issue on https:
//yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl
with the --verbose flag and include its complete output. File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpcaq35cl9\build\youtube_dl\extractor\common.py", lin
e 604, in _request_webpage File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpcaq35cl9\build\youtube_dl\YoutubeDL.py", line 2211,
in urlopen
File "C:\Python\Python34\lib\urllib\request.py", line 470, in open
File "C:\Python\Python34\lib\urllib\request.py", line 580, in http_response
File "C:\Python\Python34\lib\urllib\request.py", line 508, in error
File "C:\Python\Python34\lib\urllib\request.py", line 442, in _call_chain
File "C:\Python\Python34\lib\urllib\request.py", line 588, in http_error_default

@ipat8
Copy link

ipat8 commented Nov 3, 2019

Here is the output from a Ubuntu system, which seems to at least use the new extractor, but has the same issue.

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'https://roosterteeth.com/watch/rwby-volume-7-1', u'--username', 'PRIVATE', u'--password', u'PRIVATE', u'--verbose']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.09.28
[debug] Python version 2.7.15+ (CPython) - Linux-4.4.0-18362-Microsoft-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: none
[debug] Proxy map: {}
[RoosterTeeth] Downloading login page
[RoosterTeeth] Logging in
ERROR: Unable to download webpage: HTTP Error 404: Not Found (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
File "./youtube-dl/youtube_dl/extractor/common.py", line 627, in _request_webpage return self._downloader.urlopen(url_or_request)
File "./youtube-dl/youtube_dl/YoutubeDL.py", line 2237, in urlopen return self._opener.open(req, timeout=self._socket_timeout)
File "/usr/lib/python2.7/urllib2.py", line 435, in open response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 548, in http_response 'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 473, in error return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 556, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)

@RichardHancock
Copy link

@madmalkav Sorry I don't believe it does, I'll try and have a look into it.
@ipat8 I've just tested that video and it downloads fine for me, looking at your log I believe you are not actually using my version as mine is based on 2019.09.28 and yours seems to be older.
Ah I see you've just posted an update with the correct version number, not sure what the problem is then. Heres my log for comparison:

[debug] System config: []        
[debug] User config: []  
[debug] Custom config: []  
[debug] Command-line args: [u'-u', u'PRIVATE', u'-p', u'PRIVATE', u'--verbose',  u'https://roosterteeth.com/watch/rwby-volume-7-1']  
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252  
[debug] youtube-dl version 2019.09.28  
[debug] Python version 2.7.15 (CPython) - Windows-10-10.0.18362  
[debug] exe versions: ffmpeg N-91634-gc2eec1762d, ffprobe N-91634-gc2eec1762d  
[debug] Proxy map: {}  
[RoosterTeeth] Logging in
[RoosterTeeth] rwby-volume-7-1: Downloading video JSON metadata  
[RoosterTeeth] rwby-volume-7-1: Downloading m3u8 information  
[RoosterTeeth] rwby-volume-7-1: Downloading episode JSON metadata  
[debug] Default format spec: bestvideo+bestaudio/best  
[debug] Invoking downloader on u'https://rtv3- roosterteeth.akamaized.net/store/cc9b9ed69991bb0cf591172acec89a19-341d0c7d/ts/341d0c7d-hls_1080p-store-cc9b9ed69991bb0cf591172acec89a19.m3u8'  
[download] The Greatest Kingdom-35563.mp4 has already been downloaded  
[download] 100% of 644.80MiB  
[debug] ffmpeg command line: ffprobe -show_streams "file:The Greatest Kingdom-35563.mp4"  
[ffmpeg] Fixing malformed AAC bitstream in "The Greatest Kingdom-35563.mp4"  
[debug] ffmpeg command line: ffmpeg -y -loglevel "repeat+info" -i "file:The Greatest Kingdom-35563.mp4" -c copy -f mp4 "-bsf:a" aac_adtstoasc "file:The Greatest Kingdom-35563.temp.mp4"

@ipat8
Copy link

ipat8 commented Nov 3, 2019

Could you provide your binary? I confirmed that I built the one from your source. Not sure on what's wrong with my build.

@RichardHancock
Copy link

@ipat8 I'm not building the binary just running this from the top level directory of the repo:
python.exe youtube_dl\__main__.py -u REDACTED -p REDACTED --verbose https://roosterteeth.com/watch/rwby-volume-7-1

I've always had trouble building the binary myself for youtube-dl (weird build system configuration issues) and this method is a lot quicker for testing.

@Candunc
Copy link
Author

Candunc commented Nov 3, 2019

[RoosterTeeth] Downloading login page

@ipat8, it looks like you are not using RichardHancock's version. I'll admit I haven't tried building an exe from source, but that log line indicates you are using the wrong version. Did you git checkout patch-1? I made that mistake when verifying the pull request.

@ipat8
Copy link

ipat8 commented Nov 4, 2019

Tried again, same issue. I may just have to wait for the code merge because I can not get this to work. I've tried with and without a VPN, tried multiple different OS/ Versions. This was cloned directly from your repo.

C:\Users\sentinel\Documents\GitLab\youtube-dl\youtube_dl>python __main__.py -u PRIVATE -p PRIVATE https://roosterteeth.com/watch/rwby-volume-7-1 --verbose
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-u', 'PRIVATE', '-p', 'PRIVATE', 'https://roosterteeth.com/watch/rwby-volume-7-1', '--verbose']
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, pref cp1252
[debug] youtube-dl version 2019.09.28
[debug] Git HEAD: c317b6163
[debug] Python version 3.7.5 (CPython) - Windows-10-10.0.18362-SP0
[debug] exe versions: ffmpeg 4.0, ffprobe 4.0
[debug] Proxy map: {}
[RoosterTeeth] Downloading login page
[RoosterTeeth] Logging in
ERROR: Unable to download webpage: HTTP Error 404: Not Found (caused by <HTTPError 404: 'Not Found'>); 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.
File "C:\Users\sentinel\Documents\GitLab\youtube-dl\youtube_dl\extractor\common.py", line 627, in _request_webpage return self._downloader.urlopen(url_or_request)
File "C:\Users\sentinel\Documents\GitLab\youtube-dl\youtube_dl\YoutubeDL.py", line 2237, in urlopen return self._opener.open(req, timeout=self._socket_timeout)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1520.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 531, in open response = meth(req, response)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1520.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 641, in http_response 'http', request, response, code, msg, hdrs)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1520.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 569, in error return self._call_chain(*args)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1520.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 503, in _call_chain result = func(*args)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1520.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 649, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp)

@RichardHancock
Copy link

@ipat8 That login 404 error is the problem my commit should fix. Can you manually check the youtube_dl/extractor/rooster teeth.py and make sure it matches this: https://github.com/ytdl-org/youtube-dl/blob/3e738a38fd077f4fe0e8ad4be95a3889fc6cdfa0/youtube_dl/extractor/roosterteeth.py if not just download the file and replace the one you have. Otherwise I have no idea.

@ipat8
Copy link

ipat8 commented Nov 4, 2019

I have no idea why that worked, but it did. I cloned your repo directly through github desktop. Not sure what the issue was.

@remitamine remitamine self-assigned this Nov 4, 2019
@RichardHancock
Copy link

@madmalkav I have got subtitles working, I don't want to add them to my current pull request as it will probably delay it getting merged. I plan on doing a separate pull request after this one is merged to add show and season page support and any other improvements I can make. I can provide the subtitle code some other way in the meantime if wanted, It's just a little rough and needs some polish but works on all videos I've tried so far.

@madmalkav
Copy link

I think your planning is good, I will wait to that future pull request to make an account on RT and test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests