summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/xvideoservicethief/files/xvideoservicethief-2.4.1-youtube-api.patch')
-rw-r--r--media-video/xvideoservicethief/files/xvideoservicethief-2.4.1-youtube-api.patch205
1 files changed, 0 insertions, 205 deletions
diff --git a/media-video/xvideoservicethief/files/xvideoservicethief-2.4.1-youtube-api.patch b/media-video/xvideoservicethief/files/xvideoservicethief-2.4.1-youtube-api.patch
deleted file mode 100644
index 7bffe12f0d0d..000000000000
--- a/media-video/xvideoservicethief/files/xvideoservicethief-2.4.1-youtube-api.patch
+++ /dev/null
@@ -1,205 +0,0 @@
---- trunk/resources/services/youtube/youtube.js 2010/09/02 11:52:07 911
-+++ trunk/resources/services/youtube/youtube.js 2012/05/08 17:34:53 975
-@@ -3,7 +3,7 @@
- * This file is part of xVideoServiceThief,
- * an open-source cross-platform Video service download
- *
--* Copyright (C) 2007 - 2010 Xesc & Technology
-+* Copyright (C) 2007 - 2012 Xesc & Technology
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
-@@ -25,9 +25,9 @@
-
- function RegistVideoService()
- {
-- this.version = "2.1.5";
-+ this.version = "3.0.6";
- this.minVersion = "2.0.0a";
-- this.author = "Xesc & Technology 2009";
-+ this.author = "Xesc & Technology 2012";
- this.website = "http://www.youtube.com/";
- this.ID = "youtube.com";
- this.caption = "YouTube";
-@@ -38,7 +38,6 @@
- function getVideoInformation(url)
- {
- const URL_YOUTBE = "http://www.youtube.com/watch?v=%1";
-- const HD_VIDEO_RES = "22";
- // init result
- var result = new VideoDefinition();
- // default URL
-@@ -52,35 +51,112 @@
- embededID = strRemove(embededID, 0, embededID.lastIndexOf("/v/") + 3);
- youTubeURL = strFormat(URL_YOUTBE, embededID);
- }
-+ // cehck if is an embeded video (v2)
-+ else if (youTubeURL.toString().indexOf("/embed/") != -1)
-+ {
-+ var embededID = copyBetween(youTubeURL + "?", "/embed/", "?");
-+ youTubeURL = strFormat(URL_YOUTBE, embededID);
-+ }
- // download webpage
- var http = new Http();
- var html = http.downloadWebpage(youTubeURL);
-+ // get cookies
-+ result.cookies = http.getCookies("|");
- // get the video title
- result.title = copyBetween(html, "<title>", "</title>");
- result.title = normalizeSpaces(result.title);
-+ result.title = strReplace(result.title, "\n", "");
-+ result.title = strReplace(result.title, " - YouTube", "");
- // check if this video need a login
-- result.needLogin = result.title == "Broadcast Yourself.";
-+ result.needLogin = strIndexOf(html, 'id="verify-details"') != -1;
- // if we can continue (no loggin needed)
- if (result.needLogin) return result;
-- // get the video info block
-- var dirtyUrl = copyBetween(html, "fmt_stream_map=", "34%7Chttp");
-- // we have an empty "dirtyUrl"?? if yes then we give it a second try
-- if (dirtyUrl == "") dirtyUrl = copyBetween(html, "fmt_url_map=", "&") + "&";
-- // get the video resolution
-- var vidRes = getToken(dirtyUrl, "%7C", 0);
-- // check if is a HD_VIDEO_RES (for HD videos the extension is mp4)
-- if (vidRes == HD_VIDEO_RES) result.extension = ".mp4";
-- // get the video url
-- result.URL = getToken(dirtyUrl, "%7C", 1);
-- // convert the hex codes to ascii
-- result.URL = cleanUrl(result.URL);
-- // remove the last "," and replace it with an "&" (if is needed)
-- if (strLastIndexOf(result.URL, "&") < strLastIndexOf(result.URL, ","))
-- result.URL = strRemove(result.URL, strLastIndexOf(result.URL, ","), result.URL.toString().length) + "&";
-+ // get the video URL and extension
-+ var videoInfo = getVideoUrlAndExtension(html);
-+ result.URL = videoInfo.url;
-+ result.extension = videoInfo.extension;
- // return the video information
- return result;
- }
-
-+function getVideoUrlAndExtension(html)
-+{
-+ // init result
-+ var result = { url:null, extension:null };
-+ // get the flashVars value
-+ var flashVars = "?" + copyBetween(html, 'flashvars=\\"', '\\"');
-+ // convert each "&amp;" into "&"
-+ flashVars = strReplace(flashVars, "\\u0026amp;", "&");
-+ // get an array with all fmt_stream_map values
-+ var fmt_stream_map_arr = splitString(getUrlParam(flashVars, "url_encoded_fmt_stream_map"), "url%3D", false);
-+ // default selected video quality
-+ var selectedFormat = -1;
-+ // detect the better quality
-+ for (var n = 0; n < fmt_stream_map_arr.length && selectedFormat == -1; n++)
-+ {
-+ fmt_stream_map_arr[n] = "?url=" + cleanUrl(fmt_stream_map_arr[n]).toString();
-+ // remove the last "," (if exists)
-+ if (strLastIndexOf(fmt_stream_map_arr[n], ",") == fmt_stream_map_arr[n].toString().length - 1)
-+ fmt_stream_map_arr[n] = strRemove(fmt_stream_map_arr[n], fmt_stream_map_arr[n].toString().length - 1, 1);
-+ // check video type
-+ var vtype = getToken(getUrlParam(fmt_stream_map_arr[n], "type"), ";", 0);
-+ // is known format?
-+ if (vtype == "video/x-flv" || vtype == "video/mp4")
-+ {
-+ selectedFormat = n;
-+ // configure video extension
-+ result.extension = extensionFromVideoType(vtype);
-+ }
-+ }
-+ // no format selected?
-+ if (selectedFormat == -1) selectedFormat = 0;
-+ // get the host url
-+ var urlHost = getToken(fmt_stream_map_arr[selectedFormat], "?", 1);
-+ urlHost = strReplace(urlHost, "url=", "");
-+ // leave only the parameters
-+ fmt_stream_map_arr[selectedFormat] = getToken(fmt_stream_map_arr[selectedFormat], "?", 2);
-+ // get url parts
-+ var urlParts = splitString(fmt_stream_map_arr[selectedFormat], "&", false);
-+ // set the url host
-+ result.url = urlHost + "?";
-+ // build the initial url
-+ for (var n = 0; n < urlParts.length; n++)
-+ {
-+ var pname = getToken(urlParts[n], "=", 0).toString();
-+ var pvalue = getToken(urlParts[n], "=", 1).toString();
-+ var duplicatedPname = strIndexOf(result.url, pname + "=") != -1;
-+ // is an excluded param?
-+ if (!duplicatedPname && pname != "fexp" && pname != "quality" && pname != "fallback_host" && pname != "type")
-+ result.url += pname + "=" + pvalue + "&";
-+ }
-+ // remove the last &
-+ if (strLastIndexOf(result.url, "&") == result.url.length - 1)
-+ urlInitial = strRemove(result.url, result.url.length - 1, 1);
-+ // get extra (optional) params
-+ var ptchn = getUrlParam(flashVars, "ptchn");
-+ if (ptchn != "") result.url += "ptchn=" + ptchn + "&";
-+ var ptk = getUrlParam(flashVars, "ptk");
-+ if (ptk != "") result.url += "ptk=" + ptk;
-+ // configure the video extension (if is not yet configured)
-+ if (!result.extension)
-+ {
-+ var vtype = getToken(getUrlParam(fmt_stream_map_arr[selectedFormat], "type"), ";", 0);
-+ // configure video extension
-+ result.extension = extensionFromVideoType(vtype);
-+ }
-+ // return
-+ return result;
-+}
-+
-+function extensionFromVideoType(vtype)
-+{
-+ if (vtype == "video/x-flv") return ".flv";
-+ if (vtype == "video/mp4") return ".mp4";
-+ if (vtype == "video/webm") return ".webm";
-+ // default extension
-+ return ".flv";
-+}
-+
- /*
- This function "normalizeSpaces(str)" will be deprecated on next xVST version
- and replaced with the new "simplifyString(str)" function (added in xVST 2.3.1)
-@@ -99,9 +175,11 @@
- function searchVideos(keyWord, pageIndex)
- {
- const URL_SEARCH = "http://www.youtube.com/results?search_query=%1&page=%2&hl=%3";
-- const HTML_SEARCH_START = "<!-- start search results -->";
-- const HTML_SEARCH_FINISH = "<!-- end search results -->";
-- const HTML_SEARCH_SEPARATOR = '<div class="video-entry">';
-+ const HTML_SEARCH_START = '<div id="search-results">';
-+ const HTML_SEARCH_FINISH = '<div id="search-pva-content">';
-+ const HTML_SEARCH_SEPARATOR = '<div class="thumb-container">';
-+ const HTML_SEARCH_SUMMARY_START = '<p class="num-results">';
-+ const HTML_SEARCH_SUMMARY_END = '</p>';
- // replace all spaces for "+"
- keyWord = strReplace(keyWord, " ", "+");
- // init search results object
-@@ -110,7 +188,7 @@
- var http = new Http();
- var html = http.downloadWebpage(strFormat(URL_SEARCH, keyWord, pageIndex, searchResults.getUserLanguage()));
- // get the search summary
-- var summary = copyBetween(html, '<div id="search-num-results" class="name">', '</div>');
-+ var summary = copyBetween(html, HTML_SEARCH_SUMMARY_START, HTML_SEARCH_SUMMARY_END);
- searchResults.setSummary(cleanSummary(summary));
- // get results html block
- var htmlResults = copyBetween(html, HTML_SEARCH_START, HTML_SEARCH_FINISH);
-@@ -148,14 +226,17 @@
- var tmp, videoUrl, imageUrl, title, description, duration, rating;
- // get video url
- videoUrl = VIDEO_URL + copyBetween(html, 'href="', '"');
-- // get title and image url
-+ // get image url
- tmp = copyBetween(html, '<img', '>') ;
-- title = copyBetween(tmp, 'title="', '"');
- imageUrl = copyBetween(tmp, 'src="', '"');
- if (strIndexOf(imageUrl, "default.jpg") == -1) // if is not a "default.jpg"...
- imageUrl = copyBetween(tmp, 'thumb="', '"');
-+ imageUrl = "http:" + imageUrl;
-+ // get video title
-+ title = copyBetween(html, 'dir="ltr" title="', '"');
- // get video description
-- description = copyBetween(html, 'class="video-description">', '</div>');
-+ description = copyBetween(html, '<p id="video-description-', '</p>');
-+ description = copyBetween(description + '|', '>', '|');
- // get video duration
- duration = convertToSeconds(copyBetween(html, '<span class="video-time">', '</span>'));
- // get rating