From d8054f9cb34b264f9fd50563c01ebd0600694f7f Mon Sep 17 00:00:00 2001 From: Stephen Dawkins Date: Sun, 23 Sep 2018 20:31:01 +0100 Subject: [PATCH] Allow to disable downloading REPACK/PROPER matches --- src/base/rss/rss_autodownloader.cpp | 11 +++++++++++ src/base/rss/rss_autodownloader.h | 3 +++ src/base/rss/rss_autodownloadrule.cpp | 2 +- src/gui/optionsdialog.cpp | 3 +++ src/gui/optionsdialog.ui | 16 +++++++++++++++- 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/base/rss/rss_autodownloader.cpp b/src/base/rss/rss_autodownloader.cpp index 007bbae54..de29f00b3 100644 --- a/src/base/rss/rss_autodownloader.cpp +++ b/src/base/rss/rss_autodownloader.cpp @@ -66,6 +66,7 @@ const QString RulesFileName(QStringLiteral("download_rules.json")); const QString SettingsKey_ProcessingEnabled(QStringLiteral("RSS/AutoDownloader/EnableProcessing")); const QString SettingsKey_SmartEpisodeFilter(QStringLiteral("RSS/AutoDownloader/SmartEpisodeFilter")); +const QString SettingsKey_DownloadRepacks(QStringLiteral("RSS/AutoDownloader/DownloadRepacks")); namespace { @@ -310,6 +311,16 @@ void AutoDownloader::setSmartEpisodeFilters(const QStringList &filters) m_smartEpisodeRegex.setPattern(regex); } +bool AutoDownloader::downloadRepacks() const +{ + return SettingsStorage::instance()->loadValue(SettingsKey_DownloadRepacks, true).toBool(); +} + +void AutoDownloader::setDownloadRepacks(const bool downloadRepacks) +{ + SettingsStorage::instance()->storeValue(SettingsKey_DownloadRepacks, downloadRepacks); +} + void AutoDownloader::process() { if (m_processingQueue.isEmpty()) return; // processing was disabled diff --git a/src/base/rss/rss_autodownloader.h b/src/base/rss/rss_autodownloader.h index 5b61741a4..43b908730 100644 --- a/src/base/rss/rss_autodownloader.h +++ b/src/base/rss/rss_autodownloader.h @@ -85,6 +85,9 @@ namespace RSS void setSmartEpisodeFilters(const QStringList &filters); QRegularExpression smartEpisodeRegex() const; + bool downloadRepacks() const; + void setDownloadRepacks(bool downloadRepacks); + bool hasRule(const QString &ruleName) const; AutoDownloadRule ruleByName(const QString &ruleName) const; QList rules() const; diff --git a/src/base/rss/rss_autodownloadrule.cpp b/src/base/rss/rss_autodownloadrule.cpp index f7dbfc5af..f87846fe9 100644 --- a/src/base/rss/rss_autodownloadrule.cpp +++ b/src/base/rss/rss_autodownloadrule.cpp @@ -344,7 +344,7 @@ bool AutoDownloadRule::matchesSmartEpisodeFilter(const QString& articleTitle) co // See if this episode has been downloaded before const bool previouslyMatched = m_dataPtr->previouslyMatchedEpisodes.contains(episodeStr); const bool isRepack = articleTitle.contains("REPACK", Qt::CaseInsensitive) || articleTitle.contains("PROPER", Qt::CaseInsensitive); - if (previouslyMatched && !isRepack) + if (previouslyMatched && (!isRepack || !AutoDownloader::instance()->downloadRepacks())) return false; m_dataPtr->lastComputedEpisode = episodeStr; diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp index a0d8e9d0a..ffb880824 100644 --- a/src/gui/optionsdialog.cpp +++ b/src/gui/optionsdialog.cpp @@ -407,6 +407,7 @@ OptionsDialog::OptionsDialog(QWidget *parent) connect(m_ui->checkRSSEnable, &QCheckBox::toggled, this, &OptionsDialog::enableApplyButton); connect(m_ui->checkRSSAutoDownloaderEnable, &QCheckBox::toggled, this, &OptionsDialog::enableApplyButton); connect(m_ui->textSmartEpisodeFilters, &QPlainTextEdit::textChanged, this, &OptionsDialog::enableApplyButton); + connect(m_ui->checkSmartFilterDownloadRepacks, &QCheckBox::toggled, this, &OptionsDialog::enableApplyButton); connect(m_ui->spinRSSRefreshInterval, qSpinBoxValueChanged, this, &OptionsDialog::enableApplyButton); connect(m_ui->spinRSSMaxArticlesPerFeed, qSpinBoxValueChanged, this, &OptionsDialog::enableApplyButton); connect(m_ui->btnEditRules, &QPushButton::clicked, this, [this]() { AutomatedRssDownloader(this).exec(); }); @@ -593,6 +594,7 @@ void OptionsDialog::saveOptions() RSS::Session::instance()->setProcessingEnabled(m_ui->checkRSSEnable->isChecked()); RSS::AutoDownloader::instance()->setProcessingEnabled(m_ui->checkRSSAutoDownloaderEnable->isChecked()); RSS::AutoDownloader::instance()->setSmartEpisodeFilters(m_ui->textSmartEpisodeFilters->toPlainText().split('\n', QString::SplitBehavior::SkipEmptyParts)); + RSS::AutoDownloader::instance()->setDownloadRepacks(m_ui->checkSmartFilterDownloadRepacks->isChecked()); auto session = BitTorrent::Session::instance(); @@ -829,6 +831,7 @@ void OptionsDialog::loadOptions() m_ui->checkRSSEnable->setChecked(RSS::Session::instance()->isProcessingEnabled()); m_ui->checkRSSAutoDownloaderEnable->setChecked(RSS::AutoDownloader::instance()->isProcessingEnabled()); m_ui->textSmartEpisodeFilters->setPlainText(RSS::AutoDownloader::instance()->smartEpisodeFilters().join('\n')); + m_ui->checkSmartFilterDownloadRepacks->setChecked(RSS::AutoDownloader::instance()->downloadRepacks()); m_ui->spinRSSRefreshInterval->setValue(RSS::Session::instance()->refreshInterval()); m_ui->spinRSSMaxArticlesPerFeed->setValue(RSS::Session::instance()->maxArticlesPerFeed()); diff --git a/src/gui/optionsdialog.ui b/src/gui/optionsdialog.ui index 7909942b3..a24bd9d3b 100644 --- a/src/gui/optionsdialog.ui +++ b/src/gui/optionsdialog.ui @@ -2833,9 +2833,23 @@ - RSS Smart Episode Filters + RSS Smart Episode Filter + + + + Download REPACK/PROPER episodes + + + + + + + Filters: + + +