May 19 2012

LIMSUP – Real time LaTeX collaboration

Today, I’ve released the first beta of LIMSUP – a online LaTeX editor supporting real time collaboration.

It’s the first version, so it is probably very buggy, hope you will let me know about bugs.

The idea led to the development of the product was the need to take notes during lectures. As most of you know, I’m taking notes during most of the lectures I’m attending using my computer and latex. The problem is, that sometime it is hard to follow, and sometimes different people have different insights.
So, using LIMSUP, several people can take notes together. One will be the lead writer and the others will fix mistakes and add remarks.

Hope you will find it as useful as I. And hopefully I will continue the development and documentation.


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.

This site is hosted by:

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: