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
|
// Vimperator plugin: 'Cooperation LDRize Mappings - Niconico Flv Fetcher'
// Version: 0.1
// Last Change: 03-Apr-2008. Jan 2008
// License: Creative Commons
// Maintainer: Trapezoid <trapezoid.g@gmail.com> - http://unsigned.g.hatena.ne.jp/Trapezoid
//
// Cooperation LDRize Mappings - Niconico Flv Fetcher for vimperator0.6.*
//
(function(){
function LDRizeCooperationNiconicoFlvFetcher(LDRizeCooperation){
var NiconicoFlvFetcher = [
{
pattern: 'http://www.nicovideo.jp/watch/*',
handler: function(url,title){
const nicoApiEndPoint = "http://www.nicovideo.jp/api/getflv?v=";
const nicoWatchEndPoint = "http://www.nicovideo.jp/watch/";
var videoId = url.match(/\wm\d+/)[0];
httpGET(nicoApiEndPoint + videoId,function(apiResult){
var flvUrl = decodeURIComponent(apiResult.match(/url=(.*?)&/)[1]);
httpGET(nicoWatchEndPoint + videoId,function(watchPage){
try{
var DownloadManager = Cc["@mozilla.org/download-manager;1"]
.getService(Ci.nsIDownloadManager);
var WebBrowserPersist = Cc["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
.createInstance(Ci.nsIWebBrowserPersist);
var sourceUri = makeURI(flvUrl,null,null);
var file = DownloadManager.userDownloadsDirectory;
file.appendRelativePath(title + ".flv");
var fileUri = makeFileURI(file);
var download = DownloadManager.addDownload(0, sourceUri, fileUri, title + ".flv",
null, null, null, null, WebBrowserPersist);
WebBrowserPersist.progressListener = download;
WebBrowserPersist.saveURI(sourceUri, null, null, null, null, file);
}catch(e){log(e);liberator.echoerr(e)}
});
});
},
wait: 5000
}
]
LDRizeCooperation.convertHandlerInfo(NiconicoFlvFetcher);
LDRizeCooperation.handlerInfo.unshift(NiconicoFlvFetcher[0]);
}
if(liberator.plugins.LDRizeCooperation == undefined){
liberator.plugins.watch('LDRizeCooperation',function(id,oldValue,newValue){
liberator.plugins.unwatch('LDRizeCooperation');
LDRizeCooperationNiconicoFlvFetcher(newValue);
return newValue;
});
}else{
LDRizeCooperationNiconicoFlvFetcher(liberator.plugins.LDRizeCooperation);
}
function httpGET(uri,callback){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if(xhr.status == 200)
callback.call(this,xhr.responseText);
else
throw new Error(xhr.statusText)
}
};
xhr.open("GET",uri,true);
xhr.send(null);
}
})();
|