From 8f72b15b976508050a95b92e26c9e827601fc56f Mon Sep 17 00:00:00 2001 From: APTX Date: Tue, 22 May 2012 01:38:32 +0200 Subject: [PATCH] FileReply improvements. --- anidbudpclient_global.h | 6 +- filecommand.cpp | 314 ++++++++++++++++++++++++++++++++++++++++ filecommand.h | 74 ++++++++++ filerenamedelegate.cpp | 69 ++++----- 4 files changed, 419 insertions(+), 44 deletions(-) diff --git a/anidbudpclient_global.h b/anidbudpclient_global.h index 6e5973e..3c3837c 100644 --- a/anidbudpclient_global.h +++ b/anidbudpclient_global.h @@ -212,14 +212,14 @@ namespace AniDBUdpClient MyListSource = Q_UINT64_C(0x0000000000000004), MyListStorage = Q_UINT64_C(0x0000000000000008), MyListViewDate = Q_UINT64_C(0x0000000000000010), - MyListViewed = Q_UINT64_C(0x0000000000000020), + MyListViewed = Q_UINT64_C(0x0000000000000020), // view count? MyListFileState = Q_UINT64_C(0x0000000000000040), MyListState = Q_UINT64_C(0x0000000000000080), AniDBFileName = Q_UINT64_C(0x0000000000000100), // Unused = Q_UINT64_C(0x0000000000000200), // Unused = Q_UINT64_C(0x0000000000000400), - AiredDate = Q_UINT64_C(0x0000000000000800), + AirDate = Q_UINT64_C(0x0000000000000800), // Format "YearBegin-YearEnd" Description = Q_UINT64_C(0x0000000000001000), LengthInSeconds = Q_UINT64_C(0x0000000000002000), SubLanguage = Q_UINT64_C(0x0000000000004000), @@ -259,7 +259,7 @@ namespace AniDBUdpClient Byte5 = MyListOther | MyListSource | MyListStorage | MyListViewDate | MyListViewed | MyListFileState | MyListState, - Byte4 = AniDBFileName | AiredDate | Description + Byte4 = AniDBFileName | AirDate | Description | LengthInSeconds | SubLanguage | DubLanguage, Byte3 = FileType | VideoResolution | VideoBitrate | VideoCodec | AudioBitrate | AudioCodec diff --git a/filecommand.cpp b/filecommand.cpp index 1865f76..931d8c9 100644 --- a/filecommand.cpp +++ b/filecommand.cpp @@ -343,4 +343,318 @@ void FileReply::init() m_fid = 0; } +// --------------------------- + +QDateTime FileReply::dateAidRecordUpdated() const +{ + return QDateTime::fromTime_t(fileAnimeFlagData.value(FileAnimeFlag::DateAidRecordUpdated).toUInt()); +} + +QString FileReply::groupShortName() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::GroupShortName).toString(); +} + +QString FileReply::groupName() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::GroupName).toString(); +} + +int FileReply::episodeVoteCount() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::EpisodeVoteCount).toInt(); +} + +double FileReply::episodeRating() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::EpisodeRating).toInt() / 1000; +} + +QString FileReply::epKanjiName() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::EpKanjiName).toString(); +} + +QString FileReply::epRomajiName() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::EpRomajiName).toString(); +} + +QString FileReply::epName() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::EpName).toString(); +} + +QString FileReply::epNo() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::EpNo).toString(); +} + +QString FileReply::synonymList() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::SynonymList).toString(); +} + +QString FileReply::shortNameList() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::ShortNameList).toString(); +} + +QString FileReply::otherName() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::OtherName).toString(); +} + +QString FileReply::englishName() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::EnglishName).toString(); +} + +QString FileReply::kanjiName() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::KanjiName).toString(); +} + +QString FileReply::romajiName() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::RomajiName).toString(); +} + +QString FileReply::cateogryList() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::CateogryList).toString(); +} + +QString FileReply::relatedAidType() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::RelatedAidType).toString(); +} + +QString FileReply::relatedAidList() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::RelatedAidList).toString(); +} + +QString FileReply::type() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::Type).toString(); +} + +QString FileReply::year() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::Year).toString(); +} + +int FileReply::highestEpisodeNumber() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::HighestEpisodeNumber).toInt(); +} + +int FileReply::animeTotalEpisodes() const +{ + return fileAnimeFlagData.value(FileAnimeFlag::AnimeTotalEpisodes).toInt(); +} + +// -- + +QString FileReply::myListOther() const +{ + return fileFlagData.value(FileFlag::MyListOther).toString(); +} + +QString FileReply::myListSource() const +{ + return fileFlagData.value(FileFlag::MyListSource).toString(); +} + +QString FileReply::myListStorage() const +{ + return fileFlagData.value(FileFlag::MyListStorage).toString(); +} + +QDateTime FileReply::myListViewDate() const +{ + return fileFlagData.value(FileFlag::MyListViewDate).toDateTime(); +} + +int FileReply::myListViewed() const +{ + return fileFlagData.value(FileFlag::MyListViewed).toInt(); +} + +FileState FileReply::myListFileState() const +{ + return FileState(fileFlagData.value(FileFlag::MyListFileState).toInt()); +} + +State FileReply::myListState() const +{ + return AniDBUdpClient::State(fileFlagData.value(FileFlag::MyListState).toInt()); +} + +QString FileReply::aniDBFileName() const +{ + return fileFlagData.value(FileFlag::AniDBFileName).toString(); +} + +QString FileReply::airDate() const +{ + return fileFlagData.value(FileFlag::AirDate).toString(); +} + +QString FileReply::description() const +{ + return fileFlagData.value(FileFlag::Description).toString(); +} + +int FileReply::lengthInSeconds() const +{ + return fileFlagData.value(FileFlag::LengthInSeconds).toInt(); +} + +QString FileReply::subLanguage() const +{ + return fileFlagData.value(FileFlag::SubLanguage).toString(); +} + +QString FileReply::dubLanguage() const +{ + return fileFlagData.value(FileFlag::DubLanguage).toString(); +} + +QString FileReply::fileType() const +{ + return fileFlagData.value(FileFlag::FileType).toString(); +} + +QString FileReply::videoResolution() const +{ + return fileFlagData.value(FileFlag::VideoResolution).toString(); +} + +QString FileReply::videoBitrate() const +{ + return fileFlagData.value(FileFlag::VideoBitrate).toString(); +} + +QString FileReply::videoCodec() const +{ + return fileFlagData.value(FileFlag::VideoCodec).toString(); +} + +QString FileReply::audioBitrate() const +{ + return fileFlagData.value(FileFlag::AudioBitrate).toString(); +} + +QString FileReply::audioCodec() const +{ + return fileFlagData.value(FileFlag::AudioCodec).toString(); +} + +QString FileReply::source() const +{ + return fileFlagData.value(FileFlag::Source).toString(); +} + +QString FileReply::quality() const +{ + return fileFlagData.value(FileFlag::Quality).toString(); +} + +QString FileReply::crc32() const +{ + return fileFlagData.value(FileFlag::Crc32).toString(); +} + +QString FileReply::sha1() const +{ + return fileFlagData.value(FileFlag::Sha1).toString(); +} + +QString FileReply::md5() const +{ + return fileFlagData.value(FileFlag::Md5).toString(); +} + +QByteArray FileReply::ed2k() const +{ + return fileFlagData.value(FileFlag::Ed2k).toByteArray(); +} + +qint64 FileReply::size() const +{ + return fileFlagData.value(FileFlag::Size).toLongLong(); +} + +FileReply::State FileReply::state() const +{ + return State(fileFlagData.value(FileFlag::State).toInt()); +} + +bool FileReply::isDeprecated() const +{ + return fileFlagData.value(FileFlag::IsDeprecated).toInt(); +} + +QStringList FileReply::otherEpisodes() const +{ + return fileFlagData.value(FileFlag::OtherEpisodes).toString().split(QChar('\'')); +} + +int FileReply::lid() const +{ + return fileFlagData.value(FileFlag::Lid).toInt(); +} + +int FileReply::gid() const +{ + return fileFlagData.value(FileFlag::Gid).toInt(); +} + +int FileReply::eid() const +{ + return fileFlagData.value(FileFlag::Eid).toInt(); +} + +int FileReply::aid() const +{ + return fileFlagData.value(FileFlag::Aid).toInt(); +} + +int FileReply::version() const +{ + int version = 1; + State s = state(); + if (s & FileReply::IsV2) + version = 2; + if (s & FileReply::IsV3) + version = 3; + if (s & FileReply::IsV4) + version = 4; + if (s & FileReply::IsV5) + version = 5; + return version; +} + +bool FileReply::isCensored() const +{ + return state() & Censored; +} + +bool FileReply::isUncensored() const +{ + return state() & Uncensored; +} + +bool FileReply::isCrcOk() const +{ + return state() & CrcOk; +} + +bool FileReply::isCrcErr() const +{ + return state() & CrcErr; +} + } // namespace AniDBUdpClient diff --git a/filecommand.h b/filecommand.h index 6edf2bb..79773b9 100644 --- a/filecommand.h +++ b/filecommand.h @@ -111,6 +111,80 @@ public: void setRawReply(ReplyCode replyCode, const QString &reply); + // --------------------- + QDateTime dateAidRecordUpdated() const; + QString groupShortName() const; + QString groupName() const; + + int episodeVoteCount() const; + double episodeRating() const; + QString epKanjiName() const; + QString epRomajiName() const; + QString epName() const; + QString epNo() const; + + QString synonymList() const; + QString shortNameList() const; + QString otherName() const; + QString englishName() const; + QString kanjiName() const; + QString romajiName() const; + + QString cateogryList() const; + QString relatedAidType() const; + QString relatedAidList() const; + QString type() const; + QString year() const; + int highestEpisodeNumber() const; + int animeTotalEpisodes() const; + + // -- + + QString myListOther() const; + QString myListSource() const; + QString myListStorage() const; + QDateTime myListViewDate() const; + int myListViewed() const; + FileState myListFileState() const; + AniDBUdpClient::State myListState() const; + + QString aniDBFileName() const; + QString airDate() const; + QString description() const; + int lengthInSeconds() const; + QString subLanguage() const; + QString dubLanguage() const; + + QString fileType() const; + QString videoResolution() const; + QString videoBitrate() const; + QString videoCodec() const; + QString audioBitrate() const; + QString audioCodec() const; + QString source() const; + QString quality() const; + + QString crc32() const; + QString sha1() const; + QString md5() const; + QByteArray ed2k() const; + qint64 size() const; + + State state() const; + bool isDeprecated() const; + QStringList otherEpisodes() const; + int lid() const; + int gid() const; + int eid() const; + int aid() const; + // --------------------- + + int version() const; + bool isCensored() const; + bool isUncensored() const; + bool isCrcOk() const; + bool isCrcErr() const; + private: void readReplyData(const QString &reply); void init(); diff --git a/filerenamedelegate.cpp b/filerenamedelegate.cpp index e7cab12..e11e2a3 100644 --- a/filerenamedelegate.cpp +++ b/filerenamedelegate.cpp @@ -67,22 +67,22 @@ void FileRenameDelegate::rename(const AniDBUdpClient::FileReply *reply, QString RenameParser::Environment env; - env["ATr"] = reply->value(FileAnimeFlag::RomajiName).toString(); - env["ATe"] = reply->value(FileAnimeFlag::EnglishName).toString(); - env["ATk"] = reply->value(FileAnimeFlag::KanjiName).toString(); + env["ATr"] = reply->romajiName(); + env["ATe"] = reply->englishName(); + env["ATk"] = reply->kanjiName(); - env["ETr"] = reply->value(FileAnimeFlag::EpRomajiName).toString(); - env["ETe"] = reply->value(FileAnimeFlag::EpName).toString(); - env["ETk"] = reply->value(FileAnimeFlag::EpKanjiName).toString(); + env["ETr"] = reply->epRomajiName(); + env["ETe"] = reply->epName(); + env["ETk"] = reply->epKanjiName(); - env["GTs"] = reply->value(FileAnimeFlag::GroupShortName).toString(); - env["GTl"] = reply->value(FileAnimeFlag::GroupName).toString(); + env["GTs"] = reply->groupShortName(); + env["GTl"] = reply->groupName(); - env["EpNo"] = reply->value( FileAnimeFlag::EpNo).toString(); - env["EpHiNo"] = reply->value(FileAnimeFlag::AnimeTotalEpisodes).toString(); - env["EpCount"] = reply->value(FileAnimeFlag::HighestEpisodeNumber).toString(); + env["EpNo"] = reply->epNo(); + env["EpHiNo"] = QString::number(reply->animeTotalEpisodes()); + env["EpCount"] = QString::number(reply->highestEpisodeNumber()); - QString airDate = reply->value(FileFlag::AiredDate).toString(); + QString airDate = reply->airDate(); if (!airDate.contains('-')) { env["AYearBegin"] = airDate; @@ -95,34 +95,21 @@ void FileRenameDelegate::rename(const AniDBUdpClient::FileReply *reply, QString env["AYearEnd"] = years[1].trimmed(); } + env["Type"] = reply->type(); + env["Depr"] = reply->isDeprecated() ? "1" : ""; - env["Type"] = reply->value(FileAnimeFlag::Type).toString(); - env["Depr"] = reply->value(FileFlag::IsDeprecated).toInt() ? "1" : ""; + env["Cen"] = reply->isCensored() ? "1" : "0"; - const int state = reply->value(FileFlag::State).toInt(); - - env["Cen"] = state & FileReply::Censored ? "1" : "0"; - - int version = 1; - if (state & FileReply::IsV2) - version = 2; - if (state & FileReply::IsV3) - version = 3; - if (state & FileReply::IsV4) - version = 4; - if (state & FileReply::IsV5) - version = 5; - - env["Ver"] = QString::number(version); - env["Source"] = reply->value(FileFlag::Source).toString(); - env["Quality"] = reply->value(FileFlag::Quality).toString(); - env["FCrc"] = reply->value(FileFlag::Crc32).toString(); - env["FVideoRes"] = reply->value(FileFlag::VideoResolution).toString(); - env["FALng"] = reply->value(FileFlag::DubLanguage).toString(); - env["FSLng"] = reply->value(FileFlag::SubLanguage).toString(); - env["FACodec"] = reply->value(FileFlag::AudioCodec).toString(); - env["FVCodec"] = reply->value(FileFlag::VideoCodec).toString(); - env["Watched"] = reply->value(FileFlag::MyListViewed).toString(); + env["Ver"] = QString::number(reply->version()); + env["Source"] = reply->source(); + env["Quality"] = reply->quality(); + env["FCrc"] = reply->crc32(); + env["FVideoRes"] = reply->videoResolution(); + env["FALng"] = reply->dubLanguage(); + env["FSLng"] = reply->subLanguage(); + env["FACodec"] = reply->audioCodec(); + env["FVCodec"] = reply->videoCodec(); + env["Watched"] = QString::number(reply->myListViewed()); #ifdef ANIDBUDPCLIENT_RENAME_DEBUG qDebug() << "Rename ENV:" << env; @@ -131,7 +118,7 @@ qDebug() << "Rename Script:" << m_renameEngine->renameString(); m_renameEngine->evaluate(env); - fileName = env.value("FileName", "") + "." + reply->value(FileFlag::FileType).toString(); + fileName = env.value("FileName", "") + "." + reply->fileType(); filePath = env.value("FilePath", ""); #endif } @@ -153,8 +140,8 @@ void FileRenameDelegate::updateMasks() fMaskVars["Ver"] = FileFlag::State; fMaskVars["Source"] = FileFlag::Source; fMaskVars["Quality"] = FileFlag::Quality; - fMaskVars["AYearBegin"] = FileFlag::AiredDate; - fMaskVars["AYearEnd"] = FileFlag::AiredDate; + fMaskVars["AYearBegin"] = FileFlag::AirDate; + fMaskVars["AYearEnd"] = FileFlag::AirDate; fMaskVars["FCrc"] = FileFlag::Crc32; fMaskVars["FVideoRes"] = FileFlag::VideoResolution; fMaskVars["FALng"] = FileFlag::DubLanguage; -- 2.52.0