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),
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
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
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();
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;
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;
m_renameEngine->evaluate(env);
- fileName = env.value("FileName", "") + "." + reply->value(FileFlag::FileType).toString();
+ fileName = env.value("FileName", "") + "." + reply->fileType();
filePath = env.value("FilePath", "");
#endif
}
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;