Apr 27 2012

Ripping YouTube closed captions from a video

Few days ago, I needed to download a complete video from YouTube including it’s subtitles.

There are many tools and browser plug-ins allowing you to download the video itself, just take a look at UserScripts. But I didn’t find any tool, that still works, which allows me to download the closed captions for a video.

I’ve decided to take a look at it myself. I’ve found the following video with closed-captions: http://youtu.be/zJOS0sV2a24 and started sniffing around.

Using chrome’s Development Tool, I’ve monitored the traffic to YouTube servers and found out the following requests:

Chrome's Development Tool

 

As you can see, there are two requests for a file called “timedtext” that caught my eyes immediately. The first request was a listing request, “Waiter, Gimme’ a menu of all the captions please”. YouTube’s player passes a lot of data in each of those request, But most of it is not needed. I’ve managed to reduce the request to the following fields:

http://www.youtube.com/api/timedtext?v=VIDEO-ID&expire=1&type=list

Where instead of VIDEO-ID you should write the video ID from the URL path. For example, in Randall Munroe’s lecture, the request will be:

http://www.youtube.com/api/timedtext?v=zJOS0sV2a24&expire=1&type=list

When I’ve opened the link in my browser I got the following XML in response:

<transcript_list docid="-3705456634442126482">
<track id="0" name="" lang_code="en" lang_original="English" lang_translated="English" lang_default="true"/>
</transcript_list>

The first and the last lines, don’t contain any interesting information. The second line, does. The second line tells us there are english closed caption for this video.

So, How do we get the captions?
That’s when the second request takes place. In the second request we actually ordered the specific captions of our choice, “Waiter, I would like the english captions please”.
Again, I’ve reduced the fields to the following request:

http://www.youtube.com/api/timedtext?v=VIDEO-ID&lang=LANGUAGE-CODE

Where the VIDEO-ID is the video identifier again, and the LANGUAGE-CODE is the lang_code attribute’s value from the list XML we requested earlier. For example, for our video and for english captions (The only one this video got) the request will be:

http://www.youtube.com/api/timedtext?v=zJOS0sV2a24&lang=en

And that’s it. This address contains the entire english captions of our video in a XML format.


Apr 12 2012

Remove Wolfram|Alpha Ads

Not so long ago, Wolfram|Alpha released the new “Pro” membership which include some cool analytics features. The problem is, They’ve put some annoying ads every few queries.

Don’t get me wrong, I have no problem with the idea of ads, and I believe that they deserve to get some money for their wonderful work. But, man, those ads are really annoying. You can’t ignore them because they are blocking everything.

I’ve wanted to make a quick user-script that will remove those ads, but after a quick search I’ve discovered someone already did.

You can find the userscript.org page of the script here. Or you can just install it by clicking on the following link:

This site is hosted by:

Jan 24 2012

Cellcom login information revealed – Part III

Well, I didn’t believe I will write another post in the subject so quick. But a bit after publishing my last post (reminder read this post first), I’ve went and changed my password to a random keystrokes. The interesting thing was, that my original password kept working! At first I thought that maybe I had a mistake and that I didn’t changed the password but then I tried to login with the same random keystrokes and it worked as well.

Apparently, You can’t  change your password, you can just add a new one. So if someone hacked your account, there is no way to lock him out.

Great security… just great….

Update: It seems like my old password doesn’t work anymore. It seems like It just worked for a few long minuets. I’ve tried reseting the password again while being logged in from another computer. It did not logged the other user out. It seems like I can keep the session forever.

Oh, And another cool thing, You can send 5 free text messages from the website, meaning you can impersonate the user and send messages that will seem to the receiver like the victim sent it.