From dc59d7833588c9df892cb2bb8b7d9b0fb90399df Mon Sep 17 00:00:00 2001 From: APTX Date: Mon, 21 May 2012 21:11:54 +0200 Subject: [PATCH] Get AnimeCommand to a usable state. --- animecommand.cpp | 271 +++++++++++++++++++++++++++++++++++++++++++++++ animecommand.h | 51 +++++++++ 2 files changed, 322 insertions(+) diff --git a/animecommand.cpp b/animecommand.cpp index b4d352b..3a83a52 100644 --- a/animecommand.cpp +++ b/animecommand.cpp @@ -1,6 +1,9 @@ #include "animecommand.h" #include +#include + +#include namespace AniDBUdpClient { @@ -114,10 +117,278 @@ void AnimeReply::readReplyData(const QString &reply) QString d = reply.mid(reply.indexOf('\n')).trimmed(); QStringList parts = d.split('|', QString::KeepEmptyParts); + if (command().amask() == 0) + { + if (parts.count() < 19) + { + qWarning() << "Not enough parts in reply."; + return; + } + animeFlagData.insert(AnimeFlag::Aid, parts[0].toInt()); + animeFlagData.insert(AnimeFlag::Episodes, parts[1].toInt()); + animeFlagData.insert(AnimeFlag::HighestEpisodeNumber, parts[2].toInt()); + animeFlagData.insert(AnimeFlag::SpecialsCount, parts[3].toInt()); + animeFlagData.insert(AnimeFlag::Rating, parts[4].toInt()); + animeFlagData.insert(AnimeFlag::VoteCount, parts[5].toInt()); + animeFlagData.insert(AnimeFlag::TempRating, parts[6].toInt()); + animeFlagData.insert(AnimeFlag::TempVoteCount, parts[7].toInt()); + animeFlagData.insert(AnimeFlag::AverageReviewRating, parts[8].toInt()); + animeFlagData.insert(AnimeFlag::ReviewCount, parts[9].toInt()); + animeFlagData.insert(AnimeFlag::Year, parts[10]); + animeFlagData.insert(AnimeFlag::Type, parts[11]); + animeFlagData.insert(AnimeFlag::RomajiName, parts[12]); + animeFlagData.insert(AnimeFlag::KanjiName, parts[13]); + animeFlagData.insert(AnimeFlag::EnglishName, parts[14]); + animeFlagData.insert(AnimeFlag::OtherName, parts[15]); + animeFlagData.insert(AnimeFlag::ShortNameList, parts[16]); + animeFlagData.insert(AnimeFlag::SynonymList, parts[17]); + animeFlagData.insert(AnimeFlag::CategoryList, parts[18]); + return; + } + + int partNo = 0; + { + for (AnimeFlags::flag_type flag = AnimeFlag::LastFlag; flag > 0; flag >>= 1) + { + if (command().amask() & flag) + { + if (partNo >= parts.size()) + { + qWarning() << "Not enough parts in reply."; + continue; + } + animeFlagData.insert(AnimeFlags(flag), parts[partNo]); + ++partNo; + } + } + } } void AnimeReply::init() { } +int AnimeReply::specialsCount() const +{ + return animeFlagData.value(AnimeFlag::SpecialsCount).toInt(); +} + +int AnimeReply::creditsCount() const +{ + return animeFlagData.value(AnimeFlag::CreditsCount).toInt(); +} + +int AnimeReply::otherCount() const +{ + return animeFlagData.value(AnimeFlag::OtherCount).toInt(); +} + +int AnimeReply::trailerCount() const +{ + return animeFlagData.value(AnimeFlag::TrailerCount).toInt(); +} + +int AnimeReply::parodyCount() const +{ + return animeFlagData.value(AnimeFlag::ParodyCount).toInt(); +} + +QStringList AnimeReply::mainCreatorNameList() const +{ + return animeFlagData.value(AnimeFlag::MainCreatorNameList).toString().split(QChar('\'')); +} + +QStringList AnimeReply::mainCreatorIdList() const +{ + return animeFlagData.value(AnimeFlag::MainCreatorIdList).toString().split(QChar('\'')); +} + +QStringList AnimeReply::creatorIdList() const +{ + return animeFlagData.value(AnimeFlag::CreatorIdList).toString().split(QChar('\'')); +} + +QStringList AnimeReply::characterIdList() const +{ + return animeFlagData.value(AnimeFlag::CharacterIdList).toString().split(QChar('\'')); +} + +QDateTime AnimeReply::dateRecordUpdated() const +{ + return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::DateRecordUpdated).toUInt()); +} + +int AnimeReply::aniemNfoId() const +{ + return animeFlagData.value(AnimeFlag::AnimeNfoId).toInt(); +} + +int AnimeReply::allCinemaId() const +{ + return animeFlagData.value(AnimeFlag::AllCinemaId).toInt(); +} + +int AnimeReply::ANNId() const +{ + return animeFlagData.value(AnimeFlag::ANNId).toInt(); +} + +int AnimeReply::animePlanetId() const +{ + return animeFlagData.value(AnimeFlag::AnimePlanetId).toInt(); +} + +bool AnimeReply::is18Restricted() const +{ + return animeFlagData.value(AnimeFlag::Is18Restricted).toBool(); +} + +QStringList AnimeReply::awardList() const +{ + return animeFlagData.value(AnimeFlag::AwardList).toString().split(QChar('\'')); +} + +int AnimeReply::reviewCount() const +{ + return animeFlagData.value(AnimeFlag::ReviewCount).toInt(); +} + +double AnimeReply::averageReviewRating() const +{ + return animeFlagData.value(AnimeFlag::AverageReviewRating).toDouble() / 1000; +} + +int AnimeReply::tempVoteCount() const +{ + return animeFlagData.value(AnimeFlag::TempVoteCount).toInt(); +} + +double AnimeReply::tempRating() const +{ + return animeFlagData.value(AnimeFlag::TempRating).toDouble() / 1000; +} + +int AnimeReply::voteCount() const +{ + return animeFlagData.value(AnimeFlag::VoteCount).toInt(); +} + +double AnimeReply::rating() const +{ + return animeFlagData.value(AnimeFlag::Rating).toDouble() / 1000; +} + +QStringList AnimeReply::categoryIdList() const +{ + return animeFlagData.value(AnimeFlag::CategoryIdList).toString().split(QChar('\'')); +} + +QString AnimeReply::picName() const +{ + return animeFlagData.value(AnimeFlag::PicName).toString(); +} + +QUrl AnimeReply::url() const +{ + return animeFlagData.value(AnimeFlag::Url).toUrl(); +} + +QDateTime AnimeReply::endDate() const +{ + return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::EndDate).toUInt()); +} + +QDateTime AnimeReply::airDate() const +{ + return QDateTime::fromTime_t(animeFlagData.value(AnimeFlag::AirDate).toUInt()); +} + +int AnimeReply::specialEpCount() const +{ + return animeFlagData.value(AnimeFlag::SpecialEpCount).toInt(); +} + +int AnimeReply::highestEpisodeNumber() const +{ + return animeFlagData.value(AnimeFlag::HighestEpisodeNumber).toInt(); +} + +int AnimeReply::episodes() const +{ + return animeFlagData.value(AnimeFlag::Episodes).toInt(); +} + + +QStringList AnimeReply::synonymList() const +{ + return animeFlagData.value(AnimeFlag::SynonymList).toString().split(QChar('\'')); +} + +QStringList AnimeReply::shortNameList() const +{ + return animeFlagData.value(AnimeFlag::ShortNameList).toString().split(QChar('\'')); +} + +QString AnimeReply::otherName() const +{ + return animeFlagData.value(AnimeFlag::OtherName).toString(); +} + +QString AnimeReply::englishName() const +{ + return animeFlagData.value(AnimeFlag::EnglishName).toString(); +} + +QString AnimeReply::kanjiName() const +{ + return animeFlagData.value(AnimeFlag::KanjiName).toString(); +} + +QString AnimeReply::romajiName() const +{ + return animeFlagData.value(AnimeFlag::RomajiName).toString(); +} + + +QString AnimeReply::categoryWeightList() const +{ + return animeFlagData.value(AnimeFlag::CategoryWeightList).toString(); +} + +QStringList AnimeReply::categoryList() const +{ + return animeFlagData.value(AnimeFlag::CategoryList).toString().split(QChar('\'')); +} + +QStringList AnimeReply::relatedAidType() const +{ + return animeFlagData.value(AnimeFlag::RelatedAidType).toString().split(QChar('\'')); +} + +QStringList AnimeReply::relatedAidList() const +{ + return animeFlagData.value(AnimeFlag::RelatedAidList).toString().split(QChar('\'')); +} + +QString AnimeReply::type() const +{ + return animeFlagData.value(AnimeFlag::Type).toString(); +} + +int AnimeReply::year() const +{ + return animeFlagData.value(AnimeFlag::Year).toInt(); +} + +int AnimeReply::dateFlags() const +{ + return animeFlagData.value(AnimeFlag::DateFlags).toInt(); +} + +int AnimeReply::aid() const +{ + return animeFlagData.value(AnimeFlag::Aid).toInt(); +} + + } // namespace AniDBUdpClient diff --git a/animecommand.h b/animecommand.h index 1a56a1f..90df173 100644 --- a/animecommand.h +++ b/animecommand.h @@ -50,6 +50,57 @@ class ANIDBUDPCLIENTSHARED_EXPORT AnimeReply : public AbstractReply public: QVariant value(AnimeFlags f) const; + int specialsCount() const; + int creditsCount() const; + int otherCount() const; + int trailerCount() const; + int parodyCount() const; + + QStringList mainCreatorNameList() const; + QStringList mainCreatorIdList() const; + QStringList creatorIdList() const; + QStringList characterIdList() const; + + QDateTime dateRecordUpdated() const; + int aniemNfoId() const; + int allCinemaId() const; + int ANNId() const; + int animePlanetId() const; + + bool is18Restricted() const; + QStringList awardList() const; + int reviewCount() const; + double averageReviewRating() const; + int tempVoteCount() const; + double tempRating() const; + int voteCount() const; + double rating() const; + + QStringList categoryIdList() const; + QString picName() const; + QUrl url() const; + QDateTime endDate() const; + QDateTime airDate() const; + int specialEpCount() const; + int highestEpisodeNumber() const; + int episodes() const; + + QStringList synonymList() const; + QStringList shortNameList() const; + QString otherName() const; + QString englishName() const; + QString kanjiName() const; + QString romajiName() const; + + QString categoryWeightList() const; + QStringList categoryList() const; + QStringList relatedAidType() const; + QStringList relatedAidList() const; + QString type() const; + int year() const; + int dateFlags() const; + int aid() const; + void setRawReply(ReplyCode replyCode, const QString &reply); private: -- 2.52.0