From 11e0b7c9b5177573fe068fbecf9c780d227c2010 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Sun, 24 Jun 2012 16:46:41 +0300 Subject: [PATCH] Support custom save path / label for RSS feeds using magnet links --- src/qtlibtorrent/qbtsession.cpp | 19 ++++++++++++++++--- src/qtlibtorrent/qbtsession.h | 2 +- src/rss/rssfeed.cpp | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/qtlibtorrent/qbtsession.cpp b/src/qtlibtorrent/qbtsession.cpp index a11ee6b10..b7468fc75 100644 --- a/src/qtlibtorrent/qbtsession.cpp +++ b/src/qtlibtorrent/qbtsession.cpp @@ -972,7 +972,17 @@ QTorrentHandle QBtSession::addMagnetUri(QString magnet_uri, bool resumed) { add_torrent_params p = initializeAddTorrentParams(hash); // Get save path - const QString savePath(getSavePath(hash, false)); + QString savePath; + if (!resumed && savepathLabel_fromurl.contains(magnet_uri)) { + QPair savePath_label = savepathLabel_fromurl.take(magnet_uri); + if(!savePath_label.first.isEmpty()) + savePath = savePath_label.first; + // Remember label + if(!savePath_label.second.isEmpty()) + TorrentTempData::setLabel(hash, savePath_label.second); + } + if (savePath.isEmpty()) + savePath = getSavePath(hash, false); if(!defaultTempPath.isEmpty() && !TorrentPersistentData::isSeed(hash) && resumed) { qDebug("addMagnetURI: Temp folder is enabled."); QString torrent_tmp_path = defaultTempPath.replace("\\", "/"); @@ -2780,14 +2790,17 @@ void QBtSession::addMagnetInteractive(const QString& uri) emit newMagnetLink(uri); } -void QBtSession::addMagnetSkipAddDlg(const QString& uri) { +void QBtSession::addMagnetSkipAddDlg(const QString& uri, const QString& save_path, const QString& label) { + if (!save_path.isEmpty() || !label.isEmpty()) + savepathLabel_fromurl[uri] = qMakePair(save_path, label); addMagnetUri(uri, false); } void QBtSession::downloadUrlAndSkipDialog(QString url, QString save_path, QString label) { //emit aboutToDownloadFromUrl(url); const QUrl qurl = QUrl::fromEncoded(url.toUtf8()); - savepathLabel_fromurl[qurl] = qMakePair(save_path, label); + if (!save_path.isEmpty() || !label.isEmpty()) + savepathLabel_fromurl[qurl] = qMakePair(save_path, label); url_skippingDlg << qurl; // Launch downloader thread downloader->downloadTorrentUrl(url); diff --git a/src/qtlibtorrent/qbtsession.h b/src/qtlibtorrent/qbtsession.h index 5c4319e0d..1318a912e 100644 --- a/src/qtlibtorrent/qbtsession.h +++ b/src/qtlibtorrent/qbtsession.h @@ -164,7 +164,7 @@ public slots: #endif void addPeerBanMessage(QString msg, bool from_ipfilter); void processDownloadedFile(QString, QString); - void addMagnetSkipAddDlg(const QString& uri); + void addMagnetSkipAddDlg(const QString& uri, const QString& save_path = QString(), const QString& label = QString()); void addMagnetInteractive(const QString& uri); void downloadFromURLList(const QStringList& urls); void configureSession(); diff --git a/src/rss/rssfeed.cpp b/src/rss/rssfeed.cpp index 74c128dbf..301f6cc70 100644 --- a/src/rss/rssfeed.cpp +++ b/src/rss/rssfeed.cpp @@ -315,7 +315,7 @@ void RssFeed::downloadMatchingArticleTorrents() { // Download the torrent QBtSession::instance()->addConsoleMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(item.title()).arg(displayName())); if (torrent_url.startsWith("magnet:", Qt::CaseInsensitive)) - QBtSession::instance()->addMagnetSkipAddDlg(torrent_url); + QBtSession::instance()->addMagnetSkipAddDlg(torrent_url, matching_rule.savePath(), matching_rule.label()); else QBtSession::instance()->downloadUrlAndSkipDialog(torrent_url, matching_rule.savePath(), matching_rule.label()); }