forked from hoyois/plugin-to-html5
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFacebook.js
47 lines (40 loc) · 1.84 KB
/
Facebook.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
addKiller("Facebook", {
"canKill": function(data) {
return data.src.indexOf("www.facebook.com/v/") !== -1 || /^https?:\/\/(?:fbstatic-a\.akamaihd\.net|static\.[a-z]*\.fbcdn\.net|s-static\.[a-z]*\.facebook\.com|b\.static\.[a-z]*\.fbcdn\.net)\/rsrc\.php\/v[1-9]\/[a-zA-Z0-9_-]{2}\/r\/[a-zA-Z0-9_-]*\.swf/.test(data.src);
},
"process": function(data, callback) {
var flashvars = parseFlashVariables(data.params.flashvars);
if(flashvars.params) {
this.processParams(flashvars.params, callback);
} else { // Embedded video
var match = /facebook\.com\/v\/([^&?]+)/.exec(data.src);
if(!match) match = /\.swf.*[?&]v=([^&]*)/.exec(data.src);
if(match) this.processVideoID(match[1], callback);
}
},
"processParams": function(params, callback) {
var sources = [];
var video = JSON.parse(decodeURIComponent(params)).video_data[0];
if(video.hd_src) sources.push({"url": video.hd_src.replace(/\\\//g,"/"), "format": "HD MP4", "height": 720, "isNative": true});
if(video.sd_src) sources.push({"url": video.sd_src.replace(/\\\//g,"/"), "format": "SD MP4", "height": 240, "isNative": true});
if(sources.length === 0) return;
var posterURL;
if(video.thumbnail_src) posterURL = video.thumbnail_src.replace(/\\\//g,"/");
callback({"playlist": [{"poster": posterURL, "sources": sources}]});
},
"processVideoID": function(videoID, callback) {
var _this = this;
var xhr = new XMLHttpRequest();
var url = "https://www.facebook.com/video/video.php?v=" + videoID;
xhr.open("GET", url, true);
xhr.addEventListener("load", function() {
var callbackForEmbed = function(videoData) {
videoData.playlist[0].siteInfo = {"name": "Facebook", "url": url};
callback(videoData);
};
var match = /\[\"params\",\s*\"([^"]*)\"\]/.exec(xhr.responseText);
if(match) _this.processParams(match[1].replace(/\\u0025/g, "%"), callbackForEmbed);
}, false);
xhr.send(null);
}
});