forked from uxebu/plugin-to-html5
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Vimeo.js
59 lines (50 loc) · 2.43 KB
/
Vimeo.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
addKiller("Vimeo", {
"canKill": function(data) {
return data.src.indexOf("vimeo.com/moogaloop") !== -1 || data.src.indexOf("vimeocdn.com/p/flash/moogalo") !== -1;
},
"process": function(data, callback) {
var videoID;
if(data.params.flashvars) videoID = parseFlashVariables(data.params.flashvars).clip_id;
if(!videoID) {
var match = /clip_id=([^&]+)/.exec(data.src);
if(match) videoID = match[1];
}
if(!videoID) return;
var xhr = new XMLHttpRequest();
xhr.open('GET', "http://www.vimeo.com/moogaloop/load/clip:" + videoID + "/local/", true);
xhr.onload = function() {
var xml = xhr.responseXML;
var url = "http://www.vimeo.com/moogaloop/play/clip:" + videoID + "/" + xml.getElementsByTagName("request_signature")[0].textContent + "/" + xml.getElementsByTagName("request_signature_expires")[0].textContent + "/?q=";
var handleMIMEType = function(MIMEType) {
var isNative = MIMEType === "video/mp4";
var sources = [];
if(xml.getElementsByTagName("isHD").length > 0 && xml.getElementsByTagName("isHD")[0].textContent === "1") {
var height = 720;
if(xml.getElementsByTagName("height")[0] && xml.getElementsByTagName("height")[0].textContent === "1080") height = 1080;
if(isNative || canPlayFLV) sources.push({"url": url + "hd", "format": height + "p " + (isNative ? "MP4" : "FLV"), "height": height, "isNative": isNative});
}
if(isNative || canPlayFLV) sources.push({"url": url + "sd", "format": "360p " + (isNative ? "MP4" : "FLV"), "height": 360, "isNative": isNative});
var handleMIMEType = function(MIMEType) {
if(MIMEType === "video/mp4") sources.push({"url": url + "mobile", "format": "Mobile MP4", "height": 240, "isNative": true});
var title, posterURL, siteInfo;
if(xml.getElementsByTagName("caption").length > 0) {
title = xml.getElementsByTagName("caption")[0].textContent;
}
if(xml.getElementsByTagName("thumbnail").length > 0) {
posterURL = xml.getElementsByTagName("thumbnail")[0].textContent;
}
if(data.location.indexOf("vimeo.com/") === -1 || data.location === "http://vimeo.com/" || data.location.indexOf("player.vimeo.com/") !== -1) siteInfo = {"name": "Vimeo", "url": "http://vimeo.com/" + videoID};
callback({"playlist": [{
"siteInfo": siteInfo,
"title": title,
"poster": posterURL,
"sources": sources
}]});
};
getMIMEType(url + "mobile", handleMIMEType);
};
getMIMEType(url + "sd", handleMIMEType);
};
xhr.send(null);
}
});