summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2024-06-26 09:58:19 +0200
committerArno <arno@disconnect.de>2024-06-26 09:58:19 +0200
commit0990aaa7ff6d35780b8cad838bf458a630e63e5a (patch)
treecaf92db6ed1a35f14f5a4e8ec4cff5793452d643
parentc7b0d2967acf2430aabfda4910e77f4cf4827f55 (diff)
downloadSheMov-0990aaa7ff6d35780b8cad838bf458a630e63e5a.tar.gz
SheMov-0990aaa7ff6d35780b8cad838bf458a630e63e5a.tar.bz2
SheMov-0990aaa7ff6d35780b8cad838bf458a630e63e5a.zip
Extract more metadata from original
If the metadata tag creation_time exists in the original, use it to determine the release year. To avoid calling ffprobe twice, do it on movieinfopage and pass the value along by a registered field.
-rw-r--r--movieinfopage.cpp39
-rw-r--r--movieinfopage.h5
-rw-r--r--moviemetadatapage.cpp5
3 files changed, 36 insertions, 13 deletions
diff --git a/movieinfopage.cpp b/movieinfopage.cpp
index 9d19e48..dab024e 100644
--- a/movieinfopage.cpp
+++ b/movieinfopage.cpp
@@ -24,6 +24,7 @@
#include <QFileDialog>
#include <QMessageBox>
#include <QToolBar>
+#include <QDateEdit>
#include <QApplication>
#include "movieinfopage.h"
@@ -60,10 +61,14 @@ void MovieInfoPage::setupGui(){
//add + remove files
QHBoxLayout *fileButtonLayout = new QHBoxLayout;
+ mCreationDate = new QDateEdit;
+ mCreationDate->setDisplayFormat("dd. MMMM yyyy");
+ mCreationDate->setDate(QDate::currentDate());
+ fileButtonLayout->addWidget(mCreationDate);
fileButtonLayout->addStretch();
- QPushButton *extractTitleB = new QPushButton(tr("Title"));
+ QPushButton *extractTitleB = new QPushButton(tr("Meta"));
fileButtonLayout->addWidget(extractTitleB);
- connect(extractTitleB, &QPushButton::clicked, this, &MovieInfoPage::extractTitle);
+ connect(extractTitleB, &QPushButton::clicked, this, &MovieInfoPage::extractMetadata);
QPushButton *addOldB = new QPushButton(tr("Add Old..."));
fileButtonLayout->addWidget(addOldB);
connect(addOldB, &QPushButton::clicked, this, &MovieInfoPage::addOld);
@@ -125,6 +130,7 @@ void MovieInfoPage::setupGui(){
registerField("subtitle", mSubtitle);
registerField("seriesNo", mSeriesNo);
registerField("quality", mQuality);
+ registerField("creationDate", mCreationDate);
}
void MovieInfoPage::initializePage(){
@@ -201,23 +207,32 @@ void MovieInfoPage::initCompleters(){
mSeriesCompleterModel->setStringList(series);
}
-void MovieInfoPage::extractTitle(){
+void MovieInfoPage::extractMetadata(){
QModelIndexList curIdxList = mFileView->selectionModel()->selectedRows();
if(!curIdxList.isEmpty()){
- QString fp = curIdxList.at(0).data(WizardTreeModel::FullPathRole).toString();
+ QModelIndex selIdx = curIdxList.at(0);
+ QModelIndex selChild = selIdx.model()->index(0, 0, selIdx);
+ if(selChild.isValid()){
+ selIdx = selChild;
+ }
+ QString fp = selIdx.data(WizardTreeModel::FullPathRole).toString();
QJsonDocument jDoc = Helper::streamData(fp);
if(!jDoc.isNull()){
QJsonObject jObj1 = jDoc.object().value("format").toObject();
QJsonObject jObj2 = jObj1.value("tags").toObject();
- QString title = jObj2.value("title").toString().toLower();
- if(!title.isEmpty()){
- mSubtitle->setText(title);
- }else{
- QString fn = curIdxList.at(0).data(WizardTreeModel::FileNameRole).toString().toLower();
- fn.replace(".mkv", "");
- fn.replace(".", " ");
- mSubtitle->setText(fn);
+ QString creationTime = jObj2.value("creation_time").toString();
+ if(!creationTime.isNull()){
+ QDateTime creationTimeObj = QDateTime::fromString(creationTime, Qt::ISODateWithMs);
+ if(creationTimeObj.isValid()){
+ mCreationDate->setDate(creationTimeObj.date());
+ }
}
+ QString fn = curIdxList.at(0).data(WizardTreeModel::FileNameRole).toString().toLower();
+ fn.replace(".mkv", "");
+ fn.replace(".mp4", "");
+ fn.replace(".", " ");
+ mSubtitle->setText(fn);
+
}
}
}
diff --git a/movieinfopage.h b/movieinfopage.h
index 9d728d7..0407c33 100644
--- a/movieinfopage.h
+++ b/movieinfopage.h
@@ -8,6 +8,7 @@
#ifndef MOVIEINFOPAGE_H
#define MOVIEINFOPAGE_H
+#include <QDateTime>
#include <QWizardPage>
class WizardTreeModel;
@@ -18,6 +19,7 @@ class QLineEdit;
class QSortFilterProxyModel;
class QStringListModel;
class QCompleter;
+class QDateEdit;
class MovieInfoPage : public QWizardPage {
Q_OBJECT
@@ -37,7 +39,7 @@ class MovieInfoPage : public QWizardPage {
void guessOld(const QString &fullPath);
private slots:
- void extractTitle();
+ void extractMetadata();
void addOld();
void addFiles();
void removeFile();
@@ -51,6 +53,7 @@ class MovieInfoPage : public QWizardPage {
QLineEdit *mSubtitle;
QSpinBox *mSeriesNo;
QSpinBox *mQuality;
+ QDateEdit *mCreationDate;
WizardTreeModel *mFileModel;
SmTreeItem *mMoviesItem;
SmTreeItem *mCoversItem;
diff --git a/moviemetadatapage.cpp b/moviemetadatapage.cpp
index 597ea85..b688f6d 100644
--- a/moviemetadatapage.cpp
+++ b/moviemetadatapage.cpp
@@ -37,6 +37,11 @@ void MovieMetadataPage::initializePage(){
curMetadata[ArchiveModel::ReleaseGroup] = "unknown";
curMetadata[ArchiveModel::Added] = QDate::currentDate();
mWidget->setMetadata(curMetadata);
+ }else{
+ auto curMetadata = mWidget->metadata();
+ auto creationDate = field("creationDate").toDate();
+ curMetadata[ArchiveModel::ReleaseYear] = creationDate.year();
+ mWidget->setMetadata(curMetadata);
}
}