Browse Source

Support custom save path / label for RSS feeds using magnet links

adaptive-webui-19844
Christophe Dumez 12 years ago
parent
commit
74079b2c86
  1. 19
      src/qtlibtorrent/qbtsession.cpp
  2. 2
      src/qtlibtorrent/qbtsession.h
  3. 2
      src/rss/rssfeed.cpp

19
src/qtlibtorrent/qbtsession.cpp

@ -952,7 +952,17 @@ QTorrentHandle QBtSession::addMagnetUri(QString magnet_uri, bool resumed, bool f
add_torrent_params p = initializeAddTorrentParams(hash); add_torrent_params p = initializeAddTorrentParams(hash);
// Get save path // Get save path
const QString savePath(getSavePath(hash, fromScanDir, filePath)); QString savePath;
if (!resumed && savepathLabel_fromurl.contains(magnet_uri)) {
QPair<QString, QString> 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) { if (!defaultTempPath.isEmpty() && !TorrentPersistentData::isSeed(hash) && resumed) {
qDebug("addMagnetURI: Temp folder is enabled."); qDebug("addMagnetURI: Temp folder is enabled.");
QString torrent_tmp_path = defaultTempPath.replace("\\", "/"); QString torrent_tmp_path = defaultTempPath.replace("\\", "/");
@ -2647,14 +2657,17 @@ void QBtSession::addMagnetInteractive(const QString& uri)
emit newMagnetLink(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); addMagnetUri(uri, false);
} }
void QBtSession::downloadUrlAndSkipDialog(QString url, QString save_path, QString label) { void QBtSession::downloadUrlAndSkipDialog(QString url, QString save_path, QString label) {
//emit aboutToDownloadFromUrl(url); //emit aboutToDownloadFromUrl(url);
const QUrl qurl = QUrl::fromEncoded(url.toUtf8()); 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; url_skippingDlg << qurl;
// Launch downloader thread // Launch downloader thread
downloader->downloadTorrentUrl(url); downloader->downloadTorrentUrl(url);

2
src/qtlibtorrent/qbtsession.h

@ -161,7 +161,7 @@ public slots:
#endif #endif
void addPeerBanMessage(QString msg, bool from_ipfilter); void addPeerBanMessage(QString msg, bool from_ipfilter);
void processDownloadedFile(QString, QString); 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 addMagnetInteractive(const QString& uri);
void downloadFromURLList(const QStringList& urls); void downloadFromURLList(const QStringList& urls);
void configureSession(); void configureSession();

2
src/rss/rssfeed.cpp

@ -296,7 +296,7 @@ void RssFeed::downloadMatchingArticleTorrents() {
QString torrent_url = article->hasAttachment() ? article->torrentUrl() : article->link(); QString torrent_url = article->hasAttachment() ? article->torrentUrl() : article->link();
QBtSession::instance()->addConsoleMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(article->title()).arg(displayName())); QBtSession::instance()->addConsoleMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(article->title()).arg(displayName()));
if (torrent_url.startsWith("magnet:", Qt::CaseInsensitive)) if (torrent_url.startsWith("magnet:", Qt::CaseInsensitive))
QBtSession::instance()->addMagnetSkipAddDlg(torrent_url); QBtSession::instance()->addMagnetSkipAddDlg(torrent_url, matching_rule.savePath(), matching_rule.label());
else else
QBtSession::instance()->downloadUrlAndSkipDialog(torrent_url, matching_rule->savePath(), matching_rule->label()); QBtSession::instance()->downloadUrlAndSkipDialog(torrent_url, matching_rule->savePath(), matching_rule->label());
} }

Loading…
Cancel
Save