diff options
-rw-r--r-- | movieinfopage.cpp | 23 | ||||
-rw-r--r-- | movieinfopage.h | 3 |
2 files changed, 24 insertions, 2 deletions
diff --git a/movieinfopage.cpp b/movieinfopage.cpp index ae77d00..4b02b05 100644 --- a/movieinfopage.cpp +++ b/movieinfopage.cpp @@ -232,10 +232,31 @@ void MovieInfoPage::extractMetadata(){ fn.replace(".mkv", ""); fn.replace(".mp4", ""); fn.replace(".", " "); - mSubtitle->setText(fn); + if(!extractFromTitle(fn)){ + mSubtitle->setText(fn); + } + } + } +} +bool MovieInfoPage::extractFromTitle(const QString &title){ + QString curTitle = title; + static QRegularExpression removals("\\(4[kK]\\)"); + static QRegularExpression titleRe("^(.*)?\\s?-\\s?(.*?)\\s+\\((\\d{4}-\\d{2}-\\d{2})\\)"); + curTitle = curTitle.replace(removals, ""); + QRegularExpressionMatch titleMatch = titleRe.match(curTitle); + if(titleMatch.hasMatch()){ + QString subtitle = titleMatch.captured(2).simplified().toLower(); + QDate created = QDate::fromString(titleMatch.captured(3), Qt::ISODate); + QStringList actors = titleMatch.captured(1).split('&'); + for(const auto &a : std::as_const(actors)){ + mPossbileActors.append(a.simplified().toLower()); } + mSubtitle->setText(subtitle); + mCreationDate->setDate(created); + return true; } + return false; } void MovieInfoPage::addOld(){ diff --git a/movieinfopage.h b/movieinfopage.h index 0407c33..d0354b2 100644 --- a/movieinfopage.h +++ b/movieinfopage.h @@ -8,7 +8,6 @@ #ifndef MOVIEINFOPAGE_H #define MOVIEINFOPAGE_H -#include <QDateTime> #include <QWizardPage> class WizardTreeModel; @@ -48,6 +47,7 @@ class MovieInfoPage : public QWizardPage { private: void setupGui(); + bool extractFromTitle(const QString &title); SmTreeView *mFileView; QLineEdit *mTitle; QLineEdit *mSubtitle; @@ -64,6 +64,7 @@ class MovieInfoPage : public QWizardPage { QString mCurTitle; QString mCurSubtitle; QStringList mOrigins; + QStringList mPossbileActors; int mCurSeriesno; int mCurQuality; }; |