From 7cecad4e82c2ab3d4e0350befa50329544e66174 Mon Sep 17 00:00:00 2001 From: ngosang Date: Tue, 4 Aug 2015 02:43:45 +0200 Subject: [PATCH] [RSS] Improve error handling when a RSS feed doesn't contain torrents --- src/gui/rss/rss_imp.cpp | 2 ++ src/gui/rss/rssarticle.cpp | 4 ++-- src/gui/rss/rssfeed.cpp | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/gui/rss/rss_imp.cpp b/src/gui/rss/rss_imp.cpp index 70fde72b6..e4c6378b5 100644 --- a/src/gui/rss/rss_imp.cpp +++ b/src/gui/rss/rss_imp.cpp @@ -352,6 +352,8 @@ void RSSImp::downloadSelectedTorrents() RssArticlePtr article = feed->getItem(item->data(Article::IdRole).toString()); if (!article) continue; + if (article->torrentUrl().isEmpty()) + continue; QString torrentLink = article->torrentUrl(); // Check if it is a magnet link if (torrentLink.startsWith("magnet:", Qt::CaseInsensitive)) { diff --git a/src/gui/rss/rssarticle.cpp b/src/gui/rss/rssarticle.cpp index a0262c1de..fbc7218bf 100644 --- a/src/gui/rss/rssarticle.cpp +++ b/src/gui/rss/rssarticle.cpp @@ -82,7 +82,7 @@ const QString& RssArticle::author() const { } const QString& RssArticle::torrentUrl() const { - return m_torrentUrl.isEmpty() ? m_link : m_torrentUrl; + return m_torrentUrl; } const QString& RssArticle::link() const { @@ -123,6 +123,6 @@ const QString& RssArticle::title() const } void RssArticle::handleTorrentDownloadSuccess(const QString &url) { - if (url == m_torrentUrl || url == m_link) + if (url == m_torrentUrl) markAsRead(); } diff --git a/src/gui/rss/rssfeed.cpp b/src/gui/rss/rssfeed.cpp index fb061f42a..765a39452 100644 --- a/src/gui/rss/rssfeed.cpp +++ b/src/gui/rss/rssfeed.cpp @@ -367,6 +367,12 @@ void RssFeed::downloadArticleTorrentIfMatching(RssDownloadRuleList* rules, const rules->saveRulesToStorage(); // Download the torrent const QString& torrent_url = article->torrentUrl(); + if (torrent_url.isEmpty()) { + Logger::instance()->addMessage(tr("Automatic download %1 from %2 RSS feed failed because it doesn't contain a torrent or a magnet link...").arg(article->title()).arg(displayName()), Log::WARNING); + article->markAsRead(); + return; + } + Logger::instance()->addMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(article->title()).arg(displayName())); connect(QBtSession::instance(), SIGNAL(newDownloadedTorrentFromRss(QString)), article.data(), SLOT(handleTorrentDownloadSuccess(const QString&)), Qt::UniqueConnection); connect(article.data(), SIGNAL(articleWasRead()), SLOT(handleArticleStateChanged()), Qt::UniqueConnection);