Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
In order to ease uploading videos to YouTube, I have created an uploader (Windows Binary). Pros: Supports large files. Automatic resume. Resumable if the program was terminated. Logs. Usable with batch files. Cons: No GUI. Young. To start off, extract somewhere, and edit credentials.txt, and replace each line with your e-mail address, password, and developer key respectively. To start upload:
ytu "path\to\video file" "Title" "Tags"
You will be asked to put in a description. Once it gets to the uploading stage, it will print out a Continuation ID, you can use this ID to resume if the program terminates. If you'd rather pull a description from a file (more automatable with batch files):
ytu "path\to\video file" "Title" "Tags" < "path\to\description file"
To continue an upload in progress:
ytu --continue <continuation id>
It remembers where your file is and checks to ensure it has remained the same. If you'd like to see the status of what you did so far, see which files were uploaded, which were interrupted:
ytu --list
This list also gives you Continuation IDs in case you lost them. List output to give you an idea:
Continuation ID     File     Size     MD5     URL
1 /home/nach/nesvideos/mortalkombat3-glitched-tas-thevlackdemonn2294.mp4 9689650 feda6b4ea251d3f96dfe3e4f43ddeb17 http://www.youtube.com/watch?v=GzxhhONTf7s
2 /home/nach/nesvideos/superdemoworld-tas-bahametedawn.mp4 54389101 39d404a35afd57db31ab9d7a2d64197b --Incomplete--
3 /home/nach/nesvideos/clue-tas-deign.mkv 644853 16cb75ce22c5420ea967f29b89a1134a http://www.youtube.com/watch?v=RoaT9H3KTlo
To check status of running in batch files, return codes / error levels are used.
Error Levels:
0 Success
1 Error
2 Info
Please test and post your success/failure stories. Once I'm sure this is well tested, I'm going to see about integrating the site with this application as well. For those of you have heard about the "FTP proccess for Publishers", this is stage 1. Note: ytu can be run from another directory without issues as long as whatever executes it passes a full path to it. Note: I have this for Linux too if anyone is interested. Edit: Wiki: YoutubeUploader
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Post subject: Why can't I hold all this testing?
Experienced player (764)
Joined: 6/17/2008
Posts: 146
YouTube Uploader                                       Copyright (C) Nach 2012

Continuation ID     File     Size     MD5     URL
1 /home/turska/TASEncodes/up/keen5-tas-turska_yt_fix.mkv 60946417 16f06f8972b4ba217b4258b9b4e7fa23 --Incomplete--
2 /home/turska/TASEncodes/up/keen5-tas-turska_yt_fix.mkv 60946417 16f06f8972b4ba217b4258b9b4e7fa23 --Incomplete--
3 /home/turska/ytu/linytu/fuckers.mkv 665252 bd9e8bd99682f0fce25d1292eb20324d http://www.youtube.com/watch?v=B04ri8O7GnU
4 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
5 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
6 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
7 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
8 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 http://www.youtube.com/watch?v=r3snuMRcjJY
9 /home/turska/ytu/linytu/t.mkv 348168 http://www.youtube.com/watch?v=Lst3Eqj6zSo
61aba06c55210219439c420743648e91 http://www.youtube.com/watch?v=QjT7fb8a_Ao
10 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 http://www.youtube.com/watch?v=ICNv4YB5bZY
11 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 http://www.youtube.com/watch?v=lYF94NCjplw
12 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
13 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
14 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
15 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
16 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
17 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
18 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
19 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
20 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 http://www.youtube.com/watch?v=WngrDPbehYY
21 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
22 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 http://www.youtube.com/watch?v=2DW-okhf8ok
23 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 --Incomplete--
24 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 http://www.youtube.com/watch?v=HJ3lkp-bYOU
25 /home/turska/ytu/linytu/t.mkv 348168 61aba06c55210219439c420743648e91 http://www.youtube.com/watch?v=mkvW_C6c-ck
Conclusions: tags can have up to 15 characters. The title goes up to 101 characters. Illegal characters in tags: " (', / and \ are fine) Edit: the description is seemingly limited to 4899 characters. Another edit: seems like the amount of tags is limited at 7. Edit III: Scratch that. Seems like the amount of tags is limited to 15. Any tag string with more than 32 characters is rejected for me, which is curious since there are many videos with much more tags than that would allow for. Edit IV: Scratch that. Seems like 32 characters is the maximum length of a single tag. For whatever reason,
./ytu test.mkv "test" "never gonna tag your test clip"< ffff
results in the video having a single tag called "never gonna tag your test clip". This shit is too deep for me. Still an edit: seems like this interface uses commas to separate tags while the web interface uses spaces. How amusing. Unlimited Edit Works: seems like a single tag may have up to 32 characters. A video can have up to 120 tags, but you'll probably hit the total character limit of ~501 far before that. THE GRAND CONCLUSION (some values might be off by 1): 1. Documentation is useful. Lack of documentation isn't. 2. A tag's length is limited to 32 characters. A tag must have at least 2 characters. 3. The entire tag string is limited to 902 characters when using two-character tags (including separators). Using tags with three or more characters seems to result in a limit of 501 characters. Therefore, 501 seems to be the practical limit. 4. The title is limited to 101 characters. 5. The description seems to be limited to 4899 characters. 6. Illegal characters in tags include " — /,\.' aren't illegal. THE FINAL EDIT (I swear!): resuming works fine. Uploaded quite a few test clips without fail. This is an excellent tool of extraordinary excellence.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Thank you much turksa for the testing. I'll have to build these limits in. The illegal characters are:
"./
Correct? Regarding tags, if you get different limits for different sizes, there's some limit we're not seeing. 1) Limit of characters per tag: 2-32 2) Upper limit for amount of tags: ? 3) Limit of string contain all tags: Can be 902 can be 501? Does the last limit change with four character tags? What about when mixing two and three character tags?
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
Will it be implemented in the future to upload a video as Unlisted or Private?
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Warepire wrote:
Will it be implemented in the future to upload a video as Unlisted or Private?
My YouTube API already supports these features, I just need to tie it into the outside program, and I'm a bit stumped as to how. If you have good advice on what the interface should look like for it, I'll add it. Edit: To get an idea how thorough my API is:
Language: cpp

class Permission { public: enum PERMISSIONS { PERM_ALLOWED, PERM_MODERATED, PERM_DENIED }; private: std::map<nlib::string, PERMISSIONS> m_commentGroup; PERMISSIONS m_comment; //This control indicates whether global users can add comments about the video. If you moderate comments, then you must approve new comments before they will be visible to other users. PERMISSIONS m_videoRespond; //This setting indicates whether users can add video responses to the video. If you moderate video responses, then you must approve new responses before they will be visible to other users. bool m_hidden; //The video will not be publicly visible on YouTube's website. The video can only be viewed by people personally selected by the video's owner. bool m_rate; //This control indicates whether users can rate the video. bool m_commentVote; //This setting indicates whether rate comments about the video. bool m_list; //This setting indicates whether a video can be listed in YouTube search results or displayed in any other way unless the user has a URL that links directly to the video. The permission for this setting will be denied if the video is either unlisted or private. If you set the value to denied for a public video, then that video will become an unlisted video. bool m_embed; //This setting indicates whether users can embed the video on third-party websites. bool m_syndicate; //This setting indicates whether YouTube can show the video on non-web platforms, such as mobile phones and televisions. public: Permission() : m_comment(PERM_ALLOWED), m_videoRespond(PERM_MODERATED), m_hidden(false), m_rate(true), m_commentVote(true), m_list(true), m_embed(true), m_syndicate(true) {} bool hidden() const { return(m_hidden); } bool rate() const { return(m_rate); } PERMISSIONS comment() const { return(m_comment); } bool commentVote() const { return(m_commentVote); } PERMISSIONS videoRespond() const { return(m_videoRespond); } bool list() const { return(m_list); } bool embed() const { return(m_embed); } bool syndicate() const { return(m_syndicate); } PERMISSIONS commentGroup(const nlib::string &group) const //If group is not found, the global comment setting is returned { auto d = m_commentGroup.find(group); return((d != m_commentGroup.end()) ? d->second : m_comment); } void setHidden(bool Hidden = true) { m_hidden = Hidden; } void setRate(bool Rate = true) { m_rate = Rate; } void setComment(PERMISSIONS Comment = PERM_ALLOWED) { m_comment = Comment; } void setCommentVote(bool CommentVote = true) { m_commentVote = CommentVote; } void setVideoRespond(PERMISSIONS VideoRespond = PERM_ALLOWED) { m_videoRespond = VideoRespond; } void setList(bool List = true) { m_list = List; } void setEmbed(bool Embed = true) { m_embed = Embed; } void setSyndicate(bool Syndicate = true) { m_syndicate = Syndicate; } void setCommentGroup(const nlib::string &group, PERMISSIONS Comment = PERM_ALLOWED) { m_commentGroup[group] = Comment; } void removeCommentGroup(const nlib::string &group) { m_commentGroup.erase(group); } nlib::string xml() const; };
Right now I'm just using the default constructor and not assigning anything. But all these options are assignable if they're tied to the outside interface.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
ALAKTORN
He/Him
Former player
Joined: 10/19/2009
Posts: 2527
Location: Italy
I don’t really understand… does this bypass the size/time limits of YT?
RachelB
She/Her
Player (129)
Joined: 12/3/2011
Posts: 1579
ALAKTORN wrote:
I don’t really understand… does this bypass the size/time limits of YT?
It bypasses youtube's uploader.
Post subject: Official Limits
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4037
rog wrote:
ALAKTORN wrote:
I don’t really understand… does this bypass the size/time limits of YT?
It bypasses youtube's uploader.
So does this mean videos uploaded through this are not re-encoded by YouTube, so there won't be any loss of video or audio quality in YouTube encodes?
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
CoolKirby wrote:
So does this mean videos uploaded through this are not re-encoded by YouTube, so there won't be any loss of video or audio quality in YouTube encodes?
rog wrote:
It bypasses youtube's uploader.
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4037
creaothceann wrote:
CoolKirby wrote:
So does this mean videos uploaded through this are not re-encoded by YouTube, so there won't be any loss of video or audio quality in YouTube encodes?
rog wrote:
It bypasses youtube's uploader.
That's it? It doesn't bypass YouTube's annoying re-encoding, reduce the time the video takes to upload or process, or anything like that? Then how does this program improve on the official YouTube uploader (besides large file support and resumable uploading)?
RachelB
She/Her
Player (129)
Joined: 12/3/2011
Posts: 1579
CoolKirby wrote:
creaothceann wrote:
CoolKirby wrote:
So does this mean videos uploaded through this are not re-encoded by YouTube, so there won't be any loss of video or audio quality in YouTube encodes?
rog wrote:
It bypasses youtube's uploader.
That's it? It doesn't bypass YouTube's annoying re-encoding, reduce the time the video takes to upload or process, or anything like that?
No.
Then how does this program improve on the official YouTube uploader (besides large file support and resumable uploading)?
Probably by not being a complete piece of a shit, but i haven't tried it, so i can't say for sure. I believe the main reason he wrote this was to allow publishers to upload videos to the new tasvideo channel though.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
rog wrote:
I believe the main reason he wrote this was to allow publishers to upload videos to the new tasvideo channel though.
The main reason is for scriptable uploads which I and we severely need. But on a side point, I've heard plenty laments about uploads not resuming right and crashing with YouTube's official uploader, or dying horribly on large files. If it can work flawlessly in those areas, I don't see why you need anything more than that.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
RachelB
She/Her
Player (129)
Joined: 12/3/2011
Posts: 1579
That makes sense too.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
I agree that the YT site uploader is crap, it took me 5 days once to upload a 1GB / 13minute video because something kept failing. Regarding the Unlisted/Private settings I am thinking that these settings are done as with the dir command in the cmd-set. And I am thinking of the /A attributes to that command. With dir you can write for example dir /ADH and it will show only hidden folders. (I spend too much time in cmd) So perhaps an --attributes (or -a for short) that can combine. Example -a[p/u/h][e][s] Meaning [private/unlisted/hidden][embed][syndicate] And if this option is not given, use the predefined values already given. I do not understand what CommentVote does, so I have not included it in the suggestion, but it should be there in the implementation obviously.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Thanks, I'll see if I can do something along those lines. In other news, we have our first real encode for a movie using my YouTube Uploader.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
Here's my command output running it: (Note that I put placeholder title/desc/tags and filled them out for real later)
D:\encodes>ytu\ytu speedygonzales-tas-ilari_youtube_crf0.0.mkv "2000M" "yt:stret
ch=4:3"
YouTube Uploader                                       Copyright (C) Nach 2012

File: D:\encodes\speedygonzales-tas-ilari_youtube_crf0.0.mkv
Size: 1438316871
 MD5: eb37c0fa507f4177f47c7e246735a87d

Please enter a description. Press Enter/Return thrice when you are done.
For more information, see http://tasvideos.org/2000M.html



      Title: 2000M
Description: For more information, see http://tasvideos.org/2000M.html
       Tags: yt:stretch=4:3

Continuation ID: 1
 1438316871/1438316871 [*************************] 100% 247.831 KB/s  0:00:00:00
 1438316871/1438316871 [*************************] 100% 222.231 KB/s  0:00:00:00
 1438316871/1438316871 [*************************] 100% 196.632 KB/s  0:00:00:00
 1438316871/1438316871 [*************************] 100% 171.031 KB/s  0:00:00:00
 1438316871/1438316871 [*************************] 100% 171.031 KB/s  0:00:00:00
 1438316871/1438316871 [*************************] 100% 171.031 KB/s  0:00:00:00
 1438316871/1438316871 [*************************] 100% 171.031 KB/s  0:00:00:00
 1438316871/1438316871 [*************************] 100% 171.031 KB/s  0:00:00:00

 URL: http://www.youtube.com/watch?v=1zQ6WTMhuIk
Of particular interest is how there are 8 lines of progress... Does that mean 7 restarts? I unfortunately wasn't watching at the very end, but i can tell that, at 95%+ done, there was only still the one line, at about 256KB/s. I find 7 restarts all crowded up at the end slightly suspicious.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
It would indicate 7 resumes, the question though is why would it be after it reached 100%? I imagine either a bug with cURL on Windows, or YouTube didn't give a response, and my automatic resumer needed to query YouTube for a confirmation 7 extra times - all after 100%. BTW, I'm working on an update which is even better, I hope to have it available later today.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Post subject: New Release
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
I updated the files with a new version. What's New:
  • Fixed a bug with piping a description introduced with cmd.exe compatibility.
  • Restructured the initial stages.
  • Field limitations are now enforced and error out early.
  • The uploading itself is now also done via HTTPS.
  • Error output is now a bit more verbose.
  • Usage information about tags is now clearer.
  • Added support to pass permission settings.
Here's the new usage:
  ytu [options] "path\to\video" "Title" "Tag1,Tag2"
  ytu [options] "path\to\video" "Title" "Tags" < "path\to\description.txt"
  ytu --continue <continuation>
  ytu --list

Options:
  -permission <perm>
              Permissions options are passes as a series of letters and words
              seperated by a :

              The following permissions are available (*denotes default):
              access: *public unlisted restricted
              rate: *allowed denied
              comment: *allowed moderated denied
              vote on comments: *allowed denied
              link video responses: allowed *moderated denied
              embed: *allowed denied
              syndicate: *allowed denied

              They are denoted as follows:
              a[p|u|r]
              r[a|d]
              c[a|m|d]
              v[a|d]
              l[a|m|d]
              e[a|d]
              s[a|d]

              You can also specify comment permissions per group:
              <group>=[a|m|d]

              Example: -permission au:cd:ed:coworkers=a:friends=m
              This would set the movie to unlisted, prevent embedding
              allow all comments from coworkers, some frome friends, and
              block comments from everyone else.
Thank you turska for the help in testing. Thank you Warepire for the ideas. I have new features in the pipeline, but they're not ready yet, so I decided to make an interim release with all these goodies for the time being.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
Cool, I will test this when I have something to upload.
Post subject: New Release
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
I updated the files with a new version. What's New:
  • Fixed a bug with using -permission and running ytu from a different path.
  • Added category parameter to choose one other than Games, this is now required, and makes previous examples invalid.
  • Added ability to modify metadata for a video.
Here's the new usage:
  ytu [options] <video> <title> <tags> <category>
  ytu [options] <video> <title> <tags> <category> < <description>
  ytu --continue <continuation>
  ytu --list

Tags: Use a comma seperated list.

Categories:
  1) Animals
  2) Autos
  3) Comedy
  4) Education
  5) Entertainment
  6) Film
  7) Games
  8) Howto
  9) News
  10) People
  11) Sports
  12) Tech
  13) Travel

Options:
  -update     Update an already uploaded video's metadata.
              When using this option, for video, specify a continuation id
              or video URL.

  -permission <perm>
              Permissions options are passes as a series of letters and words
              seperated by a :

              The following permissions are available (*denotes default):
              access: *public unlisted restricted
              rate: *allowed denied
              comment: *allowed moderated denied
              vote on comments: *allowed denied
              link video responses: allowed *moderated denied
              embed: *allowed denied
              syndicate: *allowed denied

              They are denoted as follows:
              a[p|u|r]
              r[a|d]
              c[a|m|d]
              v[a|d]
              l[a|m|d]
              e[a|d]
              s[a|d]

              You can also specify comment permissions per group:
              <group>=[a|m|d]
              Note: Specified group(s) must exist or your upload will fail.

              Example: -permission "au:cd:ed:coworkers=a:friends=m"
              This would set the movie to unlisted, prevent embedding
              allow all comments from coworkers, some frome friends, and
              block comments from everyone else.
About the new update features, for video, you specify either a Continuation ID, or a URL to a Youtube video. It can update videos in your account that were not uploaded by ytu. Note: Ytu will set the video metadata to exactly what you pass it. Ytu will not read the current metadata from the video off YouTube and try to merge anything.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
I just noticed that the progress bar goes crazy on files > 4GB. It still uploads fine, just the display is messed up, slight oversight on my part. I hope to have that fixed in the upcoming version, sorry.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Joined: 8/29/2006
Posts: 68
Nach, I discovered your undocumented "-end-world-hunger", "-cutify-cat", and "-rant-about-some-stupid-crap-no-one-cares-about" options. It really does do everything anyone could want from a youtube uploader. Edit: found a bug in "-end-world-hunger". I'm still hungry.
Post subject: Re: New Release
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
Nach wrote:
Permissions options are passes
Should be "passed", and maybe "Permissions"->"Permission".
Nach wrote:
as a series of letters and words seperated by a :
Should be "separated", and would look better with
by a colon (":").
(imo)
Brandon
He/Him
Editor, Player (191)
Joined: 11/21/2010
Posts: 914
Location: Tennessee
PS C:\Users\Administrator\Encodes\winytu> ./ytu.exe "C:\Users\Administrator\Encodes\Finished\SNES Spider-Man and the X-M en in Arcade's Revenge (USA) in 23-28.18 by jaysmad & Brandon Evans\fixed_youtube.mkv" "Arcade's Revenge" "TAS" 7 YouTube Uploader Copyright (C) Nach 2012 Please enter a description. Press Enter/Return thrice when you are done. Watch this fail! Title: Arcade's Revenge Tags: TAS Category: Games Description: Watch this fail! File: C:\Users\Administrator\Encodes\Finished\SNES Spider-Man and the X-Men in Arcade's Revenge (USA) in 23-2 8.18 by jaysmad & Brandon Evans\fixed_youtube.mkv Size: 3867649143 MD5: 9e700a0c991ac15474e2d2afcf06f556 Continuation ID: 10 Runtime error: Upload failed, 400: <DOCTYPE> <html> <meta> <meta> <title>Error 400 (Bad Request)!!1</title> <style> *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{mar gin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/error s/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration: none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0 }} </style> <a><img></a> <p>400. <ins>ThatΓÇÖs an error.</ins> <p>Your client has issued a malformed or illegal request. <ins>ThatΓÇÖs all we know.</ins>
All the best, Brandon Evans