Created
February 5, 2009 03:57
-
-
Save Yasushi/58540 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* flvdl - FLV downloader. | |
* This is fork of | |
* http://gist.github.com/53229 | |
*/ | |
+function(flvdl_siteinfo){ | |
CmdUtils.CreateCommand({ | |
name: "flvdl", | |
description: "FLV Downloader.", | |
icon: "chrome://ubiquity/skin/icons/favicon.ico", | |
_video_title: function(x, doc){ | |
return !x ? "" : jQuery(flvdl_siteinfo[x].vttl, doc.body).text(); | |
}, | |
_siteinfo_key : function(doc){ | |
var uri = Utils.url(doc.documentURI); | |
for(var x in flvdl_siteinfo) | |
if(uri.host.match(flvdl_siteinfo[x].host)) | |
return x; | |
return; | |
}, | |
preview: function(pb, inp){ | |
var doc = CmdUtils.getDocument(); | |
var x = this._siteinfo_key(doc); | |
var title = this._video_title(x, doc); | |
pb.innerHTML = !title | |
? "<h3><img src='"+this.icon+"'> could'nt find FLV movie.</h3>" | |
: '<h3><img src="'+flvdl_siteinfo[x].icon+'"> Download \"'+title+'\"</h3>'; | |
}, | |
execute: function(){ | |
var doc = CmdUtils.getDocumentInsecure(); | |
var x = this._siteinfo_key(doc); | |
var title = this._video_title(x, doc); | |
if(!title){ | |
displayMessage({icon: this.icon, title: this.name, | |
text: "could'nt find FLV movie."}); | |
return; | |
} | |
var filepicker = Cc['@mozilla.org/filepicker;1'] | |
.createInstance(Ci.nsIFilePicker); | |
filepicker.init(CmdUtils.getWindow(), | |
"download FLV movie", | |
Ci.nsIFilePicker.modeSave); | |
filepicker.defaultString = title + ".flv"; | |
if(filepicker.show() == Ci.nsIFilePicker.returnCancel) | |
return; | |
var targetURI = Cc['@mozilla.org/network/io-service;1'] | |
.getService(Ci.nsIIOService) | |
.newURI(flvdl_siteinfo[x].vuri(doc), null, null); | |
var dm = Cc["@mozilla.org/download-manager;1"] | |
.getService(Ci.nsIDownloadManager); | |
var persist = Cc["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"] | |
.createInstance(Ci.nsIWebBrowserPersist); | |
persist.progressListener = dm.addDownload( | |
0, targetURI,filepicker.fileURL, filepicker.file.leafName, | |
null, null, null, null, persist); | |
persist.saveURI(targetURI, null, null, null, null, filepicker.file); | |
}, | |
contributors: ["powchin".link("http://tako3.com/search/powchin")] | |
}); | |
}({ | |
youtube: { | |
icon: "http://s.ytimg.com/yt/favicon-vfl1123.ico", | |
host: "youtube\\.com", | |
vttl: "#watch-vid-title h1", | |
vuri: function(doc){ | |
var uri = Utils.url(doc.documentURI); | |
if(!uri.path.match("[?&]v=([^&]+)")) | |
return; | |
var vid = RegExp.$1; | |
var params = jQuery("#movie_player", doc.body).attr("flashvars").split("&"); | |
var t,fmt; | |
for(var i in params) { | |
if(!t && params[i].match("^t=(.*)")) | |
t = RegExp.$1; | |
if(!fmt && params[i].match("^fmt_map=(\\d+)")) | |
fmt = RegExp.$1; | |
} | |
return "http://www.youtube.com/get_video?video_id=" | |
+ vid + "&t=" + t + "&fmt=" + fmt; | |
}, | |
}, | |
niconico: { | |
icon: "http://www.nicovideo.jp/img/favicon.ico", | |
host: "nicovideo\\.jp", | |
vttl: "#des_2 h1 a", | |
vuri: function(doc){ | |
if(!Utils.url(doc.documentURI) | |
.spec.match("nicovideo\\.jp/watch/(.*)$")) | |
return; | |
var api = "http://www.nicovideo.jp/api/getflv?as3=1&v=" + RegExp.$1; | |
return unescape( | |
/\&url=(.*?)\&/.exec( | |
jQuery.ajax({url: api, async: false}) | |
.responseText)[1]); | |
}, | |
} | |
/* templte | |
key: { // Set as you like. | |
icon: "", // This will be shown in preview. | |
host: "", // Host name. | |
vttl: "", // Css selector of this video's title. | |
vuri: function(){}, // Decides flv resource's uri. | |
} | |
*/ | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment