#include "mylist.h"
#include "database.h"
#include "settings.h"
+#include "renameutils.h"
#include <RenameParser/RenameEngine>
#include <QSqlQuery>
#include <QSqlRecord>
this->settings = settings;
connect(db, SIGNAL(renameDataChanged()), this, SLOT(handleRename()), Qt::QueuedConnection);
connect(this, SIGNAL(renameBatchFinished()), this, SLOT(handleRename()), Qt::QueuedConnection);
+ connect(settings, SIGNAL(settingsChanged()), this, SLOT(clearSetup()));
m_setup = false;
}
" video_codec, audio_codec, audio_language, subtitle_language, aspect_ratio, my_watched, my_state, my_file_state, my_storage, my_source, my_other, host_id, path, renamed "
"FROM rename_data "
"WHERE host_id = :host_id "
+ "AND renamed IS NULL AND failed_rename = false "
"LIMIT :limit");
q.bindValue(":host_id", MyList::instance()->hostId());
}
RenameParser::Environment env;
- env["ATr"] = r.value("anime_title_romaji").toString();
- env["ATe"] = r.value("anime_title_english").toString();
- env["ATk"] = r.value("anime_title_kanji").toString();
-
- env["ETr"] = r.value("episode_title_romaji").toString();
- env["ETe"] = r.value("episode_title_english").toString();
- env["ETk"] = r.value("episode_title_kanji").toString();
-
- env["GTs"] = r.value("group_name_short").toString();
- env["GTl"] = r.value("group_name").toString();
-
- env["EpNo"] = r.value("epno").toString();
- env["EpHiNo"] = r.value("episode_count").toString();
- env["EpCount"] = "0"; // TODO This is missing from the data
-
- QString year = r.value("year").toString();
- if (!year.contains('-'))
- {
- env["AYearBegin"] = year;
- env["AYearEnd"] = "";
- }
- else
- {
- QStringList years = year.split('-');
- env["AYearBegin"] = years[0].trimmed();
- env["AYearEnd"] = years[1].trimmed();
- }
-
- env["Type"] = r.value("anime_type").toString();
- env["Depr"] = /*r.value("")*/ false ? "1" : ""; // Data missing?
- env["Cen"] = r.value("censored").toBool() ? "1" : "0";
- env["Ver"] = r.value("version").toString();
- env["Source"] = r.value("type").toString(); // TODO This is called source on AniDB
- env["Quality"] = r.value("quality").toString();
- env["FCrc"] = r.value("crc").toString();
- env["FVideoRes"] = r.value("resolution").toString();
- env["FALng"] = r.value("audio_language").toString();
- env["FSLng"] = r.value("subtitle_language").toString();
- env["FACodec"] = r.value("audio_codec").toString();
- env["FVCodec"] = r.value("video_codec").toString();
- env["Watched"] = r.value("my_watched").toDateTime().isValid() ? "1" : "0";
-
+ setupRenameEnv(r, env);
renameEngine->evaluate(env);
if (env.value("FileName", "").isEmpty())
}
QString newFileName = env.value("FileName", "") + "." + r.value("extension").toString();
- QString newFilePath = env.value("FilePath", "");
+ QString newFilePath = env.value("PathName", "");
newFileName = newFileName.replace(QRegExp("[/\\:*\"?<>|\\r\\n]"), "");
if (!newFile.absoluteDir().exists())
{
- if (!QDir().mkpath(newFile.canonicalPath()))
+ if (!QDir().mkpath(newFilePath))
{
fl.failedRename = true;
db->setFileLocation(fl);
FROM file f
JOIN anime a ON a.aid = f.aid
JOIN episode e ON e.eid = f.eid
- JOIN file_location fl ON fl.fid = f.fid
- WHERE fl.renamed IS NULL AND fl.failed_rename = false;
+ JOIN file_location fl ON fl.fid = f.fid;
CREATE RULE new_anime_rule AS ON INSERT TO anime DO NOTIFY rename_data_changed;
CREATE RULE new_episode_rule AS ON INSERT TO episode DO NOTIFY rename_data_changed;
FROM file f
WHERE f.fid = fl.fid AND f.eid = old.eid;
-CREATE OR REPLACE RULE update_file_rule AS
+CREATE RULE update_file_rule AS
ON UPDATE TO file
WHERE old.fid = new.fid
AND (old.eid <> new.eid OR old.aid <> new.aid OR old.gid <> new.gid OR old.ed2k <> new.ed2k OR old.size <> new.size OR old.length <> new.length OR old.extension::text <> new.extension::text OR old.group_name <> new.group_name OR old.group_name_short <> new.group_name_short OR old.crc <> new.crc OR old.release_date <> new.release_date OR old.version <> new.version OR old.censored <> new.censored OR old.type::text <> new.type::text OR old.quality_id <> new.quality_id OR old.quality::text <> new.quality::text OR old.resolution::text <> new.resolution::text OR old.video_codec::text <> new.video_codec::text OR old.audio_codec::text <> new.audio_codec::text OR old.audio_language::text <> new.audio_language::text OR old.subtitle_language::text <> new.subtitle_language::text OR old.aspect_ratio::text <> new.aspect_ratio::text)