1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#ifndef ANILISTDOTCOTRACKER_H
#define ANILISTDOTCOTRACKER_H
#include "onlinetracker.h"
#include "anilistdotcodatabase.h"
class AnilistDotCoTracker : public OnlineTracker {
Q_OBJECT
public:
class Entry : public OnlineTracker::Entry {
public:
QString list_status; // "on-hold",
int score; // 0,
int priorty; // null,
int rewatched; // null,
int notes; // null,
bool isPrivate; // null, (renamed field)
QDateTime updated_time; // "2014-10-15T18:56:23+09:00",
QDateTime added_time; // "2014-10-15T18:56:23+09:00",
int score_raw; // 0,
QList<int> advanced_rating_scores; // [int]
int episodes_watched; // 11,
int chapters_read; // null,
int volumes_read; // null,
int hidden_default; // null,
QStringList custom_lists; // [str]
// Not there when fetching raw
// but I'm never fetching raw so it's not a pointer.
AnilistDotCoDatabase::Entry anime;
virtual QDateTime lastUpdate() const { return updated_time; }
virtual int remoteId() const { return anime.id; }
virtual int watchedEpisodes() const { return episodes_watched; }
virtual int rewatchMarker() const { return -1; }
virtual int rewatchCount() const { return rewatched; }
virtual bool supportsRewatchMarker() const { return false; }
virtual int totalEpisodes() const { return this->anime.total_episodes; }
virtual TvShow::WatchStatus getStatusWouldSendIfSynced(TvShow::WatchStatus showStatus) const;
virtual TvShow::WatchStatus watchStatus() const { return watchStatusFromString(this->list_status); }
void describe(nw::Describer& de);
};
class EntryList : public OnlineTracker::EntryList {
public:
EntryList(nw::JsonReader& jr);
virtual const OnlineTracker::Entry* get(const QString trackerIdentifierKey, const TvShow* show) const;
virtual void describe(nw::Describer& de);
const QDateTime fetchTime;
QList<Entry> entries;
private:
void describeList(nw::Describer &de, nw::String listKey);
};
class User {
public:
int id; // 1,
QString display_name; //: "Josh",
int anime_time; //: 54067,
int manga_chap; //: 587,
QString about; // "str"
int list_order; //: 0,
int adult_content; //: true,
int following; //: false,
QString image_url_lge; //: "http://img.anilist.co/user/reg/1.png",
QString image_url_med; //: "http://img.anilist.co/user/sml/1.png",
QString image_url_banner; //: "http://i.imgur.com/ZHAUS4K.jpg",
QString title_language; //: "romaji",
int score_type; //: 4,
QStringList custom_list_anime; //: [strs]
QStringList custom_list_manga; //: [strs]
QStringList advanced_rating; //: [strs],
QStringList advanced_rating_names; //: [ strs ]
int notifications; //: 0
User();
bool fetchCurrentlyLoggedInUser(const OnlineCredentials &credentials, OnlineCredentials::TimeLock &lock);
void describe(nw::Describer& de);
};
AnilistDotCoTracker(OnlineCredentials& credentials, OnlineCredentials::TimeLock& lock, QObject *parent);
virtual ~AnilistDotCoTracker();
virtual const QString identifierKey() const;
virtual OnlineTracker::EntryList* fetchRemote(); ///< Must create a new EntryList using online Data, or NULL on error
static TvShow::WatchStatus watchStatusFromString(QString status);
static QString watchStatusToString(TvShow::WatchStatus status);
protected:
virtual UpdateResult updateinOnlineTrackerOrAdd(const TvShow* show, const QString& type) const;
private:
User user; // required for the id
};
#endif // ANILISTDOTCOTRACKER_H