[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kmplayer/0.11] src: Fix SMIL intro for RSS media:group if title/image/descr only in item
From: Koos Vriezen <koos.vriezen () gmail ! com>
Date: 2016-07-02 18:59:33
Message-ID: E1bJQ8b-00089Z-T2 () code ! kde ! org
[Download RAW message or body]
Git commit 0e91b341d277d91c659512d212f521363f04613d by Koos Vriezen.
Committed on 02/07/2016 at 18:57.
Pushed by vriezen into branch '0.11'.
Fix SMIL intro for RSS media:group if title/image/descr only in item
Also noted that instead of fileSize, bitrate could be given. Link I
tried was
http://www.arte.tv/papi/tvguide-flow/feeds/videos/de.xml?type=ARTE_PLUS_SEVEN
M +31 -10 src/kmplayer_atom.cpp
M +2 -1 src/kmplayer_atom.h
M +10 -1 src/kmplayer_rss.cpp
M +2 -1 src/kmplayer_rss.h
http://commits.kde.org/kmplayer/0e91b341d277d91c659512d212f521363f04613d
diff --git a/src/kmplayer_atom.cpp b/src/kmplayer_atom.cpp
index 7d62240..1e398fc 100644
--- a/src/kmplayer_atom.cpp
+++ b/src/kmplayer_atom.cpp
@@ -90,7 +90,7 @@ void ATOM::Entry::closed () {
group = static_cast <MediaGroup *> (c);
}
if (group)
- group->addSummary (this, rating);
+ group->addSummary (this, rating, QString(), QString(), QString(), 0, 0);
Element::closed ();
}
@@ -194,8 +194,18 @@ static QString makeStar (int x, bool fill) {
return path;
}
+static QString makeImage(const QString& url, int width, int height) {
+ QString str = QString ("<img region=\"image\" src=\"") + url + QChar ('"');
+ if (width && height) {
+ str += QString(" width=\"%1\" height=\"%2\"").arg(width).arg(height);
+ }
+ str += QString (" dur=\"20\" transIn=\"fade\" fill=\"transition\" \
fit=\"meet\"/>"); + return str;
+}
+
//http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html
-void ATOM::MediaGroup::addSummary (Node *p, Node *rating_node) {
+void ATOM::MediaGroup::addSummary(Node *p, Node *rating_node,
+ const QString& alt_title, const QString& alt_desc, const QString& alt_img, \
int width, int height) { QString images;
QString desc;
QString title;
@@ -230,20 +240,22 @@ void ATOM::MediaGroup::addSummary (Node *p, Node *rating_node) \
{ Element *e = static_cast <Element *> (c);
QString url = e->getAttribute (Ids::attr_url);
if (!url.isEmpty ()) {
- images += QString ("<img region=\"image\" src=\"") + url + QChar \
('"');
- QString w = e->getAttribute (Ids::attr_width);
- if (!w.isEmpty ())
- images += QString (" width=\"") + w + QChar ('"');
- QString h = e->getAttribute (Ids::attr_height);
- if (!h.isEmpty ())
- images += QString (" height=\"") + h + QChar ('"');
- images += QString (" dur=\"20\" transIn=\"fade\" fill=\"transition\" \
fit=\"meet\"/>"); + images += makeImage(url, e->getAttribute \
(Ids::attr_width).toInt(), + e->getAttribute \
(Ids::attr_height).toInt()); img_count++;
}
break;
}
}
}
+ if (title.isEmpty())
+ title = alt_title;
+ if (desc.isEmpty())
+ desc = alt_desc;
+ if (!img_count && !alt_img.isEmpty()) {
+ images = makeImage(alt_img, width, height);
+ ++img_count;
+ }
if (img_count) {
QString buf;
QTextStream out (&buf, QIODevice::WriteOnly);
@@ -290,7 +302,9 @@ void ATOM::MediaGroup::addSummary (Node *p, Node *rating_node) {
void ATOM::MediaContent::closed () {
unsigned fsize = 0;
+ unsigned bitrate = 0;
TrieString fs ("fileSize");
+ TrieString rate ("bitrate");
for (Attribute *a = attributes ().first (); a; a = a->nextSibling ()) {
if (a->name () == Ids::attr_url)
src = a->value();
@@ -304,6 +318,8 @@ void ATOM::MediaContent::closed () {
size.width = a->value ().toInt ();
else if (a->name () == fs)
fsize = a->value ().toInt ();
+ else if (a->name () == rate)
+ bitrate = a->value ().toInt ();
}
if (!mimetype.isEmpty ()) {
title = mimetype;
@@ -312,6 +328,11 @@ void ATOM::MediaContent::closed () {
title += QString (" (%1 Mb)").arg (fsize / (1024 * 1024));
else
title += QString (" (%1 kb)").arg (fsize / 1024);
+ } else if (bitrate > 0) {
+ if (bitrate > 10 * 1024)
+ title += QString(" (%1 Mbit/s)").arg(bitrate / 1024);
+ else
+ title += QString(" (%1 kbit/s)").arg(bitrate);
}
}
Mrl::closed ();
diff --git a/src/kmplayer_atom.h b/src/kmplayer_atom.h
index 2488f2f..6ec41fe 100644
--- a/src/kmplayer_atom.h
+++ b/src/kmplayer_atom.h
@@ -87,7 +87,8 @@ public:
Node *childFromTag (const QString &tag);
void message (MessageType msg, void *content=NULL);
KDE_NO_EXPORT const char *nodeName () const { return "media:group"; }
- void addSummary (Node *parent, Node *ratings);
+ void addSummary (Node *parent, Node *ratings, const QString& alt_title, const \
QString& alt_desc, + const QString& alt_img, int width, int \
height); };
class KMPLAYER_NO_EXPORT MediaContent : public Mrl {
diff --git a/src/kmplayer_rss.cpp b/src/kmplayer_rss.cpp
index 91b2ef9..bab35f8 100644
--- a/src/kmplayer_rss.cpp
+++ b/src/kmplayer_rss.cpp
@@ -79,6 +79,8 @@ KDE_NO_EXPORT Node *RSS::Item::childFromTag (const QString & tag) {
return new DarkNode (m_doc, ctag, id_node_category);
else if (!strcmp (ctag, "media:group"))
return new ATOM::MediaGroup (m_doc);
+ else if (!strcmp (ctag, "media:thumbnail"))
+ return new DarkNode (m_doc, ctag, id_node_thumbnail);
else if (!strncmp (ctag, "itunes", 6) ||
!strncmp (ctag, "feedburner", 10) ||
!strcmp (ctag, "link") ||
@@ -94,6 +96,8 @@ KDE_NO_EXPORT void RSS::Item::closed () {
ATOM::MediaGroup *group = NULL;
Enclosure *enclosure = NULL;
QString description;
+ QString thumbnail;
+ int width = 0, height = 0;
for (Node *c = firstChild (); c; c = c->nextSibling ()) {
switch (c->id) {
case id_node_title:
@@ -108,10 +112,15 @@ KDE_NO_EXPORT void RSS::Item::closed () {
case ATOM::id_node_media_group:
group = static_cast <ATOM::MediaGroup *> (c);
break;
+ case id_node_thumbnail:
+ thumbnail = \
static_cast<Element*>(c)->getAttribute(Ids::attr_url); + width = \
static_cast<Element*>(c)->getAttribute(Ids::attr_width).toInt(); + \
height = static_cast<Element*>(c)->getAttribute(Ids::attr_height).toInt(); + \
break; }
}
if (group)
- group->addSummary (this, NULL);
+ group->addSummary (this, NULL, title, description, thumbnail, width, \
height); if (enclosure) {
enclosure->setCaption (title);
enclosure->description = description;
diff --git a/src/kmplayer_rss.h b/src/kmplayer_rss.h
index cf0da52..4ad2b39 100644
--- a/src/kmplayer_rss.h
+++ b/src/kmplayer_rss.h
@@ -36,7 +36,8 @@ const short id_node_title = 203;
const short id_node_description = 204;
const short id_node_enclosure = 205;
const short id_node_category = 206;
-const short id_node_ignored = 207;
+const short id_node_thumbnail = 207;
+const short id_node_ignored = 208;
/**
* '<RSS>' tag
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic