[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: =?utf-8?q?=5Bplasma-mediacenter=5D_dataengines=3A_addons_improve?=
From: Onur-Hayri Bakici <thehayro () gmail ! com>
Date: 2011-03-31 17:49:52
Message-ID: 20110331174952.1980AA60A9 () git ! kde ! org
[Download RAW message or body]
Git commit af2bc4f6ce2898e29a27473ca05c69e15213a4fc by Onur-Hayri Bakici.
Committed on 31/03/2011 at 19:24.
Pushed by bakici into branch 'master'.
addons improved
M +70 -44 dataengines/addons/blip/contents/code/main.js
M +93 -136 dataengines/addons/flickr/contents/code/main.js
M +57 -39 dataengines/addons/metacafe/contents/code/main.js
M +361 -206 dataengines/addons/photobucket/contents/code/main.js
M +86 -131 dataengines/addons/picasa/contents/code/main.js
M +125 -50 dataengines/addons/veoh/contents/code/main.js
A +25 -0 dataengines/addons/veoh/metadata.desktop [License: UNKNOWN] *
M +104 -76 dataengines/addons/youtube/contents/code/main.js
M +1 -1 dataengines/addons/youtube/metadata.desktop
M +32 -13 dataengines/javascript/service/contents/code/mediaapi.js
M +7 -1 dataengines/javascript/service/contents/code/mediaservice.js
M +21 -3 dataengines/javascript/service/contents/code/stdutils.js
M +0 -1 dataengines/javascript/service/contents/services/provider.operations \
The files marked with a * at the end have a non valid license. Please read: \
http://techbase.kde.org/Policies/Licensing_Policy and use the headers which are \
listed at that page.
http://commits.kde.org/plasma-mediacenter/af2bc4f6ce2898e29a27473ca05c69e15213a4fc
diff --git a/dataengines/addons/blip/contents/code/main.js \
b/dataengines/addons/blip/contents/code/main.js index 2e93c59..f497f69 100644
--- a/dataengines/addons/blip/contents/code/main.js
+++ b/dataengines/addons/blip/contents/code/main.js
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright 2010 by Onur-Hayri Bakici <thehayro@gmail.com *
+ * Copyright 2010, 2011 by Onur-Hayri Bakici <thehayro@gmail.com *
* *
* 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 *
@@ -23,20 +23,27 @@ function Blip()
{
print("Hello blip");
this.baseUrl = "http://www.blip.tv/";
+ this.name = "blip";
blipObject = this;
}
Blip.prototype.searchMedia = function(queryParams)
{
- var query = queryParams['text'];
- if (query === "" || typeof query === "undefined")
- {
- print("no query defined");
- return;
- }
- print(query);
+ var text = queryParams['text'];
+ var maxResults = queryParams['max-results'];
+ var page = queryParams['page'];
+
+ if (maxResults != "")
+ outputWarningMessage(this.name, "max-results", WarningTypes[PARAMIGNORED]);
+ if (page != "")
+ outputWarningMessage(this.name, "page", WarningTypes[PARAMIGNORED]);
- var url = this.baseUrl + "search/view/?search=" + query + "&skin=api";
+ var url = buildUrl(this.baseUrl + "search/view/",
+ {
+ "search" : text,
+ "skin": "api"
+ }
+ );
print(url);
var result = "";
@@ -52,55 +59,64 @@ Blip.prototype.searchMedia = function(queryParams)
var objDom = new XMLDoc(result, xmlError);
var objDomTree = objDom.docNode;
- //blip tv has an inconsisten return of errors
+ //blip tv has an inconsisties return of errors
if (objDomTree.getElements("notice")[0] != null)
{
- setData(blipObject.toString(), "Error", \
objDomTree.getElements("notice")[0].getText()); + \
outputErrorMessage(blipObject.name, "", \
objDomTree.getElements("notice")[0].getText(), ErrorTypes[INTERNALERROR]); return;
}
- /*if (blipObject.isErrorMessage(objDomTree))
- return;*/
+ if (blipObject.isErrorMessage(objDomTree))
+ return;
var photoNodes = objDomTree.getElements("payload")[0].getElements("asset");
if (photoNodes.length == 0)
- print("photonodes is empty");
+ {
+ outputErrorMessage(blipObject.name, "", text, ErrorTypes[NORESULTS]);
+ return;
+ }
for (var i = 0; i < photoNodes.length; i++)
{
- try{
- //get only the first entry of the media list
- var mediaItem = \
photoNodes[i].getElements("mediaList")[0].getElements("media")[0];
- var webmedia = new WebMedia();
- webmedia.type = MediaType.video;
-
- webmedia.id = photoNodes[i].getElements("id")[0].getText();
-
- webmedia.title = photoNodes[i].getElements("title")[0].getText();
- webmedia.description = photoNodes[i].getElements("description")[0].getText();
-
- var tagItems = photoNodes[i].getElements("tags")[0].getElements("string");
- for (var j = 0; j < tagItems.length; ++j)
- {
- webmedia.keywords[j] = tagItems[j].getText();
- }
-
- webmedia.author = \
photoNodes[i].getElements("createdBy")[0].getElements("login")[0].getText();
- webmedia.published = new \
Date(photoNodes[i].getElements("modified")[0].getText());
- webmedia.link = mediaItem.getElements("link")[0].getAttribute("href");
- webmedia.height = mediaItem.getElements("height")[0].getText();
- webmedia.width = mediaItem.getElements("width")[0].getText();
- webmedia.size = mediaItem.getElements("size")[0].getText();;
- // webmedia.thumbnailLink = "http://farm" + farm + ".static.flickr.com/" + \
server + "/" + webmedia.id + "_" + secret + "_t.jpg";
- //MediaDataCollection.push(webmedia);
- setData(webmedia.id, webmedia.toArray());
+
+ //get only the first entry of the media list
+ var mediaItem = photoNodes[i].getElements("mediaList")[0].getElements("media");
+ var webmedia = new WebMedia();
+ webmedia.type = MediaTypes[VIDEO];
+
+ webmedia.id = getID();
+ webmedia.providerSpecificID = photoNodes[i].getElements("id")[0].getText();
+ webmedia.provider = blipObject.name;
+ webmedia.title = photoNodes[i].getElements("title")[0].getText();
+ webmedia.description = photoNodes[i].getElements("description")[0].getText();
+
+ var tagItems = photoNodes[i].getElements("tags")[0].getElements("string");
+ for (var j = 0; j < tagItems.length; j++)
+ {
+ webmedia.keywords[j] = tagItems[j].getText();
}
- catch(e)
+
+ var webRoleItem = null;
+ // get the "web"-role from the video
+ for (var j = 0; j < mediaItem; j++)
{
- print("A problem occured while parsing:" + e.message);
+ if (mediaItem[j].getElements("role")[0].getText() == "Web")
+ webRoleItem = mediaItem[j];
}
+ // "web"-role not found. Taking the first one
+ webRoleItem = mediaItem[0];
+ webmedia.user = photoNodes[i].getElements("createdBy")[0].getElements("login")[0].getText();
+ webmedia.published = new \
Date(parseInt(photoNodes[i].getElements("timestamp")[0].getText())); + \
webmedia.updated = new \
Date(parseInt(photoNodes[i].getElements("modified")[0].getText())); + webmedia.link \
= webRoleItem.getElements("link")[0].getAttribute("href"); + webmedia.height = \
webRoleItem.getElements("height")[0].getText(); + webmedia.width = \
webRoleItem.getElements("width")[0].getText(); + webmedia.size = \
webRoleItem.getElements("size")[0].getText(); + // webmedia.thumbnailLink = \
"http://farm" + farm + ".static.flickr.com/" + server + "/" + webmedia.id + "_" + \
secret + "_t.jpg"; + //MediaDataCollection.push(webmedia);
+ setData(webmedia.id, webmedia.toArray());
}
}
catch(e)
{
- print("A problem occured while parsing:" + e.message);
+ outputErrorMessage(blipObject.name, "", e.message, ErrorTypes[PARSINGERROR]);
}
}
);
@@ -109,7 +125,17 @@ Blip.prototype.searchMedia = function(queryParams)
Blip.prototype.seachCollection = function(queryParams)
{
-
+ outputErrorMessage(this.name, "", "searchCollection", \
ErrorTypes[FUNCTIONNOTPROVIDED]); +}
+
+Blip.prototype.getUploadedUserMedia = function(queryParams)
+{
+ outputErrorMessage(this.name, "", "getUploadedUserMedia", \
ErrorTypes[FUNCTIONNOTPROVIDED]); +}
+
+Blip.prototype.getUploadedUserCollection = function(queryParams)
+{
+ outputErrorMessage(this.name, "", "getUploadedUserCollection", \
ErrorTypes[FUNCTIONNOTPROVIDED]); }
Blip.prototype.toString = function()
diff --git a/dataengines/addons/flickr/contents/code/main.js \
b/dataengines/addons/flickr/contents/code/main.js index d9a1faf..eeb3e25 100644
--- a/dataengines/addons/flickr/contents/code/main.js
+++ b/dataengines/addons/flickr/contents/code/main.js
@@ -35,9 +35,12 @@ Flickr.prototype.searchMedia = function(queryParams)
var page = queryParams['page'];
var media = queryParams['media'];
- if (media == "" || !media)
+ // by default, we search for pictures
+ if (media == "" || !media || media == MediaTypes[PHOTO])
media = "photos";
-
+ if (media == MediaTypes[VIDEO])
+ media = "videos";
+
/*
we can search for videos as well, with the extras=media parameter
description: the description of this medium
@@ -50,19 +53,20 @@ Flickr.prototype.searchMedia = function(queryParams)
url_t: the thumbnailLink
url_o: the url of the original media link
*/
-
+ print("here");
+ print(media);
var url = buildUrl(this.baseUrl,
{
"method" : "flickr.photos.search",
"api_key" : this.apiKey,
"text" : text,
+ "sort" : "relevance",
"media" : media,
"extras" : \
"description,date_upload,owner_name,last_update,tags,machine_tags,o_dims,media,url_t,url_o",
- "per_page" : max-results,
+ "per_page" : maxResults,
"page" : page
}
- );
- //print(url2);
+ );
print(url);
var result = "";
@@ -77,7 +81,7 @@ Flickr.prototype.searchMedia = function(queryParams)
{
var objDom = new XMLDoc(result, xmlError);
var objDomTree = objDom.docNode;
- // we cannot access the this object. we have to access it indirectly
+ // we cannot access the "this" object. we have to access it indirectly
if (flickrObject.isErrorMessage(objDomTree))
return;
var photoNodes = objDomTree.getElements("photos")[0].getElements("photo");
@@ -88,50 +92,35 @@ Flickr.prototype.searchMedia = function(queryParams)
}
for (var i = 0; i < photoNodes.length; i++)
{
- try
- {
- var webmedia = new WebMedia();
- if (photoNodes[i].getAttribute("media") == "photo")
- webmedia.type = MediaTypes[PHOTO];
- else
- webmedia.type = MediaTypes[VIDEO];
-
- webmedia.id = getID();
- webmedia.providerSpecificID = photoNodes[i].getAttribute("id");
- webmedia.title = photoNodes[i].getAttribute("title");
- webmedia.description = photoNodes[i].getElements("description")[0].getText();
-
- webmedia.keywords = photoNodes[i].getAttribute("tags").split(" ");
-
- webmedia.user = photoNodes[i].getAttribute("ownername");
- webmedia.updated = photoNodes[i].getAttribute("last_update");;
- webmedia.published = photoNodes[i].getAttribute("dateupload");
- webmedia.link = photoNodes[i].getAttribute("url_o");
- webmedia.height = photoNodes[i].getAttribute("height_o");
- webmedia.width = photoNodes[i].getAttribute("width_o");
- webmedia.size = "";
- // webmedia.collection = "";
- webmedia.addThumbnail(photoNodes[i].getAttribute("url_t"),
- photoNodes[i].getAttribute("height_t"),
- photoNodes[i].getAttribute("width_t"));
- setData(webmedia.id, webmedia.toArray());
- }catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(this.name, "", result);
- else
- outputErrorMessage(this.name, "", e.message);
- }
+ var webmedia = new WebMedia();
+ if (photoNodes[i].getAttribute("media") == "photo")
+ webmedia.type = MediaTypes[PHOTO];
+ else
+ webmedia.type = MediaTypes[VIDEO];
+ webmedia.provider = flickrObject.name;
+ webmedia.id = getID();
+ webmedia.providerSpecificID = photoNodes[i].getAttribute("id");
+ webmedia.title = photoNodes[i].getAttribute("title");
+ webmedia.description = photoNodes[i].getElements("description")[0].getText();
+
+ webmedia.keywords = photoNodes[i].getAttribute("tags").split(" ");
+
+ webmedia.user = photoNodes[i].getAttribute("ownername");
+ webmedia.updated = UnixToDate(photoNodes[i].getAttribute("last_update"));
+ webmedia.published = UnixToDate(photoNodes[i].getAttribute("dateupload"));
+ webmedia.link = photoNodes[i].getAttribute("url_o");
+ webmedia.height = photoNodes[i].getAttribute("height_o");
+ webmedia.width = photoNodes[i].getAttribute("width_o");
+ webmedia.size = "";
+ // webmedia.collection = "";
+ webmedia.addThumbnail(photoNodes[i].getAttribute("url_t"),
+ photoNodes[i].getAttribute("height_t"),
+ photoNodes[i].getAttribute("width_t"));
+ setData(webmedia.id, webmedia.toArray());
}
- print("Parsing done");
}catch(e)
{
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(this.name, "", result);
- else
- outputErrorMessage(this.name, "", e.message);
+ outputErrorMessage(flickrObject.name, "", e.message, ErrorTypes[PARSINGERROR]);
}
}
);
@@ -148,10 +137,6 @@ Flickr.prototype.getUploadedUserMedia = function(queryParams)
var user = queryParams['user'];
var maxResults = queryParams['max-results'];
var page = queryParams['page'];
- var collectionID = queryParams['providerCollectionID'];
-
- if (collectionID)
- outputWarningMessage(this.name, collectionID, WarningTypes[PARAMIGNORED]);
var result = "";
this.getNSID(user,
@@ -159,7 +144,7 @@ Flickr.prototype.getUploadedUserMedia = function(queryParams)
{
if (!nsid)
{
- outputErrorMessage(flickrObject.name, "", "Fetching username " + user + " \
failed"); + outputErrorMessage(flickrObject.name, "", user, \
ErrorTypes[NOUSERFOUND]); return;
}
@@ -195,49 +180,34 @@ Flickr.prototype.getUploadedUserMedia = function(queryParams)
}
for (var i = 0; i < photoNodes.length; i++)
{
- try
- {
- var webmedia = new WebMedia();
- if (photoNodes[i].getAttribute("media") == "photo")
- webmedia.type = MediaTypes[PHOTO];
- else
- webmedia.type = MediaTypes[VIDEO];
-
- webmedia.id = getID();
- webmedia.providerSpecificID = photoNodes[i].getAttribute("id");
- webmedia.title = photoNodes[i].getAttribute("title");
- webmedia.description = \
photoNodes[i].getElements("description")[0].getText();
-
- webmedia.keywords = photoNodes[i].getAttribute("tags").split(" ");
-
- webmedia.user = photoNodes[i].getAttribute("ownername");
- webmedia.updated = photoNodes[i].getAttribute("last_update");;
- webmedia.published = photoNodes[i].getAttribute("dateupload");
- webmedia.link = photoNodes[i].getAttribute("url_o");
- webmedia.height = photoNodes[i].getAttribute("height_o");
- webmedia.width = photoNodes[i].getAttribute("width_o");
- webmedia.size = "";
- webmedia.addThumbnail(photoNodes[i].getAttribute("url_t"),
- photoNodes[i].getAttribute("height_t"),
- photoNodes[i].getAttribute("width_t"));
- setData(webmedia.id, webmedia.toArray());
- }catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(fObj.name, "", result);
- else
- outputErrorMessage(fObj.name, "", e.message);
- }
+ var webmedia = new WebMedia();
+ if (photoNodes[i].getAttribute("media") == "photo")
+ webmedia.type = MediaTypes[PHOTO];
+ else
+ webmedia.type = MediaTypes[VIDEO];
+
+ webmedia.id = getID();
+ webmedia.providerSpecificID = photoNodes[i].getAttribute("id");
+ webmedia.title = photoNodes[i].getAttribute("title");
+ webmedia.description = \
photoNodes[i].getElements("description")[0].getText(); +
+ webmedia.keywords = photoNodes[i].getAttribute("tags").split(" ");
+
+ webmedia.user = photoNodes[i].getAttribute("ownername");
+ webmedia.updated = photoNodes[i].getAttribute("last_update");;
+ webmedia.published = photoNodes[i].getAttribute("dateupload");
+ webmedia.link = photoNodes[i].getAttribute("url_o");
+ webmedia.height = photoNodes[i].getAttribute("height_o");
+ webmedia.width = photoNodes[i].getAttribute("width_o");
+ webmedia.size = "";
+ webmedia.addThumbnail(photoNodes[i].getAttribute("url_t"),
+ photoNodes[i].getAttribute("height_t"),
+ photoNodes[i].getAttribute("width_t"));
+ setData(webmedia.id, webmedia.toArray());
}
- print("Parsing done");
}catch(e)
{
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(fObj.name, "", result);
- else
- outputErrorMessage(fObj.name, "", e.message);
+ outputErrorMessage(flickrObject.name, "", e.message, \
ErrorTypes[PARSINGERROR]); }
}
);
@@ -258,6 +228,11 @@ Flickr.prototype.getUploadedUserCollection = \
function(queryParams) this.getNSID(user,
function(nsid)
{
+ if (!nsid)
+ {
+ outputErrorMessage(flickrObject.name, "", user, ErrorTypes[NOUSERFOUND]);
+ return;
+ }
var url = buildUrl(flickrObject.baseUrl,
{
"method" : "flickr.photosets.getList",
@@ -288,34 +263,20 @@ Flickr.prototype.getUploadedUserCollection = \
function(queryParams) }
for (var i = 0; i < photosetNodes.length; ++i)
{
- try
- {
- var webmediaCollection = new WebMediaCollection();
- var farm = photosetNodes[i].getAttribute("farm");
- var server = photosetNodes[i].getAttribute("server");
- webmediaCollection.id = getID();
- webmediaCollection.providerSpecificID = \
photosetNodes[i].getAttribute("id");
- webmediaCollection.provider = flickrObject.name;
- webmediaCollection.title = \
photosetNodes[i].getElements("title")[0].getText();
- webmediaCollection.description = \
photosetNodes[i].getElements("description")[0].getText();
- setData(webmediaCollection.id, webmediaCollection.toArray());
- }
- catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(flickrObject.name, "", result);
- else
- outputErrorMessage(flickrObject.name, "", e.message);
- }
+
+ var webmediaCollection = new WebMediaCollection();
+ var farm = photosetNodes[i].getAttribute("farm");
+ var server = photosetNodes[i].getAttribute("server");
+ webmediaCollection.id = getID();
+ webmediaCollection.providerSpecificID = photosetNodes[i].getAttribute("id");
+ webmediaCollection.provider = flickrObject.name;
+ webmediaCollection.title = \
photosetNodes[i].getElements("title")[0].getText(); + \
webmediaCollection.description = \
photosetNodes[i].getElements("description")[0].getText(); + \
setData(webmediaCollection.id, webmediaCollection.toArray()); }
}catch(e)
{
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(flickrObject.name, "", result);
- else
- outputErrorMessage(flickrObject.name, "", e.message);
+ outputErrorMessage(flickrObject.name, "", e.message, \
ErrorTypes[PARSINGERROR]); }
}
);
@@ -357,11 +318,7 @@ Flickr.prototype.getNSID = function(username, \
onNSIDRetrievedCallback) onNSIDRetrievedCallback(nsid);
}catch(e)
{
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(this.name, "", result);
- else
- outputErrorMessage(this.name, "", e.message);
+ outputErrorMessage(flickrObject.name, "", e.message, ErrorTypes[PARSINGERROR]);
}
}
);
@@ -369,14 +326,21 @@ Flickr.prototype.getNSID = function(username, \
onNSIDRetrievedCallback)
Flickr.prototype.isErrorMessage = function(objDomTree)
{
- if (objDomTree.getAttribute("stat") == "fail")
+ try
+ {
+ if (objDomTree.getAttribute("stat") == "fail")
+ {
+ var msg = objDomTree.getElements("err")[0].getAttribute("msg");
+ var code = objDomTree.getElements("err")[0].getAttribute("code");
+ outputErrorMessage(this.name, code, "Server response", msg);
+ return true;
+ }
+ return false;
+ }catch(e)
{
- var msg = objDomTree.getElements("err")[0].getAttribute("msg");
- var code = objDomTree.getElements("err")[0].getAttribute("code");
- outputErrorMessage(this.name, code, "Server response", msg);
- return true;
+ outputErrorMessage(flickrObject.name, "", e.message, ErrorTypes[PARSINGERROR]);
+ return false;
}
- return false;
}
function xmlError(e)
@@ -384,11 +348,4 @@ function xmlError(e)
print(e);
}
-
-//helper function
-function UnixToDate(unixTimeStamp)
-{
- return new Date(unixTimeStamp * 1000);
-}
-
registerAddon(Flickr)
\ No newline at end of file
diff --git a/dataengines/addons/metacafe/contents/code/main.js \
b/dataengines/addons/metacafe/contents/code/main.js index 5ffb7af..a5f4c41 100644
--- a/dataengines/addons/metacafe/contents/code/main.js
+++ b/dataengines/addons/metacafe/contents/code/main.js
@@ -16,22 +16,32 @@
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
***************************************************************************/
+var mcObject = null;
function Metacafe()
{
print("Hello metacafe");
this.baseUrl = "http://www.metacafe.com/api/videos/";
+ this.name = "metacafe";
+ mcObject = this;
}
Metacafe.prototype.searchMedia = function(queryParams)
{
- var query = queryParams['text'];
- var url = this.baseUrl + "?vq=" + query;
- if (query === "" || typeof query === "undefined")
- {
- print("no query defined");
- return;
- }
+ var text = queryParams['text'];
+ var maxResults = queryParams['max-results'];;
+ var page = queryParams['page'];
+ // zero based index
+ var startIndex = (maxResults * page) - maxResults;
+
+ var url = buildUrl(this.baseUrl,
+ {
+ "q" : text,
+ "max-results" : maxResults,
+ "start-index" : startIndex
+ }
+ );
+
print(url);
var result = "";
doRequest(engine, url,
@@ -42,8 +52,6 @@ Metacafe.prototype.searchMedia = function(queryParams)
function(job)
{
try{
- print("Job done");
- print("Parsing...");
//parse xml here
var mediaNS = "http://search.yahoo.com/mrss/";
var parser = new DOMImplementation();
@@ -55,42 +63,40 @@ Metacafe.prototype.searchMedia = function(queryParams)
if (mediaNodes.length == 0)
{
- setData("Metacafe", "Error", "No results for " + query + " found");
+ outputErrorMessage(mcObject.name, "", text, ErrorTypes[NORESULTS]);
return;
}
for (var i = 0; i < mediaNodes.length; ++i)
{
- try{
- var webmedia = new WebMedia();
- var mediaNodesItem = mediaNodes.item(i);
- var contentItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0);
-
- //potential nullable item
- var keywordsItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0).getFirstChild();
-
- webmedia.type = MediaType.video;
- webmedia.id = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue();
- webmedia.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue();
- webmedia.description = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"description").item(0).getFirstChild().getNodeValue();
-
- if (typeof(keywordsItem) !== "undefined" && keywordsItem != null)
- webmedia.keywords = keywordsItem.getNodeValue().split(",");
-
- webmedia.author = \
mediaNodesItem.getElementsByTagName("author").item(0).getFirstChild().getNodeValue();
- webmedia.published = \
mediaNodesItem.getElementsByTagName("pubDate").item(0).getFirstChild().getNodeValue();
- webmedia.link = \
contentItem.getAttributes().getNamedItem("url").getNodeValue();
- webmedia.width = \
contentItem.getAttributes().getNamedItem("height").getNodeValue();;
- webmedia.height = \
contentItem.getAttributes().getNamedItem("width").getNodeValue();;
- webmedia.thumbnailLink = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"thumbnail").item(0).getAttributes().getNamedItem("url").getNodeValue();
- setData(webmedia.id, webmedia.toArray());
- }catch(e)
- {
- print("A problem occured while parsing:" + e.message);
- }
+ var webmedia = new WebMedia();
+ var mediaNodesItem = mediaNodes.item(i);
+ var contentItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0); +
+ //potential nullable item
+ var keywordsItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0).getFirstChild(); +
+ webmedia.type = MediaTypes[VIDEO];
+ webmedia.id = getID();
+ webmedia.providerSpecificID = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue(); + \
webmedia.title = mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue();
+ webmedia.description = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"description").item(0).getFirstChild().getNodeValue(); +
+ if (keywordsItem)
+ webmedia.keywords = keywordsItem.getNodeValue().split(",");
+
+ webmedia.user = \
mediaNodesItem.getElementsByTagName("author").item(0).getFirstChild().getNodeValue(); \
+ webmedia.published = \
mediaNodesItem.getElementsByTagName("pubDate").item(0).getFirstChild().getNodeValue();
+ webmedia.link = contentItem.getAttributes().getNamedItem("url").getNodeValue();
+ webmedia.width = \
contentItem.getAttributes().getNamedItem("height").getNodeValue(); + \
webmedia.height = contentItem.getAttributes().getNamedItem("width").getNodeValue(); \
+ webmedia.videoDuration = \
contentItem.getAttributes().getNamedItem("duration").getNodeValue(); + \
webmedia.videoFormat = \
contentItem.getAttributes().getNamedItem("type").getNodeValue(); + \
webmedia.addThumbnail(mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"thumbnail").item(0).getAttributes().getNamedItem("url").getNodeValue(), 0, 0); + \
setData(webmedia.id, webmedia.toArray()); }
}catch(e)
{
- print("A problem occured while parsing:" + e.message);
+ outputErrorMessage(mcObject.name, "", e.message, ErorTypes[PARSINGERROR]);
}
}
);
@@ -99,7 +105,19 @@ Metacafe.prototype.searchMedia = function(queryParams)
Metacafe.prototype.searchCollection = function(queryParams)
{
-
+ outputErrorMessage(this.name, "", "searchCollection", \
ErorTypes[FUNCTIONNOTPROVIDED]); +}
+
+Metacafe.prototype.getUploadedUserMedia = function(queryParams)
+{
+ var user = queryParams['user'];
+ var maxResults = queryParams['max-results'];
+ var page = queryParams['page'];
+}
+
+Metacafe.prototype.getUploadedUserCollection = function(queryParams)
+{
+ outputErrorMessage(this.name, "", "getUploadedUserCollection", \
ErorTypes[FUNCTIONNOTPROVIDED]); }
Metacafe.prototype.toString = function()
diff --git a/dataengines/addons/photobucket/contents/code/main.js \
b/dataengines/addons/photobucket/contents/code/main.js index 87b98fb..b4bcfc6 100644
--- a/dataengines/addons/photobucket/contents/code/main.js
+++ b/dataengines/addons/photobucket/contents/code/main.js
@@ -24,161 +24,314 @@ function Photobucket()
print("Hello photobucket");
this.consumerKey = "149830244";
this.consumerSecret = "0549aaac2e9552d174f73835c2d1edf3";
- this.baseUrl = "http://api.photobucket.com";
+ this.baseUrl = "http://api.photobucket.com/";
+ this.name = "photobucket";
photobucketObject = this;
}
Photobucket.prototype.searchMedia = function(queryParams)
{
- var query = queryParams['text'];
- if (query === "" || query === "undefined")
- {
- print("No query defined");
- return;
- }
-
- var url = this.buildUrl(this.baseUrl + "/search/" + query + "/image", \
"format=xml");
- print(url);
-
- if (url == "" || url == undefined)
- {
- print("No photobucket url found");
- return;
- }
+ var text = queryParams['text'];
+ var maxResults = queryParams['max-results'];
+ var page = queryParams['page'];
+ var media = queryParams['media'];
- var result = "";
+ if (maxResults != "")
+ outputWarningMessage(this.name, maxResults, WarningTypes[PARAMIGNORED]);
+ // set default value for media. default value is photo
+ if (!media || media == "" || media == MediaTypes[PHOTO])
+ media = "image";
+ if (media == MediaTypes[VIDEO])
+ media = "video";
- doRequest(engine, url,
- function(job, data)
- {
- result += data.valueOf();
- },
- function(job)
- {
- try{
-
- var objDom = new XMLDoc(result, xmlError);
- var objDomTree = objDom.docNode;
-
- if (photobucketObject.isErrorMessage(objDomTree))
- return;
-
- var photoNodes = objDomTree.getElements("content")[0].getElements("result")[0].getElements("primary")[0].getElements("media");
- if (photoNodes.length == 0)
- {
- setData("Photobucket", "Error", "No results for " + query + " found");
- return;
- }
- print(photoNodes.length);
-
- for (var i = 0; i < photoNodes.length; i++)
- {
- try{
- var webmedia = new WebMedia();
-
- //potential nullable items
- var descriptionItem = photoNodes[i].getElements("decription")[0];
-
- webmedia.type = MediaType.photo;
-
- //in photobucket the attribute 'description_id' is somehow always an empty \
string
- webmedia.id = i;//photoNodes[i].getAttribute("description_id");
-
- webmedia.title = photoNodes[i].getElements("title")[0].getText();
-
- if (typeof(descriptionItem) !== "undefined" && descriptionItem != null)
- webmedia.description = descriptionItem.getText();
-
- webmedia.author = photoNodes[i].getAttribute("username");
- webmedia.published = photoNodes[i].getAttribute("uploaddate");
- webmedia.link = photoNodes[i].getElements("url")[0].getText();
- webmedia.thumbnailLink = photoNodes[i].getElements("thumb")[0].getText();
- setData(webmedia.id, webmedia.toArray());
- // getPhotoInfo2(webmedia);
- }
- catch(e)
+ this.buildPhotobucketUrl(this.baseUrl + "search/" + text + "/" + media,
+ {
+ "page" : page
+ },
+ function(url)
+ {
+ print(url);
+
+ var result = "";
+
+ doRequest(engine, url,
+ function(job, data)
{
- print("A problem occured while parsing: " + e.message);
+ result += data.valueOf();
+ },
+ function(job)
+ {
+ try{
+ print("Parsing...");
+ print(result);
+ var objDom = new XMLDoc(result, xmlError);
+ var objDomTree = objDom.docNode;
+
+ if (photobucketObject.isErrorMessage(objDomTree))
+ return;
+
+ var photoNodes = \
objDomTree.getElements("content")[0].getElements("result")[0].getElements("primary")[0].getElements("media");
+ if (photoNodes.length == 0)
+ {
+ outputErrorMessage(photobucketObject.name, "", text, ErrorTypes[NORESULTS]);
+ return;
+ }
+ print(photoNodes.length);
+
+ for (var i = 0; i < photoNodes.length; i++)
+ {
+ var webmedia = new WebMedia();
+
+ //potential nullable items
+ var descriptionItem = photoNodes[i].getElements("decription")[0];
+
+ var typeItem = photoNodes[i].getElements("type")[0];
+ if (typeItem && typeItem.getText() == "video")
+ webmedia.type = MediaTypes[VIDEO];
+ else
+ webmedia.type = MediaTypes[PHOTO];
+
+ //in photobucket the attribute 'description_id' is somehow always an empty string
+ webmedia.id = i;
+ webmedia.providerSpecificID = photoNodes[i].getAttribute("description_id");
+
+ webmedia.title = photoNodes[i].getElements("title")[0].getText();
+
+ if (descriptionItem)
+ webmedia.description = descriptionItem.getText();
+
+ webmedia.user = photoNodes[i].getAttribute("username");
+ webmedia.published = UnixToDate(photoNodes[i].getAttribute("uploaddate"));
+ webmedia.link = photoNodes[i].getElements("url")[0].getText();
+ webmedia.addThumbnail(photoNodes[i].getElements("thumb")[0].getText(), "", "");
+ setData(webmedia.id, webmedia.toArray());
+ }
+ }
+ catch(e)
+ {
+ outputErrorMessage(photobucketObject.name, "", e.message, \
ErrorTypes[PARSINGERROR]); + }
}
- }
- }
- catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- }
- }
- );
+ );
+ }
+ );
+
}
Photobucket.prototype.searchCollection = function(queryParams)
{
+ var text = queryParams['text'];
+ var result = "";
+ this.buildPhotobucketUrl(this.baseUrl + "search/" + text + "/group",
+ null,
+ function(url)
+ {
+ doRequest(engine, url,
+ function(job, data)
+ {
+ result += data.valueOf();
+ },
+ function(job)
+ {
+ try{
+ var objDom = new XMLDoc(result, xmlError);
+ var objDomTree = objDom.docNode;
+
+ if (photobucketObject.isErrorMessage(objDomTree))
+ return;
+ var groupNodes = objDomTree.getElements("content")[0].getElements("album");
+ if (groupNodes.length == 0)
+ {
+ outputErrorMessage(photobucketObject.name, "", text, \
ErrorTypes[NORESULTS]); + return;
+ }
+ for (var i = 0; i < groupNodes.length; i++)
+ {
+ var webmediaColl = new WebMediaCollection();
+
+ //potential nullable items
+ var descriptionItem = groupNodes[i].getElements("decription")[0];
+
+ webmediaColl.id = getID();//groupNodes[i].getAttribute("description_id");
+
+ webmediaColl.providerSpecificID = \
groupNodes[i].getElements("id")[0].getText(); + webmediaColl.title = \
groupNodes[i].getAttribute("name"); +
+ if (typeof(descriptionItem) !== "undefined" && descriptionItem != null)
+ webmediaColl.description = descriptionItem.getText();
+
+ // webmediaColl.author = user;
+ // webmediaColl.published = groupNodes[i].getAttribute("uploaddate");
+ // webmediaColl.link = groupNodes[i].getElements("url")[0].getText();
+ // webmediaColl.thumbnailLink = \
groupNodes[i].getElements("thumb")[0].getText(); + setData(webmediaColl.id, \
webmediaColl.toArray()); + // getPhotoInfo2(webmedia);
+ }
+ }
+ catch(e)
+ {
+ outputErrorMessage(photobucketObject.name, "", e.message, \
ErrorTypes[PARSINGERROR]); + }
+ }
+ );
+ }
+ );
+}
+
+Photobucket.prototype.getUserUploadedMedia = function(queryParams)
+{
var user = queryParams['user'];
- if (user === "" || user === "undefined")
- {
- print("no user defined");
- return;
- }
- var url = this.buildUrl(this.baseUrl + "/album/" + user, "format=xml");
- print(url);
- if (url == "" || url == undefined)//&view=flat&recurse=1
- {
- print("No photobucket url found");
- return;
- }
+ var maxResults = queryParams['max-results'];
+ var page = queryParams['page'];
- var result = "";
- doRequest(engine, url,
- function(job, data)
- {
- result += data.valueOf();
- },
- function(job)
- {
- try{
- var objDom = new XMLDoc(result, xmlError);
- var objDomTree = objDom.docNode;
-
- if (photobucketObject.isErrorMessage(objDomTree))
- return;
- var albumNodes = objDomTree.getElements("content")[0].getElements("album");
- if (albumNodes.length == 0)
- return;
- for (var i = 0; i < albumNodes.length; i++)
- {
- try{
- var webmediaColl = new WebMediaCollection();
-
- //potential nullable items
- var descriptionItem = albumNodes[i].getElements("decription")[0];
-
- webmediaColl.id = i;//albumNodes[i].getAttribute("description_id");
-
- webmediaColl.title = albumNodes[i].getAttribute("name");
-
- if (typeof(descriptionItem) !== "undefined" && descriptionItem != null)
- webmediaColl.description = descriptionItem.getText();
-
- webmediaColl.author = user;
- // webmediaColl.published = albumNodes[i].getAttribute("uploaddate");
- // webmediaColl.link = albumNodes[i].getElements("url")[0].getText();
- // webmediaColl.thumbnailLink = \
albumNodes[i].getElements("thumb")[0].getText();
- setData(webmediaColl.id, webmediaColl.toArray());
- // getPhotoInfo2(webmedia);
- }
- catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- }
- }
- }
- catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- }
- }
- );
+ this.buildPhotobucketUrl(this.baseUrl + "/user/" + user + "/search",
+ {
+ "perpage" : maxResults
+ },
+ function(url)
+ {
+ var result = "";
+
+ doRequest(engine, url,
+ function(job, data)
+ {
+ result += data.valueOf();
+ },
+ function(job)
+ {
+ try{
+ print("Parsing...");
+ print(result);
+ var objDom = new XMLDoc(result, xmlError);
+ var objDomTree = objDom.docNode;
+
+ if (photobucketObject.isErrorMessage(objDomTree))
+ return;
+
+ var photoNodes = \
objDomTree.getElements("content")[0].getElements("result")[0].getElements("primary")[0].getElements("media");
+ if (photoNodes.length == 0)
+ {
+ outputErrorMessage(photobucketObject.name, "", text, \
ErrorTypes[NORESULTS]); + return;
+ }
+ print(photoNodes.length);
+
+ for (var i = 0; i < photoNodes.length; i++)
+ {
+
+ var webmedia = new WebMedia();
+
+ //potential nullable items
+ var descriptionItem = photoNodes[i].getElements("decription")[0];
+
+ var typeItem = photoNodes[i].getElements("type")[0];
+ if (typeItem && typeItem.getText() == "video")
+ webmedia.type = MediaTypes[VIDEO];
+ else
+ webmedia.type = MediaTypes[PHOTO];
+
+ //in photobucket the attribute 'description_id' is somehow always an \
empty string + webmedia.id = i;
+ webmedia.providerSpecificID = \
photoNodes[i].getAttribute("description_id"); +
+ webmedia.title = photoNodes[i].getElements("title")[0].getText();
+
+ if (descriptionItem)
+ webmedia.description = descriptionItem.getText();
+
+ webmedia.user = photoNodes[i].getAttribute("username");
+ webmedia.published = \
UnixToDate(photoNodes[i].getAttribute("uploaddate")); + webmedia.link = \
photoNodes[i].getElements("url")[0].getText(); + \
webmedia.addThumbnail(photoNodes[i].getElements("thumb")[0].getText(), "", ""); \
+ setData(webmedia.id, webmedia.toArray()); + }
+ }
+ catch(e)
+ {
+ outputErrorMessage(photobucketObject.name, "", e.message, \
ErrorTypes[PARSINGERROR]); + }
+ }
+ );
+ }
+ );
+}
+
+Photobucket.prototype.getUserUploadedCollection = function(queryParams)
+{
+ var user = queryParams['user'];
+ var maxResults = queryParams['max-results'];
+ var page = queryParams['page'];
+
+
+ this.buildPhotobucketUrl(this.baseUrl + "/user/" + user + "/group",
+ null,
+ function(url)
+ {
+ var result = "";
+
+ doRequest(engine, url,
+ function(job, data)
+ {
+ result += data.valueOf();
+ },
+ function(job)
+ {
+ try{
+ print("Parsing...");
+ print(result);
+ var objDom = new XMLDoc(result, xmlError);
+ var objDomTree = objDom.docNode;
+
+ if (photobucketObject.isErrorMessage(objDomTree))
+ return;
+
+ var photoNodes = \
objDomTree.getElements("content")[0].getElements("result")[0].getElements("primary")[0].getElements("media");
+ if (photoNodes.length == 0)
+ {
+ outputErrorMessage(photobucketObject.name, "", text, \
ErrorTypes[NORESULTS]); + return;
+ }
+ print(photoNodes.length);
+
+ for (var i = 0; i < photoNodes.length; i++)
+ {
+ var webmedia = new WebMedia();
+
+ //potential nullable items
+ var descriptionItem = photoNodes[i].getElements("decription")[0];
+
+ var typeItem = photoNodes[i].getElements("type")[0];
+ if (typeItem && typeItem.getText() == "video")
+ webmedia.type = MediaTypes[VIDEO];
+ else
+ webmedia.type = MediaTypes[PHOTO];
+
+ //in photobucket the attribute 'description_id' is somehow always an \
empty string + webmedia.id = i;
+ webmedia.providerSpecificID = \
photoNodes[i].getAttribute("description_id"); +
+ webmedia.title = photoNodes[i].getElements("title")[0].getText();
+
+ if (descriptionItem)
+ webmedia.description = descriptionItem.getText();
+
+ webmedia.user = photoNodes[i].getAttribute("username");
+ webmedia.published = \
UnixToDate(photoNodes[i].getAttribute("uploaddate")); + webmedia.link = \
photoNodes[i].getElements("url")[0].getText(); + \
webmedia.addThumbnail(photoNodes[i].getElements("thumb")[0].getText(), "", ""); \
+ setData(webmedia.id, webmedia.toArray()); + }
+ }
+ catch(e)
+ {
+ outputErrorMessage(photobucketObject.name, "", e.message, \
ErrorTypes[PARSINGERROR]); + }
+ }
+ );
+ }
+ );
}
Photobucket.prototype.toString = function()
@@ -186,82 +339,69 @@ Photobucket.prototype.toString = function()
return "Photobucket";
}
-Photobucket.prototype.buildUrl = function(url, format) {
- try
- {
- if( url == undefined )
- {
- url = "http://api.photobucket.com/ping";
- }
-
- if( format == undefined )
+Photobucket.prototype.buildPhotobucketUrl = function(url, optionalParams, \
onUrlCreated) +{
+ var pbUrl = "";
+ this.getTimestamp(
+ function(timestamp)
{
- format = "format=xml";
+ var params = {
+ "format" : "xml",
+ "oauth_consumer_key" : encodeURIComponent(photobucketObject.consumerKey),
+ "oauth_nonce" : encodeURIComponent("nonce" + timestamp),
+ "oauth_signature_method" : encodeURIComponent("HMAC-SHA1"),
+ "oauth_timestamp" : encodeURIComponent(timestamp),
+ "oauth_version" : encodeURIComponent("1.0")
+ };
+ if (optionalParams)
+ {
+ for (var key in optionalParams)
+ params[key] = encodeURIComponent(optionalParams[key]);
+ }
+ var query = photobucketObject.makeQuery(params);
+ //print(encodeURIComponent(query));
+ var base = encodeURIComponent("GET") + "&" + encodeURIComponent(url) + "&" + \
encodeURIComponent(query); + print(base);
+ var base2 = encodeURIComponent("GET") + "&" + url + "&" + query;
+ print(base2);
+ params["oauth_signature"] = getSignature(photobucketObject.consumerSecret + \
"&", base); +
+ // print(photobucketObject.makeQuery(params));
+ pbUrl = buildUrl(url, params);
+ print(pbUrl);
+ onUrlCreated(pbUrl);
}
+ );
+}
- var timestamp = getTimestamp();
- auth_nonce="nonce" + timestamp;
-
- auth_method = "HMAC-SHA1";
- auth_timestamp = "" + timestamp;
-
- auth_version="1.0";
-
- auth_consumer = "&oauth_consumer_key="+ encodeURIComponent( this.consumerKey );
- nonce = "&oauth_nonce="+ encodeURIComponent( auth_nonce );
- auth_sig_method = "&oauth_signature_method="+ encodeURIComponent( auth_method );
- auth_timestamp = "&oauth_timestamp="+ encodeURIComponent( auth_timestamp );
- version = "&oauth_version=" + encodeURIComponent( auth_version );
-
- paramstring = format + auth_consumer + nonce + auth_sig_method + auth_timestamp \
+ version;
-
- method = "GET";
-
- base = encodeURIComponent( method ) + "&" +
- encodeURIComponent( url ) + "&" +
- encodeURIComponent( paramstring );
- print(base);
- sig_hash = getSignature( this.consumerSecret+"&", base );
- auth_sign = "oauth_signature=" + sig_hash;
-
- auth_url = url + "?" + paramstring + "&" + auth_sign;
- print( ""+ auth_url+"");
- return auth_url;
- }
- catch (err)
+Photobucket.prototype.makeQuery = function(queryItems)
+{
+ var query = "";
+ for (var key in queryItems)
{
- print( "A problem occured while building the url: " + err.message);
+ query += key + "=" + queryItems[key] + "&";
}
+ if (query.charAt(query.length - 1) == '&')
+ query = query.slice(0, query.length - 1);
+ return query;
}
Photobucket.prototype.isErrorMessage = function(objDomTree)
{
- if (objDomTree.getElements("status")[0].getText() == "Exception")
+ try
+ {
+ if (objDomTree.getElements("status")[0].getText() == "Exception")
+ {
+ var msg = objDomTree.getElements("message")[0].getText();
+ outputErrorMessage(photobucketObject.name, "", "Server response", msg);
+ return true;
+ }
+ return false;
+ }catch(e)
{
- var msg = objDomTree.getElements("message")[0].getText();
- setData(this.toString(), "Error", msg);
- return true;
+ outputErrorMessage(this.name, "", e.message, ErrorTypes[PARSINGERROR]);
+ return false;
}
- return false;
-}
-
-Photobucket.prototype.buildParams = function(queryParams)
-{
- var params = "";
- if (queryParams['text'] != null)
- params += "text=" + queryParams['text'];
- if (queryParams['max-results'] != null)
- params += "per-page=" + queryParams['max-results'];
- if (queryParams['min-results'] != null)
- params += queryParams['min-results'];
- if (queryParams['user'] != null)
- //params += queryParams['user'];
- print("Parameter user for flickr not supported yet");
- if (queryParams['tags'] != null)
- print("Parameter tags for photobucket not supported");
- if (queryParams['page'] != null)
- params += "page=" + queryParams['page'];
- return params;
}
function getSignature(key, baseString) {
@@ -297,17 +437,32 @@ function xmlError(e)
});
}*/
-function getTimestamp() {
+Photobucket.prototype.getTimestamp = function(onTimeStampRetrieved) {
/* var timestamp = "";
var io = engine.getUrl("http://api.photobucket.com/time");
io.data.connect(function(job, data){ timestamp += data.valueOf(); });
io.finished.connect(function(job){ print(timestamp); return; });
doRequest(engine, "http://api.photobucket.com/time", function(job, data){ \
timestamp += data.valueOf(); } , function(job){ print(timestamp); });*/
- var timestamp = new Date().valueOf();
+ /*var timestamp = new Date().valueOf();
timestamp = timestamp / 1000;
timestamp = Math.ceil( timestamp );
- return timestamp;
+ return timestamp;*/
+ var timestamp = "";
+ var url = buildUrl(this.baseUrl + "time", null);
+ print(url);
+
+ doRequest(engine, url,
+ function(job, data)
+ {
+ timestamp += data.valueOf();
+ },
+ function(job)
+ {
+ print(timestamp);
+ onTimeStampRetrieved(timestamp);
+ }
+ );
}
diff --git a/dataengines/addons/picasa/contents/code/main.js \
b/dataengines/addons/picasa/contents/code/main.js index ec49b8e..6b34379 100644
--- a/dataengines/addons/picasa/contents/code/main.js
+++ b/dataengines/addons/picasa/contents/code/main.js
@@ -78,52 +78,41 @@ Picasa.prototype.searchMedia = function(queryParams)
}
for (var i = 0; i < mediaNodes.length; i++)
{
- try
+ var webmedia = new WebMedia();
+ var mediaNodesItem = mediaNodes.item(i);
+
+ //potential nullable items
+ var summaryItem = \
mediaNodesItem.getElementsByTagName("summary").item(0).getFirstChild(); + var \
keywordsItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, "keywords").item(0); \
+ + webmedia.type = MediaTypes[PHOTO];
+ webmedia.id = getID();
+ webmedia.providerSpecificID = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"id").item(0).getFirstChild().getNodeValue(); + webmedia.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); \
+ if (summaryItem) + webmedia.description = summaryItem.getNodeValue();
+ if (keywordsItem)
+ webmedia.keywords = keywordsItem.getFirstChild().getNodeValue().split(",");
+ webmedia.user = \
mediaNodesItem.getElementsByTagName("author").item(0).getElementsByTagNameNS(gphotoNS, \
"user").item(0).getFirstChild().getNodeValue(); + webmedia.authodNick = \
webmedia.user = mediaNodesItem.getElementsByTagName("author").item(0).getElementsByTagNameNS(gphotoNS, \
"nickname").item(0).getFirstChild().getNodeValue(); + webmedia.updated = new \
Date(); + webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
+ webmedia.published = new Date();
+ webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
+ webmedia.link = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0).getAttributes().getNamedItem("url").getNodeValue(); + \
webmedia.width = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"width").item(0).getFirstChild().getNodeValue(); + webmedia.height = \
mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"height").item(0).getFirstChild().getNodeValue(); + for (var j = 0; j < \
mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, "thumbnail").length; j++) {
- var webmedia = new WebMedia();
- var mediaNodesItem = mediaNodes.item(i);
-
- //potential nullable items
- var summaryItem = \
mediaNodesItem.getElementsByTagName("summary").item(0).getFirstChild();
- var keywordsItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0);
-
- webmedia.type = MediaTypes[PHOTO];
- webmedia.id = getID();
- webmedia.providerSpecificID = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"id").item(0).getFirstChild().getNodeValue();
- webmedia.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue();
- if (summaryItem)
- webmedia.description = summaryItem.getNodeValue();
- if (keywordsItem)
- webmedia.keywords = keywordsItem.getFirstChild().getNodeValue().split(",");
- webmedia.user = \
mediaNodesItem.getElementsByTagName("author").item(0).getElementsByTagNameNS(gphotoNS, \
"user").item(0).getFirstChild().getNodeValue();
- webmedia.authodNick = webmedia.user = \
mediaNodesItem.getElementsByTagName("author").item(0).getElementsByTagNameNS(gphotoNS, \
"nickname").item(0).getFirstChild().getNodeValue();
- webmedia.updated = new Date();
- webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
- webmedia.published = new Date();
- webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
- webmedia.link = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0).getAttributes().getNamedItem("url").getNodeValue();
- webmedia.width = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"width").item(0).getFirstChild().getNodeValue();
- webmedia.height = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"height").item(0).getFirstChild().getNodeValue();
- for (var j = 0; j < mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, "thumbnail").length; \
j++)
- {
- webmedia.addThumbnail(mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("url").getNodeValue(),
- mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("height").getNodeValue(),
- mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("height").getNodeValue());
- }
- webmedia.collectionID = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"albumid").item(0).getFirstChild().getNodeValue();
- setData(webmedia.id, webmedia.toArray());
- }catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(this.name, "", result);
- else
- outputErrorMessage(this.name, "", e.message);
+ webmedia.addThumbnail(mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("url").getNodeValue(), + \
mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("height").getNodeValue(), + \
mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("height").getNodeValue()); }
+ webmedia.collectionID = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"albumid").item(0).getFirstChild().getNodeValue(); + setData(webmedia.id, \
webmedia.toArray()); }
}catch(e)
{
- print("A problem occured while parsing: " + e.message);
if (typeof e.message === "undefined")
outputErrorMessage(this.name, "", result);
else
@@ -144,21 +133,11 @@ Picasa.prototype.getUploadedUserMedia = function(queryParams)
var user = queryParams['user'];
var maxResults = queryParams['max-results'];
var page = queryParams['page'];
- var collectionID = queryParams['providerCollectionID'];
// calculate the index of the first picture in each page
var startIndex = (maxResults * page) - (maxResults - 1);;
- var baseUrl = "";
-
- // check wheather to get the photos of the user
- if (collectionID == "" || !collectionID)
- baseUrl = this.baseUrl + "user/" + user;
- else
- // or just to get the photos of a specific album with collectionID of the user
- baseUrl = this.baseUrl + "user/" + user + "/albumid/" + collectionID;
-
- var url = buildUrl(baseUrl,
+ var url = buildUrl(this.baseUrl + "user/" + user,
{
"kind" : "photo",
"start-index" : startIndex,
@@ -197,59 +176,46 @@ Picasa.prototype.getUploadedUserMedia = function(queryParams)
var thumb = null;
for (var i = 0; i < mediaNodes.length; i++)
{
- try
+ var webmedia = new WebMedia();
+ var mediaNodesItem = mediaNodes.item(i);
+
+ //potential nullable items
+ var summaryItem = \
mediaNodesItem.getElementsByTagName("summary").item(0).getFirstChild(); + var \
keywordsItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, "keywords").item(0); \
+
+ webmedia.type = MediaTypes[PHOTO];
+ webmedia.id = getID();//mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue();
+ webmedia.providerSpecificID = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"id").item(0).getFirstChild().getNodeValue(); + // those two elements are in each \
webmedia entry + webmedia.authorNick = docRoot.getElementsByTagNameNS(gphotoNS, \
"nickname").item(0).getFirstChild().getNodeValue(); + webmedia.user = \
docRoot.getElementsByTagNameNS(gphotoNS, \
"user").item(0).getFirstChild().getNodeValue(); + webmedia.provider = this.name;
+ webmedia.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); \
+ if (summaryItem) + webmedia.description = summaryItem.getNodeValue();
+
+ if (keywordsItem )
+ webmedia.keywords = keywordsItem.getFirstChild().getNodeValue().split(",");
+
+ webmedia.updated = new Date();
+ webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
+ webmedia.published = new Date();
+ webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
+ webmedia.link = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0).getAttributes().getNamedItem("url").getNodeValue(); + \
webmedia.width = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"width").item(0).getFirstChild().getNodeValue(); + webmedia.height = \
mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"height").item(0).getFirstChild().getNodeValue(); +
+ for (var j = 0; j < mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, "thumbnail").length; j++) {
- var webmedia = new WebMedia();
- var mediaNodesItem = mediaNodes.item(i);
-
- //potential nullable items
- var summaryItem = \
mediaNodesItem.getElementsByTagName("summary").item(0).getFirstChild();
- var keywordsItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0);
-
- webmedia.type = MediaTypes[PHOTO];
- webmedia.id = \
getID();//mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue();
- webmedia.providerSpecificID = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"id").item(0).getFirstChild().getNodeValue();
- // those two elements are in each webmedia entry
- webmedia.authorNick = docRoot.getElementsByTagNameNS(gphotoNS, \
"nickname").item(0).getFirstChild().getNodeValue();
- webmedia.user = docRoot.getElementsByTagNameNS(gphotoNS, \
"user").item(0).getFirstChild().getNodeValue();
- webmedia.provider = this.name;
- webmedia.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue();
- if (summaryItem)
- webmedia.description = summaryItem.getNodeValue();
-
- if (keywordsItem )
- webmedia.keywords = keywordsItem.getFirstChild().getNodeValue().split(",");
-
- webmedia.updated = new Date();
- webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
- webmedia.published = new Date();
- webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
- webmedia.link = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0).getAttributes().getNamedItem("url").getNodeValue();
- webmedia.width = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"width").item(0).getFirstChild().getNodeValue();
- webmedia.height = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"height").item(0).getFirstChild().getNodeValue();
-
- for (var j = 0; j < mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, "thumbnail").length; \
j++)
- {
- webmedia.addThumbnail(mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("url").getNodeValue(),
- mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("height").getNodeValue(),
- mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("height").getNodeValue());
- }
- webmedia.collectionID = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"albumid").item(0).getFirstChild().getNodeValue();
- setData(webmedia.id, webmedia.toArray());
-
- }catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(this.name, "", result);
- else
- outputErrorMessage(this.name, "", e.message);
+ webmedia.addThumbnail(mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("url").getNodeValue(), + \
mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("height").getNodeValue(), + \
mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"group").item(0).getElementsByTagNameNS(mediaNS, \
"thumbnail").item(j).getAttributes().getNamedItem("height").getNodeValue()); }
+ webmedia.collectionID = mediaNodesItem.getElementsByTagNameNS(gphotoNS, \
"albumid").item(0).getFirstChild().getNodeValue(); + setData(webmedia.id, \
webmedia.toArray()); }
- print("Job done");
}catch(e)
{
- print("A problem occured while parsing: " + e.message);
if (typeof e.message === "undefined")
outputErrorMessage(this.name, "", result);
else
@@ -301,40 +267,29 @@ Picasa.prototype.getUploadedUserCollection = \
function(queryParams)
for (var i = 0; i < mediaNodes.length; i++)
{
- try
- {
- var webmediaCollection = new WebMediaCollection();
- var mediaNodesItem = mediaNodes.item(i);
- var mediaEntriesUrl = null;
-
- //potential nullable item
- var descriptionItem = \
mediaNodesItem.getElementsByTagName("summary").item(0).getFirstChild();
-
- webmediaCollection.id = getID();
- webmediaCollection.providerSpecificID = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue();
- webmediaCollection.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); \
- if (descriptionItem)
- webmediaCollection.description = descriptionItem.getNodeValue();
- //webmedia.keywords = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0).getFirstChild().getNodeValue().split(",");
- webmediaCollection.link = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue();
- webmediaCollection.user = user;
- webmediaCollection.updated = new Date();
- webmediaCollection.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
- webmediaCollection.published = new Date();
- webmediaCollection.updated.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
- setData(webmediaCollection.id, webmediaCollection.toArray());
- }catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- if (typeof e.message === "undefined")
- outputErrorMessage(this.name, "", result);
- else
- outputErrorMessage(this.name, "", e.message);
- }
+ var webmediaCollection = new WebMediaCollection();
+ var mediaNodesItem = mediaNodes.item(i);
+ var mediaEntriesUrl = null;
+
+ //potential nullable item
+ var descriptionItem = \
mediaNodesItem.getElementsByTagName("summary").item(0).getFirstChild(); +
+ webmediaCollection.id = getID();
+ webmediaCollection.providerSpecificID = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue(); + \
webmediaCollection.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); \
+ if (descriptionItem)
+ webmediaCollection.description = descriptionItem.getNodeValue();
+ //webmedia.keywords = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0).getFirstChild().getNodeValue().split(","); + \
webmediaCollection.link = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue(); + \
webmediaCollection.user = user; + webmediaCollection.updated = new Date();
+ webmediaCollection.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
+ webmediaCollection.published = new Date();
+ webmediaCollection.updated.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
+ setData(webmediaCollection.id, webmediaCollection.toArray());
}
}catch(e)
{
- print("A problem occured while parsing: " + e.message);
if (typeof e.message === "undefined")
outputErrorMessage(this.name, "", result);
else
diff --git a/dataengines/addons/veoh/contents/code/main.js \
b/dataengines/addons/veoh/contents/code/main.js index 64c2687..74c2893 100644
--- a/dataengines/addons/veoh/contents/code/main.js
+++ b/dataengines/addons/veoh/contents/code/main.js
@@ -24,18 +24,26 @@ function Veoh()
print("Hello veoh");
this.baseUrl = "http://www.veoh.com/rest/v2/execute.xml";
this.apiKey = "A73F9B59-0A24-23C3-B376-1A57CCA2C00B";
+ this.name = "veoh";
veohObject = this;
}
Veoh.prototype.searchMedia = function(queryParams)
{
- var query = queryParams['text'];
- if (query === "" || typeof query === "undefined")
- {
- print("no query defined");
- return;
- }
- var url = this.baseUrl + "?method=veoh.search.video&apiKey=" + this.apiKey + \
"&userQuery=" + query; + var text = queryParams['text'];
+ var maxResults = queryParams['max-results'];
+ var page = queryParams['page'];
+
+ // zero based index
+ var offset = (maxResults * page) - maxResults;
+ var url = buildUrl(this.baseUrl,
+ {
+ "method" : "veoh.search.video",
+ "apiKey" : this.apiKey,
+ "userQuery" : text,
+ "maxResults" : maxResults,
+ "offset" : offset
+ });
print(url);
var result = "";
doRequest(engine, url,
@@ -55,33 +63,30 @@ Veoh.prototype.searchMedia = function(queryParams)
var videoNodes = objDomTree.getElements("videoList")[0].getElements("video");
if (videoNodes.length == 0)
- print("photonodes is empty");
-
+ {
+ errorMessage(veohObject.name, "", text, ErrorTypes[NORESULTS]);
+ return;
+ }
for (var i = 0; i < videoNodes.length; i++)
{
- try
- {
- var webmedia = new WebMedia();
-
- webmedia.type = MediaType.video;
-
- webmedia.id = videoNodes[i].getAttribute("videoId");
- webmedia.title = videoNodes[i].getAttribute("title");
- webmedia.description = videoNodes[i].getAttribute("description");
- webmedia.keywords = videoNodes[i].getAttribute("tags").split(" ");
- webmedia.author = videoNodes[i].getAttribute("username");
- webmedia.published = new Date(videoNodes[i].getAttribute("dateAdded"));
- webmedia.link = videoNodes[i].getAttribute("previewUrl");
- webmedia.thumbnailLink = videoNodes[i].getAttribute("highResImage");
- setData(webmedia.id, webmedia.toArray());
- }catch(e)
- {
- print("A problem occured while parsing:" + e.message);
- }
+ var webmedia = new WebMedia();
+
+ webmedia.type = MediaTypes[VIDEO];
+
+ webmedia.id = getID();
+ webmedia.providerSpecificID = videoNodes[i].getAttribute("videoId");
+ webmedia.title = videoNodes[i].getAttribute("title");
+ webmedia.description = videoNodes[i].getAttribute("description");
+ webmedia.keywords = videoNodes[i].getAttribute("tags").split(" ");
+ webmedia.user = videoNodes[i].getAttribute("username");
+ webmedia.published = new Date(videoNodes[i].getAttribute("dateAdded"));
+ webmedia.link = videoNodes[i].getAttribute("previewUrl");
+ webmedia.addThumbnai(videoNodes[i].getAttribute("highResImage"), 0, 0);
+ setData(webmedia.id, webmedia.toArray());
}
}catch(e)
{
- print("A problem occured while parsing:" + e.message);
+ outputErrorMessage(veohObject.name, "", e.message, ErrorTypes[PARSINGERROR]);
}
}
);
@@ -89,10 +94,14 @@ Veoh.prototype.searchMedia = function(queryParams)
Veoh.prototype.searchCollection = function(queryParams)
{
- var query = queryParams['text'];
- if (query === "" || typeof(query) == "undefined")
- return;
- var url = this.baseUrl + "?method=veoh.search.collection&userQuery=" + query + \
"&apiKey=" + this.apiKey; + var text = queryParams['text'];
+
+ var url = buildUrl(this.baseUrl,
+ {
+ "method" : "veoh.search.collection",
+ "userQuery" : text,
+ "apiKey" : this.apiKey
+ });
var result = "";
print(url);
doRequest(engine, url,
@@ -108,35 +117,101 @@ Veoh.prototype.searchCollection = function(queryParams)
var objDomTree = objDom.docNode;
var videosetNodes = \
objDomTree.getElements("collections")[0].getElements("collection");
- if (typeof(videosetNodes) === "undefined" || videosetNodes == null || \
videosetNodes.length == 0) + if (!videosetNodes || videosetNodes.length == 0)
{
- print("No collections");
+ outputErrorMessage(veohObject.name, "", text, ErrorTypes[NORESULTS]);
return;
}
for (var i = 0; i < videosetNodes.length; ++i)
{
- try
- {
- var webmediaCollection = new WebMediaCollection();
- webmediaCollection.id = videosetNodes[i].getAttribute("collectionId");
- webmediaCollection.title = videosetNodes[i].getAttribute("title");
- webmediaCollection.description = videosetNodes[i].getAttribute("description");
- webmediaCollection.updated = videosetNodes[i].getAttribute("dateLastModified");
- webmediaCollection.author = videosetNodes[i].getAttribute("username");
- setData(webmediaCollection.id, webmediaCollection.toArray());
- }catch(e)
- {
- print("A problem occured while parsing: " + e.message);
- }
+ var webmediaCollection = new WebMediaCollection();
+ webmediaCollection.id = getID();
+ webmediaCollection.providerSpecificID = \
videosetNodes[i].getAttribute("collectionId"); + webmediaCollection.title = \
videosetNodes[i].getAttribute("title"); + webmediaCollection.description = \
videosetNodes[i].getAttribute("description"); + webmediaCollection.updated = \
videosetNodes[i].getAttribute("dateLastModified"); + webmediaCollection.user = \
videosetNodes[i].getAttribute("username"); + webmediaCollection.thumbnail = \
videosetNodes[i].getAttribute("highResImageUrl"); + setData(webmediaCollection.id, \
webmediaCollection.toArray()); }
}catch(e)
{
- print("A problem occured while parsing: " + e.message);
+ outputErrorMessage(veohObject.name, "", e.message, ErrorTypes[PARSINGERROR]);
}
}
);
}
+Veoh.prototype.getUploadedUserMedia = function(queryParams)
+{
+ var user = queryParams['user'];
+ var maxResults = queryParams['max-results'];
+ var page = queryParams['page'];
+
+ // zero based index
+ var offset = (maxResults * page) - maxResults;
+ var url = buildUrl(this.baseUrl,
+ {
+ "method" : "veoh.people.getPublishedVideos",
+ "username" : user,
+ "maxResults" : maxResults,
+ "offset" : offset,
+ "apiKey" : this.apiKey
+ }
+ );
+ print(url);
+ var result = "";
+ doRequest(engine, url,
+ function(job, data)
+ {
+ result += data.valueOf();
+ },
+ function(job)
+ {
+ try
+ {
+ var objDom = new XMLDoc(result, xmlError);
+ var objDomTree = objDom.docNode;
+
+ if (veohObject.isErrorMessage(objDomTree))
+ return;
+
+ var videoNodes = objDomTree.getElements("videoList")[0].getElements("video");
+ if (videoNodes.length == 0)
+ {
+ errorMessage(veohObject.name, "", text, ErrorTypes[NORESULTS]);
+ return;
+ }
+ for (var i = 0; i < videoNodes.length; i++)
+ {
+ var webmedia = new WebMedia();
+
+ webmedia.type = MediaTypes[VIDEO];
+
+ webmedia.id = getID();
+ webmedia.providerSpecificID = videoNodes[i].getAttribute("videoId");
+ webmedia.title = videoNodes[i].getAttribute("title");
+ webmedia.description = videoNodes[i].getAttribute("description");
+ webmedia.keywords = videoNodes[i].getAttribute("tags").split(" ");
+ webmedia.user = videoNodes[i].getAttribute("username");
+ webmedia.published = new Date(videoNodes[i].getAttribute("dateAdded"));
+ webmedia.link = videoNodes[i].getAttribute("previewUrl");
+ webmedia.addThumbnail(videoNodes[i].getAttribute("highResImage"), 0, 0);
+ setData(webmedia.id, webmedia.toArray());
+ }
+ }catch(e)
+ {
+ outputErrorMessage(veohObject.name, "", e.message, ErrorTypes[PARSINGERROR]);
+ }
+ }
+ );
+}
+
+Veoh.prototype.getUploadedUserCollection = function(queryParams)
+{
+ outputErrorMessage(this.name, "", "getUploadedUserCollection", \
ErrorTypes[FUNCTIONNOTPROVIDED]); +}
+
Veoh.prototype.toString = function()
{
return "Veoh";
@@ -147,7 +222,7 @@ Veoh.prototype.isErrorMessage = function(objDomTree)
if (objDomTree.getAttribute("stat") == "fail")
{
var msg = objDomTree.getElements("errorList")[0].getAttribute("errorMessage");
- setData(this.toString(), "Error", msg);
+ outputErrorMessage(this.name,"", "Error", msg);
return true;
}
return false;
diff --git a/dataengines/addons/veoh/metadata.desktop \
b/dataengines/addons/veoh/metadata.desktop new file mode 100644
index 0000000..f1fc643
--- /dev/null
+++ b/dataengines/addons/veoh/metadata.desktop
@@ -0,0 +1,25 @@
+[Desktop Entry]
+Name=Veoh
+Name[x-test]=xxVeohxx
+
+Comment=An engine that allows you to query web services for media.
+Comment[pt]=Um motor que lhe permite pesquisar conteúdos multimédia em vários \
serviços na Web. +Comment[pt_BR]=Um motor que lhe permite pesquisar conteúdos \
multimídia em vários serviços na Web. +Comment[sv]=Ett gränssnitt som låter dig \
söka efter media på webbtjänster. +Comment[uk]= ушій, який надасть \
вам змогу звантажувати мультимедійні дані зі \
служб у мережі. +Comment[x-test]=xxAn engine that allows you to query web \
services for media.xx +
+X-KDE-ServiceTypes=Plasma/JavascriptAddon
+Type=Service
+X-Plasma-API=javascript
+
+X-KDE-Library=plasma_engine_webmedia
+X-KDE-PluginInfo-Author=Onur-Hayri Bakici
+X-KDE-PluginInfo-Email=thehayro@gmail.com
+X-KDE-PluginInfo-Name=org.kde.plasma.dataengine.webmedia.veoh
+X-KDE-PluginInfo-Version=0.1
+X-KDE-PluginInfo-Website=http://plasma.kde.org/
+X-KDE-PluginInfo-Category=org.kde.plasma.dataengine.webmedia
+X-KDE-PluginInfo-Depends=
+X-KDE-PluginInfo-License=LGPL
+X-KDE-PluginInfo-EnabledByDefault=true
diff --git a/dataengines/addons/youtube/contents/code/main.js \
b/dataengines/addons/youtube/contents/code/main.js index 12d5904..47fc388 100644
--- a/dataengines/addons/youtube/contents/code/main.js
+++ b/dataengines/addons/youtube/contents/code/main.js
@@ -17,22 +17,31 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
***************************************************************************/
+var ytObject = null;
+
function Youtube()
{
print("Hello youtube");
this.baseUrl = "http://gdata.youtube.com/feeds/api/";
+ this.name = "youtube";
+ ytObject = this;
}
Youtube.prototype.searchMedia = function(queryParams)
{
- var query = queryParams['text'];
- if (query === "" || typeof query === "undefined")
- {
- print("no query defined");
- return;
- }
- print(query);
- var url = this.baseUrl + "videos?q=" + query;
+ var text= queryParams['text'];
+ var maxResults = queryParams['max-results'];
+ var page = queryParams['page'];
+
+ // calculate the index of the first picture in each page
+ var startIndex = (maxResults * page) - (maxResults - 1);;
+
+ var url = buildUrl(this.baseUrl + "videos",
+ {
+ "q" : text,
+ "max-results" : maxResults,
+ "start-index" : startIndex
+ });
print(url);
var result = "";
@@ -58,53 +67,63 @@ Youtube.prototype.searchMedia = function(queryParams)
if (mediaNodes.length == 0)
{
- setData("Youtube", "Error", "No results for " + query + " found");
+ outputErrorMessage(ytObject.name, "", text, ErrorTypes[NORESULTS]);
return;
}
for (var i = 0; i < mediaNodes.length; i++)
{
- try{
- var webmedia = new WebMedia();
- var mediaNodesItem = mediaNodes.item(i);
- if (mediaNodes.length == 0)
+ var webmedia = new WebMedia();
+ var mediaNodesItem = mediaNodes.item(i);
+ if (mediaNodes.length == 0)
+ {
+ outputErrorMessage(ytObject.name, "", text, ErrorTypes[NORESULTS]);
+ return;
+ }
+ //potential nullable items
+ var keywordsItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0).getFirstChild(); + var contentItem = \
mediaNodesItem.getElementsByTagNameNS(mediaNS, "content").item(0); +
+ webmedia.type = MediaTypes[VIDEO];
+ webmedia.id = getID();
+ webmedia.providerSpecificID = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue(); + \
webmedia.title = mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue();
+ webmedia.description = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"description").item(0).getFirstChild().getNodeValue(); +
+ if (keywordsItem)
+ webmedia.keywords = keywordsItem.getNodeValue().split(",");
+
+ webmedia.user = \
mediaNodesItem.getElementsByTagName("author").item(0).getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
+ webmedia.updated = new Date();
+ webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
+ webmedia.published = new Date();
+ webmedia.published.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
+
+ // get the default content item
+ if (contentItem){
+ for (var c = 0; c < mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").length; c++) {
- setData("Youtube", "Error", "No results for " + query + " found");
- return;
+ var cItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(c); + if \
(cItem.getAttributes().getNamedItem("isDefault").getNodeValue() == 'true'){ \
+ webmedia.link = cItem.getAttributes().getNamedItem("url").getNodeValue(); \
+ webmedia.videoFormat = cItem.getAttributes().getNamedItem("type").getNodeValue(); \
+ webmedia.videoDuration = \
cItem.getAttributes().getNamedItem("duration").getNodeValue(); + break;
+ }
}
- //potential nullable items
- var keywordsItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0).getFirstChild();
- var contentItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0);
-
- webmedia.type = MediaType.video;
- webmedia.id = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue();
- webmedia.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue();
- webmedia.description = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"description").item(0).getFirstChild().getNodeValue();
-
- if (typeof(keywordsItem) !== "undefined" && keywordsItem != null)
- webmedia.keywords = keywordsItem.getNodeValue().split(",");
-
- webmedia.author = \
mediaNodesItem.getElementsByTagName("author").item(0).getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
- webmedia.updated = new Date();
- webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
- webmedia.published = new Date();
- webmedia.updated.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
-
- if (typeof(contentItem) !== "undefined" && contentItem != null)
- webmedia.link = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0).getAttributes().getNamedItem("url").getNodeValue();
-
- webmedia.width = 0;
- webmedia.height = 0;
- webmedia.thumbnailLink = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"thumbnail").item(0).getAttributes().getNamedItem("url").getNodeValue();
- setData(webmedia.id, webmedia.toArray());
- }catch(e)
+ }
+ for (var t = 0; t < mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"thumbnail").length; t++) {
- print("A problem occured while parsing.");
+ var tItem = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"thumbnail").item(t); + \
webmedia.addThumbnail(tItem.getAttributes().getNamedItem("url").getNodeValue(), \
tItem.getAttributes().getNamedItem("height"), + \
tItem.getAttributes().getNamedItem("width")); }
+ setData(webmedia.id, webmedia.toArray());
+ webmedia.toArrayString();
}
}catch(e)
{
- print("A problem occured while parsing.");
+ outputErrorMessage(ytObject.name, "", e.message, ErrorTypes[PARSINGERROR]);
}
}
);
@@ -113,9 +132,13 @@ Youtube.prototype.searchMedia = function(queryParams)
Youtube.prototype.searchCollection = function(queryParams)
{
- var query = queryParams['text'];
+ var text = queryParams['text'];
print(query);
- var url = this.baseUrl + "playlists/snippets?q=" + query + "&v=2";
+ var url = buildUrl(this.baseUrl + "playlists/snippets",
+ {
+ "q": text,
+ "v" : "2"
+ });
var ytNS = "http://gdata.youtube.com/schemas/2007";
var result = "";
@@ -136,50 +159,55 @@ Youtube.prototype.searchCollection = function(queryParams)
var mediaNodes = docRoot.getElementsByTagName("entry");
if (mediaNodes.length == 0)
{
- setData("Youtube", "Error", "No results for " + query + " found");
+ outputErrorMessage(ytObject.name, "", text, ErrorTypes[NORESULTS]);
return;
}
for (var i = 0; i < mediaNodes.length; i++)
{
- try{
- var webmediaC = new WebMediaCollection();
- var mediaNodesItem = mediaNodes.item(i);
- var mediaEntriesUrl = null;
- var idForEngine = mediaNodesItem.getElementsByTagNameNS(ytNS, \
"playlistId").item(0).getFirstChild().getNodeValue();
-
- //potential nullable items
- var descriptionItem = \
mediaNodesItem.getElementsByTagName("summary").item(0).getFirstChild();
-
- webmediaC.id = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue();
- webmediaC.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); \
- if (typeof(descriptionItem) !== "undefined" && descriptionItem != null)
- webmediaC.description = descriptionItem.getNodeValue();
- //webmedia.keywords = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0).getFirstChild().getNodeValue().split(",");
- webmediaC.link = \
mediaNodesItem.getElementsByTagName("content").item(0).getAttributes().getNamedItem("src").getNodeValue();
- webmediaC.author = \
mediaNodesItem.getElementsByTagName("author").item(0).getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
- webmediaC.updated = new Date();
- webmediaC.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
- webmediaC.published = new Date();
- webmediaC.updated.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
- //webmedia.link = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0).getAttributes().getNamedItem("url").getNodeValue();
- //webmedia.width = 0;
- //webmedia.height = 0;
- //webmedia.thumbnailLink = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"thumbnail").item(0).getAttributes().getNamedItem("url").getNodeValue();
- setData(idForEngine, webmediaC.toArray());
- }catch(e)
- {
- print("A problem occured while parsing:" + e.message);
- }
+
+ var webmediaCollection = new WebMediaCollection();
+ var mediaNodesItem = mediaNodes.item(i);
+ var mediaEntriesUrl = null;
+ var idForEngine = mediaNodesItem.getElementsByTagNameNS(ytNS, \
"playlistId").item(0).getFirstChild().getNodeValue(); +
+ //potential nullable items
+ var descriptionItem = \
mediaNodesItem.getElementsByTagName("summary").item(0).getFirstChild(); +
+ webmediaCollection.id = getID();
+ webmediaCollection.providerSpecificID = \
mediaNodesItem.getElementsByTagName("id").item(0).getFirstChild().getNodeValue(); + \
webmediaCollection.title = \
mediaNodesItem.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); \
+ if (descriptionItem)
+ webmediaCollection.description = descriptionItem.getNodeValue();
+ //webmedia.keywords = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"keywords").item(0).getFirstChild().getNodeValue().split(","); + \
webmediaCollection.link = \
mediaNodesItem.getElementsByTagName("content").item(0).getAttributes().getNamedItem("src").getNodeValue();
+ webmediaCollection.author = \
mediaNodesItem.getElementsByTagName("author").item(0).getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
+ webmediaCollection.updated = new Date();
+ //webmediaCollection.updated.setISO8601(mediaNodesItem.getElementsByTagName("updated").item(0).getFirstChild().getNodeValue());
+ webmediaCollection.published = new Date();
+ webmediaCollection.updated.setISO8601(mediaNodesItem.getElementsByTagName("published").item(0).getFirstChild().getNodeValue());
+ //webmedia.link = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"content").item(0).getAttributes().getNamedItem("url").getNodeValue(); + \
//webmedia.width = 0; + //webmedia.height = 0;
+ //webmedia.thumbnailLink = mediaNodesItem.getElementsByTagNameNS(mediaNS, \
"thumbnail").item(0).getAttributes().getNamedItem("url").getNodeValue(); + \
setData(webmediaCollection.id, webmediaCollection.toArray()); }
}catch(e)
{
- print("A problem occured while parsing:" + e.message);
+ outputErrorMessage(ytObject.name, "", e.message, ErrorTypes[PARSINGERROR]);
}
}
);
}
+Youtube.prototype.getUploadedUserMedia = function(queryParams)
+{
+
+}
+Youtube.prototype.getUploadedUserCollection = function(queryParams)
+{
+
+}
Youtube.prototype.toString = function()
{
diff --git a/dataengines/addons/youtube/metadata.desktop \
b/dataengines/addons/youtube/metadata.desktop index 6908d7f..5313dd3 100644
--- a/dataengines/addons/youtube/metadata.desktop
+++ b/dataengines/addons/youtube/metadata.desktop
@@ -1,6 +1,6 @@
[Desktop Entry]
Name=Youtube
-Name[de]=YouTube
+Name[de]=Youtube
Name[ja]=Youtube
Name[nds]=Youtube
Name[nl]=Youtube
diff --git a/dataengines/javascript/service/contents/code/mediaapi.js \
b/dataengines/javascript/service/contents/code/mediaapi.js index f7d2f0a..444a3e7 \
100644
--- a/dataengines/javascript/service/contents/code/mediaapi.js
+++ b/dataengines/javascript/service/contents/code/mediaapi.js
@@ -33,6 +33,9 @@ ErrorTypes[INVALIDNUMBER = 2] = "Invalud number.";
ErrorTypes[INVALIDFORMAT = 3] = "Invalid format.";
ErrorTypes[FUNCTIONNOTPROVIDED = 4] = "Function not provided.";
ErrorTypes[NORESULTS = 5] = "No results found.";
+ErrorTypes[NOUSERFOUND = 6] = "No user found.";
+ErrorTypes[PARSINGERROR = 7] = "Error while parsing results";
+ErrorTypes[INTERNALERROR = 8] = "Internal error occured";
// can be continued
@@ -66,31 +69,47 @@ WebMedia = function()
// in bytes ?
this.size = "";
this.thumbnails = new Array();
- this.rating = "";
- this.comments = "";
+
+ //this.rating = 0.0;
+ //this.comments = "";
+
+ // video specific attributes
+ this.videoDuration = 0;
+ this.videoFormat = "";
+ this.videoEmbedCode = "";
+
}
WebMedia.prototype.toArray = function()
{
var array = new Array();
array['type'] = this.type;
- array['provider'] = this.provider;
+ array['provider'] = String(this.provider);
array['id'] = this.id;
- array['title'] = this.title;
- array['author'] = this.author;
- array['description'] = this.description;
- array['keywords'] = this.keywords;
+ array['title'] = String(this.title);
+ array['user'] = String(this.user);
+ array['description'] = String(this.description);
+ array['keywords'] = String(this.keywords);
array['updated'] = this.updated;
array['published'] = this.published;
- array['link'] = this.link;
- array['width'] = this.width;
- array['height'] = this.height;
- array['size'] = this.size;
+ array['link'] = String(this.link);
+ array['width'] = parseInt(this.width);
+ array['height'] = parseInt(this.height);
+ array['size'] = parseInt(this.size);
for (var i = 0; i < this.thumbnails.length; i++)
- array['thumbnail' + i] = this.thumbnails[i].url;
+ array['thumbnail' + i] = String(this.thumbnails[i].url);
return array;
}
+WebMedia.prototype.toArrayString = function()
+{
+ var arr = this.toArray();
+ for (var key in arr)
+ {
+ print(key + " : " + arr[key]);
+ }
+}
+
WebMedia.prototype.addThumbnail = function(url, height, width)
{
var thumb = new Thumbnail();
@@ -164,4 +183,4 @@ WebMediaCollection.prototype.toArray = function()
arr['updated'] = this.updated;
arr['link'] = this.link;
return arr;
-}
+}
\ No newline at end of file
diff --git a/dataengines/javascript/service/contents/code/mediaservice.js \
b/dataengines/javascript/service/contents/code/mediaservice.js index 360fb41..c1dfded \
100644
--- a/dataengines/javascript/service/contents/code/mediaservice.js
+++ b/dataengines/javascript/service/contents/code/mediaservice.js
@@ -27,7 +27,7 @@ engine.include('mediaapi.js');
var addons = new Array();
var selectedAddon = null;
var webmediaID = 0;
-print("Hello");
+
function getID()
{
return webmediaID++;
@@ -66,6 +66,12 @@ function GetAddon(name)
return null;
}
+/*var cMaxResults = engine.readConfig("MaxResults");
+var cPage = engine.readConfig("Page");
+print(cMaxResults);
+print(cPage);
+*/
+
// PARAMETER CHECK FUNCTIONS FOR EACH FUNCTION IN THE INTERFACE
// ALL OF THE RETURN A NEW ARRAY OF PARAMETERS
// OPTIONAL PARAMETERS GET DEFAULT VALUES
diff --git a/dataengines/javascript/service/contents/code/stdutils.js \
b/dataengines/javascript/service/contents/code/stdutils.js index 50ec591..91659f8 \
100644
--- a/dataengines/javascript/service/contents/code/stdutils.js
+++ b/dataengines/javascript/service/contents/code/stdutils.js
@@ -1,5 +1,12 @@
// INET HELPER FUNCTIONS
+/*
+ * Makes a http request
+ * @param webengine: the engine that makes the request
+ * @param url: the url to make a request to
+ * @param onDataCallBack: function pointer, when data arrives
+ * @param onFinishedCallBack: function pointer, when the request finished
+ */
function doRequest(webengine, url, onDataCallBack, onFinishedCallBack)
{
var io = webengine.getUrl(url);
@@ -7,16 +14,21 @@ function doRequest(webengine, url, onDataCallBack, \
onFinishedCallBack) io.finished.connect(onFinishedCallBack);
}
+/*
+ * Builds an url with query
+ * @param baseUrl: the base url to build the url on
+ * @param queryItems: array of key value pairs, which represent the query
+ * @return a complete url, e.g. http://www.example.com?test=true
+ * returns the base url when queryItems is empty
+ */
function buildUrl(baseUrl, queryItems)
{
var newUrl = "";
- if (queryItems == null)
+ if (!queryItems)
return baseUrl;
if (baseUrl.charAt(baseUrl.length - 1) != '/')
baseUrl.concat("/");
-
- // build query in the url
newUrl = baseUrl + "?";
for (var key in queryItems)
{
@@ -54,6 +66,11 @@ Date.prototype.setISO8601 = function(string) {
this.setTime(Number(time));
}
+function UnixToDate(unixTimeStamp)
+{
+ return new Date(unixTimeStamp * 1000);
+}
+
// OUTPUT FUNCTIONS
@@ -61,6 +78,7 @@ var errorID = 0;
function outputErrorMessage(provider, providerSpecificCode, identifier, message)
{
+ print(identifier + " caused a problem in " + provider + ": " + message);
setData("Error:" + errorID,
{
"provider" : provider,
diff --git a/dataengines/javascript/service/contents/services/provider.operations \
b/dataengines/javascript/service/contents/services/provider.operations index \
3aea438..29730c3 100644
--- a/dataengines/javascript/service/contents/services/provider.operations
+++ b/dataengines/javascript/service/contents/services/provider.operations
@@ -12,7 +12,6 @@
</group>
<group name="getUploadedUserMedia">
<entry name="user" type="string"/>
- <entry name="providerCollectionID" type="string"/> <!-- Provilder specific id of \
a collection --> <entry name="max-results" type="string"/>
<entry name="page" type="string" />
</group>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic