From: APTX Date: Sun, 29 Sep 2013 14:11:25 +0000 (+0200) Subject: Add "Rename as Video File" feature. X-Git-Url: https://gitweb.tyo.aptx.org/?a=commitdiff_plain;h=e4a5c59da46ef3065013d37cd71a3d9b82d820f1;p=localmylist.git Add "Rename as Video File" feature. This feature allows you to rename subtitle files the same way as video files. This is useful as video players usually look for subtitle files which are named the same way as a video file. --- diff --git a/localmylist-management/aniaddsyntaxhighlighter.cpp b/localmylist-management/aniaddsyntaxhighlighter.cpp index 3af5fad..ff0b535 100644 --- a/localmylist-management/aniaddsyntaxhighlighter.cpp +++ b/localmylist-management/aniaddsyntaxhighlighter.cpp @@ -59,7 +59,7 @@ AniAddSyntaxHighlighter::AniAddSyntaxHighlighter(QObject *parent) : highlightingRules.append(rule); } { - QString outputVariables = "FileName|PathName"; + QString outputVariables = "FileName|PathName|RenameAsVideoFile"; rule.pattern = QRegExp("\\b(?:" + outputVariables + ")\\b"); rule.format = outputVariable; highlightingRules << rule; diff --git a/localmylist-management/renamesettingsdialog.cpp b/localmylist-management/renamesettingsdialog.cpp index 1722fdc..b53dd85 100644 --- a/localmylist-management/renamesettingsdialog.cpp +++ b/localmylist-management/renamesettingsdialog.cpp @@ -292,7 +292,8 @@ void RenameSettingsDialog::updateResult(const RenameParser::Environment &env) if (ui->filterResultsCheckbox->isChecked()) { s += "FileName := \"" + env["FileName"] + "\"\n"; - s += "PathName := \"" + env["PathName"] + "\""; + s += "PathName := \"" + env["PathName"] + "\"\n"; + s += "RenameAsVideoFile := \"" + env["RenameAsVideoFile"] + "\""; } else { diff --git a/localmylist-management/renamesettingsdialog.ui b/localmylist-management/renamesettingsdialog.ui index a2254c1..307051c 100644 --- a/localmylist-management/renamesettingsdialog.ui +++ b/localmylist-management/renamesettingsdialog.ui @@ -55,7 +55,7 @@ - Only show FileName and PathName + Only show output variables true diff --git a/localmylist/renamehandler.cpp b/localmylist/renamehandler.cpp index 3e8cdf2..f7bd721 100644 --- a/localmylist/renamehandler.cpp +++ b/localmylist/renamehandler.cpp @@ -92,8 +92,38 @@ void RenameHandler::handleRename() continue; } - QString newFileName = env.value("FileName", "") + "." + r.value("extension").toString(); - QString newFilePath = env.value("PathName", ""); + RenameParser::Environment videoFileEnv; + bool useVideoFileEnv = false; + if (!env.value("RenameAsVideoFile", "").isEmpty()) + { + QSqlQuery &q = db->prepare( + "SELECT rd.* " + " FROM rename_data rd " + " JOIN rename_data rd2 ON ( " + " rd.aid = rd2.aid " + " AND rd.epno = rd2.epno " + " AND rd2.type = rd.type " + // TODO there should only be one of those. + // Waiting for video_codec normalization + " AND rd.video_codec <> 'none' " + " AND rd.video_codec <> '') " + " WHERE rd2.fid = :fid " + " LIMIT 1"); + q.bindValue(":fid", fl.fid); + + if (db->exec(q) && q.next()) + { + QSqlRecord r = q.record(); + setupRenameEnv(r, videoFileEnv); + renameEngine->evaluate(videoFileEnv); + + if (!videoFileEnv.value("FileName", "").isEmpty()) + useVideoFileEnv = true; + } + } + + QString newFileName = (useVideoFileEnv ? videoFileEnv : env).value("FileName", "") + "." + r.value("extension").toString(); + QString newFilePath = (useVideoFileEnv ? videoFileEnv : env).value("PathName", ""); QRegExp rx(settings->get("renameSanitizeRegex", QString("[/\\:*\"?<>|\\r\\n]"))); newFileName = newFileName.replace(rx, ""); diff --git a/localmylist/renameutils.cpp b/localmylist/renameutils.cpp index fcc3dbf..2e15dcb 100644 --- a/localmylist/renameutils.cpp +++ b/localmylist/renameutils.cpp @@ -9,7 +9,7 @@ namespace LocalMyList { -void setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env) +void setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env, bool renamingAsVideoFile) { env["ATr"] = record.value("anime_title_romaji").toString(); @@ -65,6 +65,10 @@ void setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env) env["MinRelatedEpNo"] = record.value("min_related_epno").toString(); env["MaxRelatedEpNo"] = record.value("max_related_epno").toString(); + + // These variables are added for rename as video + env["FileExtension"] = record.value("extension").toString(); + env["RenamingAsVideoFile"] = renamingAsVideoFile ? "1" : ""; } #ifdef Q_OS_WIN diff --git a/localmylist/renameutils.h b/localmylist/renameutils.h index 874942d..821d8ef 100644 --- a/localmylist/renameutils.h +++ b/localmylist/renameutils.h @@ -8,7 +8,7 @@ namespace LocalMyList { -void LOCALMYLISTSHARED_EXPORT setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env); +void LOCALMYLISTSHARED_EXPORT setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env, bool renamingAsVideoFile = false); QString exactPath(const QString &path); bool LOCALMYLISTSHARED_EXPORT renameFile(const QString &oldName, const QString &newName, QString *actualPath = 0);