Fixes #1345 Commented out the techcrunch .flv download since it no longer functions, fixed the multiple results xpaths

This commit is contained in:
Matt Burton 2009-02-21 23:37:33 +00:00
parent 4d1081be1a
commit 1e2a6f5473

View File

@ -2,13 +2,13 @@
"translatorID":"d3b1d34c-f8a1-43bb-9dd6-27aa6403b217", "translatorID":"d3b1d34c-f8a1-43bb-9dd6-27aa6403b217",
"translatorType":4, "translatorType":4,
"label":"YouTube", "label":"YouTube",
"creator":"Sean Takats and Michael Berkowitz", "creator":"Sean Takats and Michael Berkowitz and Matt Burton",
"target":"https?://[^/]*youtube\\.com\\/", "target":"https?://[^/]*youtube\\.com\\/",
"minVersion":"1.0.0rc4", "minVersion":"1.0.0rc4",
"maxVersion":"", "maxVersion":"",
"priority":100, "priority":100,
"inRepository":true, "inRepository":true,
"lastUpdated":"2009-01-08 08:19:07" "lastUpdated":"2009-02-21 18:19:07"
} }
function detectWeb(doc, url){ function detectWeb(doc, url){
@ -17,23 +17,26 @@ function detectWeb(doc, url){
if (prefix == 'x') return namespace; else return null; if (prefix == 'x') return namespace; else return null;
} : null; } : null;
var xpath = '//input[@type="hidden" and @name="video_id"]'; var xpath = '//input[@type="hidden" and @name="video_id"]';
if(doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { if(doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
return "videoRecording"; return "videoRecording";
} }
if (doc.evaluate('//div[@class="vtitle"]/a[@class="vtitlelink" and contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){ //Search results
if (doc.evaluate('//div[@class="video-long-title"]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){
return "multiple"; return "multiple";
} }
if (doc.evaluate('//div[starts-with(@class, "vtitle")]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){ //playlists
if (doc.evaluate('//div[starts-with(@class, "title")]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){
return "multiple"; return "multiple";
} }
// still used?
if (doc.evaluate('//div[@class="vltitle"]/div[@class="vlshortTitle"]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){ if (doc.evaluate('//div[@class="vltitle"]/div[@class="vlshortTitle"]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){
return "multiple"; return "multiple";
} }
} }
function doWeb(doc, url){ function doWeb(doc, url){
var namespace = doc.documentElement.namespaceURI; var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) { var nsResolver = namespace ? function(prefix) {
@ -54,13 +57,16 @@ function doWeb(doc, url){
// multiple videos // multiple videos
var items = new Object(); var items = new Object();
var videoRe = /\/watch\?v=([a-zA-Z0-9-_]+)/; var videoRe = /\/watch\?v=([a-zA-Z0-9-_]+)/;
// search results // search results and community/user pages
if (elmt = doc.evaluate('//div[@class="vtitle"]/a[@class="vtitlelink" and contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){ if (elmt = doc.evaluate('//div[@class="video-long-title"]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){
elmts = doc.evaluate('//div[@class="vtitle"]/a[@class="vtitlelink" and contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null); elmts = doc.evaluate('//div[@class="video-long-title"]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null);
// categories and community pages and user pages and browse pages }
} else if (doc.evaluate('//div[starts-with(@class, "vtitle")]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){ // playlists
elmts = doc.evaluate('//div[starts-with(@class, "vtitle")]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null); else if (doc.evaluate('//div[starts-with(@class, "title")]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){
} else if (doc.evaluate('//div[@class="vltitle"]/div[@class="vlshortTitle"]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){ elmts = doc.evaluate('//div[starts-with(@class, "title")]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null);
}
// still used?
else if (doc.evaluate('//div[@class="vltitle"]/div[@class="vlshortTitle"]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){
elmts = doc.evaluate('//div[@class="vltitle"]/div[@class="vlshortTitle"]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null); elmts = doc.evaluate('//div[@class="vltitle"]/div[@class="vlshortTitle"]/a[contains(@href, "/watch?v=")]', doc, nsResolver, XPathResult.ANY_TYPE, null);
} }
while (elmt = elmts.iterateNext()){ while (elmt = elmts.iterateNext()){
@ -103,7 +109,7 @@ function getData(ids, host){
var title = ""; var title = "";
var title = xml..media_title[0].text().toString(); var title = xml..media_title[0].text().toString();
if (xml..media_title.length()){ if (xml..media_title.length()){
var title = Zotero.Utilities.cleanString(xml..media_title[0].text().toString()); var title = Zotero.Utilities.trimInternal(xml..media_title[0].text().toString());
if (title == ""){ if (title == ""){
title = " "; title = " ";
} }
@ -136,9 +142,10 @@ function getData(ids, host){
if (xml..media_description.length()){ if (xml..media_description.length()){
newItem.abstractNote = xml..media_description[0].text().toString(); newItem.abstractNote = xml..media_description[0].text().toString();
} }
/*
//temporary fix for downloads using techcrunch //temporary fix for downloads using techcrunch
var techcrunchurl = "http://www.techcrunch.com/ytdownload3.php?url="+encodeURIComponent(newItem.url)+"&submit=Get+Video"; var techcrunchurl = "http://www.techcrunch.com/ytdownload3.php?url="+encodeURIComponent(newItem.url)+"&submit=Get+Video";
Zotero.debug(techcrunchurl);
Zotero.Utilities.HTTP.doGet(techcrunchurl, function(text) { Zotero.Utilities.HTTP.doGet(techcrunchurl, function(text) {
var flv = text.match(/HREF='([^']+)'/); var flv = text.match(/HREF='([^']+)'/);
if (flv[1]){ if (flv[1]){
@ -153,7 +160,9 @@ function getData(ids, host){
} }
newItem.complete(); newItem.complete();
}, function() {Zotero.done();}); }, function() {Zotero.done();});
*/
newItem.complete();
Zotero.done();
}); });
Zotero.wait(); Zotero.wait();
} }
}