RSS allow infinite range to extend beyond current season. Closes #800, #3876, #6170.

--HG--
branch : magao-dev
This commit is contained in:
Tim Delaney 2016-11-07 07:18:06 +11:00 committed by sledgehammer999
parent a66ed05ecd
commit cbc001e059
No known key found for this signature in database
GPG key ID: 6E4A2D025B7CC9A2
2 changed files with 10 additions and 7 deletions

View file

@ -153,6 +153,7 @@ bool DownloadRule::matches(const QString &articleTitle) const
QString s = f.cap(1);
QStringList eps = f.cap(2).split(";");
int sOurs = s.toInt();
foreach (const QString &epStr, eps) {
if (epStr.isEmpty())
@ -165,8 +166,8 @@ bool DownloadRule::matches(const QString &articleTitle) const
ep = ep.right(ep.size() - 1);
if (ep.indexOf('-') != -1) { // Range detected
QString partialPattern1 = "\\bs0?" + s + "[ -_\\.]?" + "e(0?\\d{1,4})(?:\\D|\\b)";
QString partialPattern2 = "\\b" + s + "x" + "(0?\\d{1,4})(?:\\D|\\b)";
QString partialPattern1 = "\\bs0?(\\d{1,4})[ -_\\.]?e(0?\\d{1,4})(?:\\D|\\b)";
QString partialPattern2 = "\\b(\\d{1,4})x(0?\\d{1,4})(?:\\D|\\b)";
QRegExp reg(partialPattern1, Qt::CaseInsensitive);
if (ep.endsWith('-')) { // Infinite range
@ -181,8 +182,9 @@ bool DownloadRule::matches(const QString &articleTitle) const
}
if (pos != -1) {
int epTheirs = reg.cap(1).toInt();
if (epTheirs >= epOurs) {
int sTheirs = reg.cap(1).toInt();
int epTheirs = reg.cap(2).toInt();
if (((sTheirs == sOurs) && (epTheirs >= epOurs)) || (sTheirs > sOurs)) {
qDebug() << "Matched episode:" << ep;
qDebug() << "Matched article:" << articleTitle;
return true;
@ -207,8 +209,9 @@ bool DownloadRule::matches(const QString &articleTitle) const
}
if (pos != -1) {
int epTheirs = reg.cap(1).toInt();
if ((epOursFirst <= epTheirs) && (epOursLast >= epTheirs)) {
int sTheirs = reg.cap(1).toInt();
int epTheirs = reg.cap(2).toInt();
if ((sTheirs == sOurs) && ((epOursFirst <= epTheirs) && (epOursLast >= epTheirs))) {
qDebug() << "Matched episode:" << ep;
qDebug() << "Matched article:" << articleTitle;
return true;

View file

@ -81,7 +81,7 @@ AutomatedRssDownloader::AutomatedRssDownloader(const QWeakPointer<Rss::Manager>
+ "<li>" + tr("Three range types for episodes are supported: ") + "</li>" + "<li><ul>"
"<li>" + tr("Single number: <b>1x25;</b> matches episode 25 of season one") + "</li>"
+ "<li>" + tr("Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one") + "</li>"
+ "<li>" + tr("Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one") + "</li>" + "</ul></li></ul>";
+ "<li>" + tr("Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons") + "</li>" + "</ul></li></ul>";
ui->lineEFilter->setToolTip(tip);
initCategoryCombobox();
loadFeedList();