]> git.sur5r.net Git - minitube/blob - src/ytstandardfeed.cpp
Imported Upstream version 2.0
[minitube] / src / ytstandardfeed.cpp
1 #include "ytstandardfeed.h"
2 #include <QtXml>
3 #include "networkaccess.h"
4 #include "video.h"
5 #include "ytfeedreader.h"
6
7 namespace The {
8 NetworkAccess* http();
9 }
10
11 YTStandardFeed::YTStandardFeed(QObject *parent)
12     : VideoSource(parent),
13       aborted(false) { }
14
15 void YTStandardFeed::loadVideos(int max, int skip) {
16     aborted = false;
17
18     QString s = "http://gdata.youtube.com/feeds/api/standardfeeds/";
19     if (!regionId.isEmpty()) s += regionId + "/";
20     s += feedId;
21     if (!category.isEmpty()) s += "_" + category;
22
23     QUrl url(s);
24     url.addQueryItem("v", "2");
25
26     if (feedId != "most_shared")
27         url.addQueryItem("time", "today");
28
29     url.addQueryItem("max-results", QString::number(max));
30     url.addQueryItem("start-index", QString::number(skip));
31
32     QObject *reply = The::http()->get(url);
33     connect(reply, SIGNAL(data(QByteArray)), SLOT(parse(QByteArray)));
34     connect(reply, SIGNAL(error(QNetworkReply*)), SLOT(requestError(QNetworkReply*)));
35 }
36
37 void YTStandardFeed::abort() {
38     aborted = true;
39 }
40
41 const QStringList & YTStandardFeed::getSuggestions() {
42     QStringList *l = new QStringList();
43     return *l;
44 }
45
46 void YTStandardFeed::parse(QByteArray data) {
47     if (aborted) return;
48
49     YTFeedReader reader(data);
50     QList<Video*> videos = reader.getVideos();
51
52     emit gotVideos(videos);
53     emit finished(videos.size());
54 }
55
56 void YTStandardFeed::requestError(QNetworkReply *reply) {
57     emit error(reply->errorString());
58 }