Revisions

gist: 8477 Download_button fork
public
Description:
ubiquity script for previewing and downloading youtube flv files
Public Clone URL: git://gist.github.com/8477.git
tube-link.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
CmdUtils.CreateCommand({
  name: "tube-link",
  takes: {"url": noun_arb_text},
  homepage: "http://cameronjones.com/",
  author: { name: "Cameron Jones", email: "mcj@cameronjones.com"},
  contributors: ["Ayman Shamma"],
  license: "MPL",
  description: "Extracts YouTube video download link.",
  help: "Provides a download URL for downloading YouTube videos as FLV files.",
 
  preview: function( pblock, url ) {
    pblock.innerHTML = "";
    var myURL = url.text;
 
    if ( (!myURL) || (myURL == "") ) {
        myURL = Application.activeWindow.activeTab.document.location;
    }
 
    var ytre = /^http:\/\/www.youtube.com\/watch\?v=([^&#]+)/i;
 
    if (ytre.test(myURL)) {
 
      var videoID = RegExp.$1
      var params = {v:videoID};
 
      jQuery.get( "http://www.youtube.com/watch", params, function( html ) {
 
        var downlink = "http://youtube.com/get_video.php?video_id=" + videoID;
 
        // match video_id and t
        var tre = /"t": "([^\"]+)"/;
 
        if (tre.test(html)) {
          downlink += "&t=" + RegExp.$1;
        }
 
        var msg = '<embed src="http://www.youtube.com/v/${videoid}&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed><br><a href="${link}">Download Video</a>';
 
        var subs = {url: url.text, link:downlink, videoid:videoID};
 
        pblock.innerHTML = CmdUtils.renderTemplate( msg, subs );
      });
    }
    else {
      pblock.innerHTML = "Get YouTube Download Link";
    }
  },
 
  execute: function( url ) {
 
    var myURL = url.text;
 
    if ( (!myURL) || (myURL == "") ) {
        myURL = Application.activeWindow.activeTab.document.location;
    }
 
    var ytre = /^http:\/\/www.youtube.com\/watch\?v=(.+)$/i;
 
    if (ytre.test(myURL)) {
 
      var videoID = RegExp.$1
      var params = {v:videoID};
 
      jQuery.get( "http://www.youtube.com/watch", params, function( html ) {
 
        var downlink = "http://youtube.com/get_video.php?video_id=" + videoID;
 
        // match video_id and t
        var tre = /"t": "([^\"]+)"/;
 
        if (tre.test(html)) {
          downlink += "&t=" + RegExp.$1;
        }
 
        Application.activeWindow.activeTab.document.location = downlink;
      });
    }
  }
 
})