@irfanshadikrishad/anilist 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/CODE_OF_CONDUCT.md +43 -43
- package/CONTRIBUTING.md +2 -2
- package/README.md +232 -232
- package/bin/helpers/auth.d.ts +1 -1
- package/bin/helpers/auth.js +42 -29
- package/bin/helpers/fetcher.js +1 -2
- package/bin/helpers/lists.js +29 -50
- package/bin/helpers/more.js +80 -80
- package/bin/helpers/mutations.js +31 -31
- package/bin/helpers/queries.js +118 -118
- package/bin/helpers/types.d.ts +11 -0
- package/bin/helpers/types.js +1 -0
- package/bin/helpers/workers.js +65 -40
- package/bin/index.js +3 -2
- package/package.json +11 -3
package/bin/helpers/auth.js
CHANGED
|
@@ -36,7 +36,7 @@ function storeAccessToken(token) {
|
|
|
36
36
|
fs.writeFileSync(save_path, token, { encoding: "utf8" });
|
|
37
37
|
}
|
|
38
38
|
catch (error) {
|
|
39
|
-
console.error(
|
|
39
|
+
console.error(`\nError storing acess-token. ${error.message}`);
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
42
|
}
|
|
@@ -78,23 +78,21 @@ function anilistUserLogin(clientId, clientSecret) {
|
|
|
78
78
|
console.log(`\nWelcome Back, ${name}!`);
|
|
79
79
|
}
|
|
80
80
|
else {
|
|
81
|
-
console.log(
|
|
81
|
+
console.log(`\nLogged in successfull!`);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
else {
|
|
85
|
-
console.error("
|
|
85
|
+
console.error("\nFailed to get access token:", token_Data);
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
function currentUserInfo() {
|
|
90
90
|
return __awaiter(this, void 0, void 0, function* () {
|
|
91
91
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
92
|
-
|
|
93
|
-
if (loggedIn) {
|
|
94
|
-
const sToken = yield retriveAccessToken();
|
|
92
|
+
if (yield isLoggedIn()) {
|
|
95
93
|
const headers = {
|
|
96
94
|
"Content-Type": "application/json",
|
|
97
|
-
Authorization: `Bearer ${
|
|
95
|
+
Authorization: `Bearer ${yield retriveAccessToken()}`,
|
|
98
96
|
};
|
|
99
97
|
const request = yield fetch(aniListEndpoint, {
|
|
100
98
|
method: "POST",
|
|
@@ -110,26 +108,35 @@ function currentUserInfo() {
|
|
|
110
108
|
perPage: 10,
|
|
111
109
|
});
|
|
112
110
|
const activities = (_b = (_a = activiResponse === null || activiResponse === void 0 ? void 0 : activiResponse.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.activities;
|
|
113
|
-
console.log(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
111
|
+
console.log(`
|
|
112
|
+
ID: ${user === null || user === void 0 ? void 0 : user.id}
|
|
113
|
+
Name: ${user === null || user === void 0 ? void 0 : user.name}
|
|
114
|
+
siteUrl: ${user === null || user === void 0 ? void 0 : user.siteUrl}
|
|
115
|
+
profileColor: ${(_c = user === null || user === void 0 ? void 0 : user.options) === null || _c === void 0 ? void 0 : _c.profileColor}
|
|
116
|
+
timeZone: ${(_d = user === null || user === void 0 ? void 0 : user.options) === null || _d === void 0 ? void 0 : _d.timezone}
|
|
117
|
+
activityMergeTime: ${(_e = user === null || user === void 0 ? void 0 : user.options) === null || _e === void 0 ? void 0 : _e.activityMergeTime}
|
|
118
|
+
donatorTier: ${user === null || user === void 0 ? void 0 : user.donatorTier}
|
|
119
|
+
donatorBadge: ${user === null || user === void 0 ? void 0 : user.donatorBadge}
|
|
120
|
+
unreadNotificationCount:${user === null || user === void 0 ? void 0 : user.unreadNotificationCount}
|
|
121
|
+
Account Created: ${new Date((user === null || user === void 0 ? void 0 : user.createdAt) * 1000).toUTCString()}
|
|
122
|
+
Account Updated: ${new Date((user === null || user === void 0 ? void 0 : user.updatedAt) * 1000).toUTCString()}
|
|
123
|
+
|
|
124
|
+
Statistics (Anime):
|
|
125
|
+
Count: ${(_g = (_f = user === null || user === void 0 ? void 0 : user.statistics) === null || _f === void 0 ? void 0 : _f.anime) === null || _g === void 0 ? void 0 : _g.count}
|
|
126
|
+
Mean Score: ${(_j = (_h = user === null || user === void 0 ? void 0 : user.statistics) === null || _h === void 0 ? void 0 : _h.anime) === null || _j === void 0 ? void 0 : _j.meanScore}
|
|
127
|
+
Minutes Watched: ${(_l = (_k = user === null || user === void 0 ? void 0 : user.statistics) === null || _k === void 0 ? void 0 : _k.anime) === null || _l === void 0 ? void 0 : _l.minutesWatched}
|
|
128
|
+
|
|
129
|
+
Statistics (Manga):
|
|
130
|
+
Count: ${(_o = (_m = user === null || user === void 0 ? void 0 : user.statistics) === null || _m === void 0 ? void 0 : _m.manga) === null || _o === void 0 ? void 0 : _o.count}
|
|
131
|
+
Chapters Read: ${(_q = (_p = user === null || user === void 0 ? void 0 : user.statistics) === null || _p === void 0 ? void 0 : _p.manga) === null || _q === void 0 ? void 0 : _q.chaptersRead}
|
|
132
|
+
Volumes Read: ${(_s = (_r = user === null || user === void 0 ? void 0 : user.statistics) === null || _r === void 0 ? void 0 : _r.manga) === null || _s === void 0 ? void 0 : _s.volumesRead}
|
|
133
|
+
`);
|
|
126
134
|
console.log(`\nRecent Activities:`);
|
|
127
|
-
activities.length > 0
|
|
128
|
-
activities.map(({
|
|
129
|
-
progress
|
|
130
|
-
? console.log(`${status} ${progress} of ${getTitle(media === null || media === void 0 ? void 0 : media.title)}`)
|
|
131
|
-
: console.log(`${status} ${getTitle(media === null || media === void 0 ? void 0 : media.title)}`);
|
|
135
|
+
if (activities.length > 0) {
|
|
136
|
+
activities.map(({ status, progress, media }) => {
|
|
137
|
+
console.log(`${status} ${progress ? `${progress} of ` : ""}${getTitle(media === null || media === void 0 ? void 0 : media.title)}`);
|
|
132
138
|
});
|
|
139
|
+
}
|
|
133
140
|
return user;
|
|
134
141
|
}
|
|
135
142
|
else {
|
|
@@ -145,8 +152,7 @@ function currentUserInfo() {
|
|
|
145
152
|
}
|
|
146
153
|
function isLoggedIn() {
|
|
147
154
|
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
-
|
|
149
|
-
if (isTokenStored !== null) {
|
|
155
|
+
if ((yield retriveAccessToken()) !== null) {
|
|
150
156
|
return true;
|
|
151
157
|
}
|
|
152
158
|
else {
|
|
@@ -158,9 +164,8 @@ function logoutUser() {
|
|
|
158
164
|
return __awaiter(this, void 0, void 0, function* () {
|
|
159
165
|
if (fs.existsSync(save_path)) {
|
|
160
166
|
try {
|
|
161
|
-
const username = yield currentUsersName();
|
|
162
167
|
fs.unlinkSync(save_path);
|
|
163
|
-
console.log(`\nLogout successful. See you soon, ${
|
|
168
|
+
console.log(`\nLogout successful. See you soon, ${yield currentUsersName()}.`);
|
|
164
169
|
}
|
|
165
170
|
catch (error) {
|
|
166
171
|
console.error("\nError logging out:", error);
|
|
@@ -174,6 +179,10 @@ function logoutUser() {
|
|
|
174
179
|
function currentUsersId() {
|
|
175
180
|
return __awaiter(this, void 0, void 0, function* () {
|
|
176
181
|
var _a;
|
|
182
|
+
if (!(yield isLoggedIn())) {
|
|
183
|
+
console.log(`\nUser not logged in.`);
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
177
186
|
const request = yield fetch(aniListEndpoint, {
|
|
178
187
|
method: "POST",
|
|
179
188
|
headers: {
|
|
@@ -194,6 +203,10 @@ function currentUsersId() {
|
|
|
194
203
|
function currentUsersName() {
|
|
195
204
|
return __awaiter(this, void 0, void 0, function* () {
|
|
196
205
|
var _a;
|
|
206
|
+
if (!(yield isLoggedIn())) {
|
|
207
|
+
console.log(`\nUser not logged in.`);
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
197
210
|
const request = yield fetch(aniListEndpoint, {
|
|
198
211
|
method: "POST",
|
|
199
212
|
headers: {
|
package/bin/helpers/fetcher.js
CHANGED
|
@@ -24,11 +24,10 @@ function fetcher(query, variables) {
|
|
|
24
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
25
|
var _a;
|
|
26
26
|
try {
|
|
27
|
-
const LOGGEDIN = yield isLoggedIn();
|
|
28
27
|
const headers = {
|
|
29
28
|
"content-type": "application/json",
|
|
30
29
|
};
|
|
31
|
-
if (
|
|
30
|
+
if (yield isLoggedIn()) {
|
|
32
31
|
headers["Authorization"] = `Bearer ${yield retriveAccessToken()}`;
|
|
33
32
|
}
|
|
34
33
|
const request = yield fetch(aniListEndpoint, {
|
package/bin/helpers/lists.js
CHANGED
|
@@ -61,8 +61,7 @@ function getTrending(count) {
|
|
|
61
61
|
},
|
|
62
62
|
]);
|
|
63
63
|
// Lets save to the list now
|
|
64
|
-
|
|
65
|
-
if (ISLOGGEDIN) {
|
|
64
|
+
if (yield isLoggedIn()) {
|
|
66
65
|
const query = addAnimeToListMutation;
|
|
67
66
|
const variables = {
|
|
68
67
|
mediaId: selectedAnime,
|
|
@@ -137,8 +136,7 @@ function getPopular(count) {
|
|
|
137
136
|
},
|
|
138
137
|
]);
|
|
139
138
|
// Lets save to the list now
|
|
140
|
-
|
|
141
|
-
if (ISLOGGEDIN) {
|
|
139
|
+
if (yield isLoggedIn()) {
|
|
142
140
|
const query = addAnimeToListMutation;
|
|
143
141
|
const variables = {
|
|
144
142
|
mediaId: selectedAnime,
|
|
@@ -171,10 +169,8 @@ function loggedInUsersAnimeLists() {
|
|
|
171
169
|
return __awaiter(this, void 0, void 0, function* () {
|
|
172
170
|
var _a, _b, _c, _d, _e;
|
|
173
171
|
try {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
const userID = yield currentUsersId();
|
|
177
|
-
if (userID) {
|
|
172
|
+
if (yield isLoggedIn()) {
|
|
173
|
+
if (yield currentUsersId()) {
|
|
178
174
|
const request = yield fetch(aniListEndpoint, {
|
|
179
175
|
method: "POST",
|
|
180
176
|
headers: {
|
|
@@ -183,7 +179,7 @@ function loggedInUsersAnimeLists() {
|
|
|
183
179
|
},
|
|
184
180
|
body: JSON.stringify({
|
|
185
181
|
query: currentUserAnimeList,
|
|
186
|
-
variables: { id:
|
|
182
|
+
variables: { id: yield currentUsersId() },
|
|
187
183
|
}),
|
|
188
184
|
});
|
|
189
185
|
const response = yield request.json();
|
|
@@ -233,8 +229,7 @@ function loggedInUsersAnimeLists() {
|
|
|
233
229
|
},
|
|
234
230
|
]);
|
|
235
231
|
// Lets save to the list now
|
|
236
|
-
|
|
237
|
-
if (ISLOGGEDIN) {
|
|
232
|
+
if (yield isLoggedIn()) {
|
|
238
233
|
const query = addAnimeToListMutation;
|
|
239
234
|
const variables = {
|
|
240
235
|
mediaId: selectedAnime,
|
|
@@ -283,8 +278,7 @@ function loggedInUsersMangaLists() {
|
|
|
283
278
|
return __awaiter(this, void 0, void 0, function* () {
|
|
284
279
|
var _a, _b, _c, _d, _e, _f;
|
|
285
280
|
try {
|
|
286
|
-
|
|
287
|
-
if (loggedIn) {
|
|
281
|
+
if (yield isLoggedIn()) {
|
|
288
282
|
const userID = yield currentUsersId();
|
|
289
283
|
if (userID) {
|
|
290
284
|
const request = yield fetch(aniListEndpoint, {
|
|
@@ -344,8 +338,7 @@ function loggedInUsersMangaLists() {
|
|
|
344
338
|
},
|
|
345
339
|
]);
|
|
346
340
|
// Save the selected manga to the selected list type
|
|
347
|
-
|
|
348
|
-
if (ISLOGGEDIN) {
|
|
341
|
+
if (yield isLoggedIn()) {
|
|
349
342
|
const query = addMangaToListMutation;
|
|
350
343
|
const variables = {
|
|
351
344
|
mediaId: selectedManga,
|
|
@@ -400,8 +393,7 @@ function loggedInUsersMangaLists() {
|
|
|
400
393
|
function deleteAnimeCollection() {
|
|
401
394
|
return __awaiter(this, void 0, void 0, function* () {
|
|
402
395
|
var _a, _b, _c, _d;
|
|
403
|
-
|
|
404
|
-
if (loggedIn) {
|
|
396
|
+
if (yield isLoggedIn()) {
|
|
405
397
|
const userID = yield currentUsersId();
|
|
406
398
|
if (userID) {
|
|
407
399
|
const request = yield fetch(aniListEndpoint, {
|
|
@@ -431,7 +423,7 @@ function deleteAnimeCollection() {
|
|
|
431
423
|
const selectedEntries = lists.find((list) => list.name === selectedList);
|
|
432
424
|
if (selectedEntries) {
|
|
433
425
|
console.log(`\nDeleting entries of '${selectedEntries.name}':`);
|
|
434
|
-
for (const [
|
|
426
|
+
for (const [_, entry] of selectedEntries.entries.entries()) {
|
|
435
427
|
if (entry === null || entry === void 0 ? void 0 : entry.id) {
|
|
436
428
|
yield deleteAnimeByAnimeId(entry === null || entry === void 0 ? void 0 : entry.id, (_c = entry === null || entry === void 0 ? void 0 : entry.media) === null || _c === void 0 ? void 0 : _c.title);
|
|
437
429
|
yield new Promise((resolve) => setTimeout(resolve, 2000));
|
|
@@ -496,8 +488,7 @@ function deleteAnimeByAnimeId(id, title) {
|
|
|
496
488
|
function deleteMangaCollection() {
|
|
497
489
|
return __awaiter(this, void 0, void 0, function* () {
|
|
498
490
|
var _a, _b, _c, _d;
|
|
499
|
-
|
|
500
|
-
if (loggedIn) {
|
|
491
|
+
if (yield isLoggedIn()) {
|
|
501
492
|
const userID = yield currentUsersId();
|
|
502
493
|
if (userID) {
|
|
503
494
|
const request = yield fetch(aniListEndpoint, {
|
|
@@ -527,7 +518,7 @@ function deleteMangaCollection() {
|
|
|
527
518
|
const selectedEntries = lists.find((list) => list.name === selectedList);
|
|
528
519
|
if (selectedEntries) {
|
|
529
520
|
console.log(`\nDeleting entries of '${selectedEntries.name}':`);
|
|
530
|
-
for (const [
|
|
521
|
+
for (const [_, entry] of selectedEntries.entries.entries()) {
|
|
531
522
|
if (entry === null || entry === void 0 ? void 0 : entry.id) {
|
|
532
523
|
yield deleteMangaByMangaId(entry === null || entry === void 0 ? void 0 : entry.id, (_c = entry === null || entry === void 0 ? void 0 : entry.media) === null || _c === void 0 ? void 0 : _c.title);
|
|
533
524
|
yield new Promise((resolve) => setTimeout(resolve, 2000));
|
|
@@ -561,12 +552,12 @@ function deleteMangaCollection() {
|
|
|
561
552
|
}
|
|
562
553
|
function deleteMangaByMangaId(id, title) {
|
|
563
554
|
return __awaiter(this, void 0, void 0, function* () {
|
|
564
|
-
var _a, _b
|
|
555
|
+
var _a, _b;
|
|
565
556
|
try {
|
|
566
557
|
const request = yield fetch(aniListEndpoint, {
|
|
567
558
|
method: "POST",
|
|
568
559
|
headers: {
|
|
569
|
-
"
|
|
560
|
+
"Content-Type": "application/json",
|
|
570
561
|
Authorization: `Bearer ${yield retriveAccessToken()}`,
|
|
571
562
|
},
|
|
572
563
|
body: JSON.stringify({
|
|
@@ -574,18 +565,18 @@ function deleteMangaByMangaId(id, title) {
|
|
|
574
565
|
variables: { id },
|
|
575
566
|
}),
|
|
576
567
|
});
|
|
577
|
-
const
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
568
|
+
const { data, errors } = yield request.json();
|
|
569
|
+
const statusMessage = title ? getTitle(title) : "";
|
|
570
|
+
if (request.ok) {
|
|
571
|
+
const deleted = (_a = data === null || data === void 0 ? void 0 : data.DeleteMediaListEntry) === null || _a === void 0 ? void 0 : _a.deleted;
|
|
572
|
+
console.log(`del ${statusMessage} ${deleted ? "✅" : "❌"}`);
|
|
581
573
|
}
|
|
582
574
|
else {
|
|
583
|
-
console.
|
|
584
|
-
console.log(response);
|
|
575
|
+
console.error(`Error deleting manga. ${(_b = errors === null || errors === void 0 ? void 0 : errors[0]) === null || _b === void 0 ? void 0 : _b.message}`);
|
|
585
576
|
}
|
|
586
577
|
}
|
|
587
578
|
catch (error) {
|
|
588
|
-
console.
|
|
579
|
+
console.error(`Error deleting manga. ${id} ${error instanceof Error ? error.message : error}`);
|
|
589
580
|
}
|
|
590
581
|
});
|
|
591
582
|
}
|
|
@@ -594,24 +585,13 @@ function getUpcomingAnimes(count) {
|
|
|
594
585
|
var _a, _b, _c, _d, _e;
|
|
595
586
|
try {
|
|
596
587
|
const { nextSeason, nextYear } = getNextSeasonAndYear();
|
|
597
|
-
const
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
if (loggedIn) {
|
|
602
|
-
headers["Authorization"] = `Bearer ${yield retriveAccessToken()}`;
|
|
603
|
-
}
|
|
604
|
-
const request = yield fetch(aniListEndpoint, {
|
|
605
|
-
method: "POST",
|
|
606
|
-
headers: headers,
|
|
607
|
-
body: JSON.stringify({
|
|
608
|
-
query: upcomingAnimesQuery,
|
|
609
|
-
variables: { nextSeason, nextYear, perPage: count },
|
|
610
|
-
}),
|
|
588
|
+
const request = yield fetcher(upcomingAnimesQuery, {
|
|
589
|
+
nextSeason,
|
|
590
|
+
nextYear,
|
|
591
|
+
perPage: count,
|
|
611
592
|
});
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
const upcoming = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.media) !== null && _c !== void 0 ? _c : [];
|
|
593
|
+
if (request) {
|
|
594
|
+
const upcoming = (_c = (_b = (_a = request === null || request === void 0 ? void 0 : request.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.media) !== null && _c !== void 0 ? _c : [];
|
|
615
595
|
const { selectedAnime } = yield inquirer.prompt([
|
|
616
596
|
{
|
|
617
597
|
type: "list",
|
|
@@ -640,8 +620,7 @@ function getUpcomingAnimes(count) {
|
|
|
640
620
|
},
|
|
641
621
|
]);
|
|
642
622
|
// Lets save to the list now
|
|
643
|
-
|
|
644
|
-
if (ISLOGGEDIN) {
|
|
623
|
+
if (yield isLoggedIn()) {
|
|
645
624
|
const query = addAnimeToListMutation;
|
|
646
625
|
const variables = { mediaId: selectedAnime, status: selectedListType };
|
|
647
626
|
const response = yield fetcher(query, variables);
|
|
@@ -655,7 +634,7 @@ function getUpcomingAnimes(count) {
|
|
|
655
634
|
}
|
|
656
635
|
}
|
|
657
636
|
else {
|
|
658
|
-
console.error(`\nSomething went wrong. ${(_e =
|
|
637
|
+
console.error(`\nSomething went wrong. ${(_e = request === null || request === void 0 ? void 0 : request.errors[0]) === null || _e === void 0 ? void 0 : _e.message}`);
|
|
659
638
|
}
|
|
660
639
|
}
|
|
661
640
|
catch (error) {
|
package/bin/helpers/more.js
CHANGED
|
@@ -18,11 +18,10 @@ function getUserInfoByUsername(username) {
|
|
|
18
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
19
19
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
20
20
|
try {
|
|
21
|
-
const
|
|
22
|
-
let headers = {
|
|
21
|
+
const headers = {
|
|
23
22
|
"content-type": "application/json",
|
|
24
23
|
};
|
|
25
|
-
if (
|
|
24
|
+
if (yield isLoggedIn()) {
|
|
26
25
|
headers["Authorization"] = `Bearer ${yield retriveAccessToken()}`;
|
|
27
26
|
}
|
|
28
27
|
const request = yield fetch(aniListEndpoint, {
|
|
@@ -44,9 +43,8 @@ function getUserInfoByUsername(username) {
|
|
|
44
43
|
console.log(`siteUrl:\t${user === null || user === void 0 ? void 0 : user.siteUrl}`);
|
|
45
44
|
console.log(`Donator Tier:\t${user === null || user === void 0 ? void 0 : user.donatorTier}`);
|
|
46
45
|
console.log(`Donator Badge:\t${user === null || user === void 0 ? void 0 : user.donatorBadge}`);
|
|
47
|
-
{
|
|
48
|
-
(
|
|
49
|
-
console.log(`Account Created:${new Date((user === null || user === void 0 ? void 0 : user.createdAt) * 1000).toUTCString()}`);
|
|
46
|
+
if (user === null || user === void 0 ? void 0 : user.createdAt) {
|
|
47
|
+
console.log(`Account Created: ${new Date(user.createdAt * 1000).toUTCString()}`);
|
|
50
48
|
}
|
|
51
49
|
console.log(`Account Updated:${new Date((user === null || user === void 0 ? void 0 : user.updatedAt) * 1000).toUTCString()}`);
|
|
52
50
|
console.log(`I blocked?\t${user === null || user === void 0 ? void 0 : user.isBlocked}`);
|
|
@@ -57,12 +55,11 @@ function getUserInfoByUsername(username) {
|
|
|
57
55
|
console.log(`\nStatistics (Anime)\nCount: ${(_g = (_f = user === null || user === void 0 ? void 0 : user.statistics) === null || _f === void 0 ? void 0 : _f.anime) === null || _g === void 0 ? void 0 : _g.count} episodesWatched: ${(_j = (_h = user === null || user === void 0 ? void 0 : user.statistics) === null || _h === void 0 ? void 0 : _h.anime) === null || _j === void 0 ? void 0 : _j.episodesWatched} minutesWatched: ${(_l = (_k = user === null || user === void 0 ? void 0 : user.statistics) === null || _k === void 0 ? void 0 : _k.anime) === null || _l === void 0 ? void 0 : _l.minutesWatched}`);
|
|
58
56
|
console.log(`Statistics (Manga)\nCount: ${(_o = (_m = user === null || user === void 0 ? void 0 : user.statistics) === null || _m === void 0 ? void 0 : _m.manga) === null || _o === void 0 ? void 0 : _o.count} Chapter Read: ${(_q = (_p = user === null || user === void 0 ? void 0 : user.statistics) === null || _p === void 0 ? void 0 : _p.manga) === null || _q === void 0 ? void 0 : _q.chaptersRead} Volumes Read: ${(_s = (_r = user === null || user === void 0 ? void 0 : user.statistics) === null || _r === void 0 ? void 0 : _r.manga) === null || _s === void 0 ? void 0 : _s.volumesRead}`);
|
|
59
57
|
console.log(`\nRecent Activities:`);
|
|
60
|
-
activities.length > 0
|
|
61
|
-
activities.map(({
|
|
62
|
-
progress
|
|
63
|
-
? console.log(`${status} ${progress} of ${getTitle(media === null || media === void 0 ? void 0 : media.title)}`)
|
|
64
|
-
: console.log(`${status} ${getTitle(media === null || media === void 0 ? void 0 : media.title)}`);
|
|
58
|
+
if (activities.length > 0) {
|
|
59
|
+
activities.map(({ status, progress, media }) => {
|
|
60
|
+
console.log(`${status} ${progress ? `${progress} of ` : ""}${getTitle(media === null || media === void 0 ? void 0 : media.title)}`);
|
|
65
61
|
});
|
|
62
|
+
}
|
|
66
63
|
}
|
|
67
64
|
else {
|
|
68
65
|
console.error(`\n${request.status} ${(_t = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _t === void 0 ? void 0 : _t.message}`);
|
|
@@ -76,11 +73,11 @@ function getUserInfoByUsername(username) {
|
|
|
76
73
|
function getAnimeDetailsByID(anilistID) {
|
|
77
74
|
return __awaiter(this, void 0, void 0, function* () {
|
|
78
75
|
var _a;
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
const query = animeDetailsQuery;
|
|
77
|
+
const variables = { id: anilistID };
|
|
81
78
|
const details = yield fetcher(query, variables);
|
|
82
|
-
if (details) {
|
|
83
|
-
const { id,
|
|
79
|
+
if ((_a = details === null || details === void 0 ? void 0 : details.data) === null || _a === void 0 ? void 0 : _a.Media) {
|
|
80
|
+
const { id, title, description, duration, startDate, endDate, countryOfOrigin, isAdult, status, season, format, genres, siteUrl, } = details.data.Media;
|
|
84
81
|
console.log(`\nID: ${id}`);
|
|
85
82
|
console.log(`Title: ${(title === null || title === void 0 ? void 0 : title.userPreffered) || getTitle(title)}`);
|
|
86
83
|
console.log(`Description: ${removeHtmlAndMarkdown(description)}`);
|
|
@@ -134,8 +131,7 @@ function getAnimeSearchResults(search, count) {
|
|
|
134
131
|
},
|
|
135
132
|
]);
|
|
136
133
|
// Lets save to the list now
|
|
137
|
-
|
|
138
|
-
if (ISLOGGEDIN) {
|
|
134
|
+
if (yield isLoggedIn()) {
|
|
139
135
|
const query = addAnimeToListMutation;
|
|
140
136
|
const variables = { mediaId: selectedList, status: selectedListType };
|
|
141
137
|
const response = yield fetcher(query, variables);
|
|
@@ -194,8 +190,7 @@ function getMangaSearchResults(search, count) {
|
|
|
194
190
|
},
|
|
195
191
|
]);
|
|
196
192
|
// If logged in save to the list
|
|
197
|
-
|
|
198
|
-
if (ISLOGGEDIN) {
|
|
193
|
+
if (yield isLoggedIn()) {
|
|
199
194
|
const mutation = addMangaToListMutation;
|
|
200
195
|
const variables = { mediaId: selectedMangaId, status: selectedListType };
|
|
201
196
|
const response = yield fetcher(mutation, variables);
|
|
@@ -215,9 +210,8 @@ function getMangaSearchResults(search, count) {
|
|
|
215
210
|
}
|
|
216
211
|
function deleteUserActivities() {
|
|
217
212
|
return __awaiter(this, void 0, void 0, function* () {
|
|
218
|
-
var _a, _b, _c, _d;
|
|
219
|
-
|
|
220
|
-
if (LOGGEDIN) {
|
|
213
|
+
var _a, _b, _c, _d, _e, _f;
|
|
214
|
+
if (yield isLoggedIn()) {
|
|
221
215
|
const { activityType } = yield inquirer.prompt([
|
|
222
216
|
{
|
|
223
217
|
type: "list",
|
|
@@ -233,51 +227,52 @@ function deleteUserActivities() {
|
|
|
233
227
|
],
|
|
234
228
|
},
|
|
235
229
|
]);
|
|
236
|
-
let query = ``;
|
|
237
230
|
const userId = yield currentUsersId();
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
console.log(`${activityID} ${isDeleted ? "✅" : "❌"}`);
|
|
276
|
-
// avoiding rate-limit
|
|
277
|
-
yield new Promise((resolve) => setTimeout(resolve, 2000));
|
|
231
|
+
const variables = { page: 1, perPage: 100, userId };
|
|
232
|
+
const queryMap = {
|
|
233
|
+
0: activityAllQuery,
|
|
234
|
+
1: activityTextQuery,
|
|
235
|
+
2: activityMediaList,
|
|
236
|
+
3: activityAnimeListQuery,
|
|
237
|
+
4: activityMangaListQuery,
|
|
238
|
+
5: activityMessageQuery,
|
|
239
|
+
};
|
|
240
|
+
const query = queryMap[activityType];
|
|
241
|
+
let hasMoreActivities = true;
|
|
242
|
+
while (hasMoreActivities) {
|
|
243
|
+
const response = yield fetcher(query, {
|
|
244
|
+
page: 1,
|
|
245
|
+
perPage: 50,
|
|
246
|
+
userId: yield currentUsersId(),
|
|
247
|
+
});
|
|
248
|
+
if ((_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.activities) {
|
|
249
|
+
let count = 0;
|
|
250
|
+
const activities = (_d = (_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.Page) === null || _d === void 0 ? void 0 : _d.activities;
|
|
251
|
+
if (!activities || activities.length === 0) {
|
|
252
|
+
console.log(`\nNo more activities available.`);
|
|
253
|
+
hasMoreActivities = false;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
for (const act of activities) {
|
|
257
|
+
// Ensure ID is present to avoid unintended errors
|
|
258
|
+
if (act === null || act === void 0 ? void 0 : act.id) {
|
|
259
|
+
const deleteResponse = yield fetcher(deleteActivityMutation, {
|
|
260
|
+
id: act === null || act === void 0 ? void 0 : act.id,
|
|
261
|
+
});
|
|
262
|
+
const isDeleted = (_f = (_e = deleteResponse === null || deleteResponse === void 0 ? void 0 : deleteResponse.data) === null || _e === void 0 ? void 0 : _e.DeleteActivity) === null || _f === void 0 ? void 0 : _f.deleted;
|
|
263
|
+
count++;
|
|
264
|
+
console.log(`[${count}/${activities.length}] ${act === null || act === void 0 ? void 0 : act.id} ${isDeleted ? "✅" : "❌"}`);
|
|
265
|
+
// Avoiding rate-limit
|
|
266
|
+
yield new Promise((resolve) => setTimeout(resolve, 2000));
|
|
267
|
+
}
|
|
278
268
|
}
|
|
279
269
|
}
|
|
280
270
|
}
|
|
271
|
+
else {
|
|
272
|
+
// In case of an unexpected null response, exit the loop
|
|
273
|
+
console.log(`\nProbably deleted all the activities of this type.`);
|
|
274
|
+
hasMoreActivities = false;
|
|
275
|
+
}
|
|
281
276
|
}
|
|
282
277
|
}
|
|
283
278
|
else {
|
|
@@ -289,24 +284,23 @@ function writeTextActivity(status) {
|
|
|
289
284
|
return __awaiter(this, void 0, void 0, function* () {
|
|
290
285
|
var _a;
|
|
291
286
|
try {
|
|
292
|
-
if (yield isLoggedIn()) {
|
|
293
|
-
const query = saveTextActivityMutation;
|
|
294
|
-
const addTagInStatus = status +
|
|
295
|
-
`<br><br><br><br>*Written using [@irfanshadikrishad/anilist](https://www.npmjs.com/package/@irfanshadikrishad/anilist).*`;
|
|
296
|
-
const variables = { status: addTagInStatus };
|
|
297
|
-
const data = yield fetcher(query, variables);
|
|
298
|
-
if (data) {
|
|
299
|
-
const savedActivity = (_a = data === null || data === void 0 ? void 0 : data.data) === null || _a === void 0 ? void 0 : _a.SaveTextActivity;
|
|
300
|
-
if (savedActivity === null || savedActivity === void 0 ? void 0 : savedActivity.id) {
|
|
301
|
-
console.log(`\n[${savedActivity === null || savedActivity === void 0 ? void 0 : savedActivity.id}] status saved successfully!`);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
else {
|
|
305
|
-
console.error(`\nSomething went wrong. ${data}.`);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
287
|
+
if (!(yield isLoggedIn())) {
|
|
309
288
|
console.error(`\nPlease login to use this feature.`);
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
const query = saveTextActivityMutation;
|
|
292
|
+
const variables = {
|
|
293
|
+
status: status +
|
|
294
|
+
`<br><br><br><br>*Written using [@irfanshadikrishad/anilist](https://www.npmjs.com/package/@irfanshadikrishad/anilist).*`,
|
|
295
|
+
};
|
|
296
|
+
const data = yield fetcher(query, variables);
|
|
297
|
+
if (!data) {
|
|
298
|
+
console.error(`\nSomething went wrong. ${data}.`);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
const savedActivity = (_a = data.data) === null || _a === void 0 ? void 0 : _a.SaveTextActivity;
|
|
302
|
+
if (savedActivity === null || savedActivity === void 0 ? void 0 : savedActivity.id) {
|
|
303
|
+
console.log(`\n[${savedActivity.id}] status saved successfully!`);
|
|
310
304
|
}
|
|
311
305
|
}
|
|
312
306
|
catch (error) {
|
|
@@ -441,6 +435,9 @@ function importAnimeList() {
|
|
|
441
435
|
case 1:
|
|
442
436
|
yield importAnimeListFromExportedJSON();
|
|
443
437
|
break;
|
|
438
|
+
default:
|
|
439
|
+
console.log(`\nInvalid Choice.`);
|
|
440
|
+
break;
|
|
444
441
|
}
|
|
445
442
|
}
|
|
446
443
|
catch (error) {
|
|
@@ -464,6 +461,9 @@ function importMangaList() {
|
|
|
464
461
|
case 1:
|
|
465
462
|
yield importMangaListFromExportedJSON();
|
|
466
463
|
break;
|
|
464
|
+
default:
|
|
465
|
+
console.log(`\nInvalid Choice.`);
|
|
466
|
+
break;
|
|
467
467
|
}
|
|
468
468
|
}
|
|
469
469
|
catch (error) {
|