@irfanshadikrishad/anilist 1.0.1 → 1.0.3
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/README.md +79 -16
- package/bin/helpers/auth.d.ts +4 -3
- package/bin/helpers/auth.js +45 -11
- package/bin/helpers/fetcher.d.ts +11 -1
- package/bin/helpers/fetcher.js +19 -1
- package/bin/helpers/lists.js +349 -100
- package/bin/helpers/more.d.ts +4 -1
- package/bin/helpers/more.js +202 -25
- package/bin/helpers/mutations.d.ts +4 -0
- package/bin/helpers/mutations.js +20 -0
- package/bin/helpers/queries.d.ts +20 -12
- package/bin/helpers/queries.js +98 -72
- package/bin/helpers/workers.js +3 -11
- package/bin/index.js +44 -11
- package/package.json +3 -3
- package/bin/helpers/colorize.d.ts +0 -5
- package/bin/helpers/colorize.js +0 -14
package/bin/helpers/lists.js
CHANGED
|
@@ -13,9 +13,11 @@ import { aniListEndpoint, getNextSeasonAndYear, getTitle } from "./workers.js";
|
|
|
13
13
|
import { deleteMangaEntryMutation, deleteMediaEntryMutation, popularQuery, trendingQuery, upcomingAnimesQuery, } from "./queries.js";
|
|
14
14
|
import { currentUserAnimeList, currentUserMangaList } from "./queries.js";
|
|
15
15
|
import { isLoggedIn, currentUsersId, retriveAccessToken } from "./auth.js";
|
|
16
|
+
import { addAnimeToListMutation, addMangaToListMutation } from "./mutations.js";
|
|
17
|
+
import { fetcher } from "./fetcher.js";
|
|
16
18
|
function getTrending(count) {
|
|
17
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
-
var _a, _b, _c;
|
|
20
|
+
var _a, _b, _c, _d;
|
|
19
21
|
try {
|
|
20
22
|
const request = yield fetch(aniListEndpoint, {
|
|
21
23
|
method: "POST",
|
|
@@ -31,13 +33,57 @@ function getTrending(count) {
|
|
|
31
33
|
if (request.status === 200) {
|
|
32
34
|
const media = (_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;
|
|
33
35
|
if ((media === null || media === void 0 ? void 0 : media.length) > 0) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
const { selectedAnime } = yield inquirer.prompt([
|
|
37
|
+
{
|
|
38
|
+
type: "list",
|
|
39
|
+
name: "selectedAnime",
|
|
40
|
+
message: "Select anime to add to the list:",
|
|
41
|
+
choices: media.map((upx, idx) => ({
|
|
42
|
+
name: `[${idx + 1}] ${getTitle(upx === null || upx === void 0 ? void 0 : upx.title)}`,
|
|
43
|
+
value: upx === null || upx === void 0 ? void 0 : upx.id,
|
|
44
|
+
})),
|
|
45
|
+
pageSize: 10,
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
// Where to save
|
|
49
|
+
const { selectedListType } = yield inquirer.prompt([
|
|
50
|
+
{
|
|
51
|
+
type: "list",
|
|
52
|
+
name: "selectedListType",
|
|
53
|
+
message: "Select the list where you want to save this anime:",
|
|
54
|
+
choices: [
|
|
55
|
+
{ name: "Planning", value: "PLANNING" },
|
|
56
|
+
{ name: "Watching", value: "CURRENT" },
|
|
57
|
+
{ name: "Completed", value: "COMPLETED" },
|
|
58
|
+
{ name: "Paused", value: "PAUSED" },
|
|
59
|
+
{ name: "Dropped", value: "DROPPED" },
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
]);
|
|
63
|
+
// Lets save to the list now
|
|
64
|
+
const ISLOGGEDIN = yield isLoggedIn();
|
|
65
|
+
if (ISLOGGEDIN) {
|
|
66
|
+
const query = addAnimeToListMutation;
|
|
67
|
+
const variables = {
|
|
68
|
+
mediaId: selectedAnime,
|
|
69
|
+
status: selectedListType,
|
|
70
|
+
};
|
|
71
|
+
const response = yield fetcher(query, variables);
|
|
72
|
+
if (response) {
|
|
73
|
+
const saved = (_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.SaveMediaListEntry;
|
|
74
|
+
console.log(`\nEntry ${saved === null || saved === void 0 ? void 0 : saved.id}. Saved as ${saved === null || saved === void 0 ? void 0 : saved.status}.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.error(`Please log in first to use this feature.`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log(`\nNo trending available at the moment.`);
|
|
37
83
|
}
|
|
38
84
|
}
|
|
39
85
|
else {
|
|
40
|
-
console.log(`Something went wrong. ${(
|
|
86
|
+
console.log(`Something went wrong. ${(_d = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _d === void 0 ? void 0 : _d.message}`);
|
|
41
87
|
}
|
|
42
88
|
}
|
|
43
89
|
catch (error) {
|
|
@@ -47,7 +93,7 @@ function getTrending(count) {
|
|
|
47
93
|
}
|
|
48
94
|
function getPopular(count) {
|
|
49
95
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
var _a, _b, _c;
|
|
96
|
+
var _a, _b, _c, _d;
|
|
51
97
|
try {
|
|
52
98
|
const request = yield fetch(aniListEndpoint, {
|
|
53
99
|
method: "POST",
|
|
@@ -63,13 +109,57 @@ function getPopular(count) {
|
|
|
63
109
|
if (request.status === 200) {
|
|
64
110
|
const media = (_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;
|
|
65
111
|
if ((media === null || media === void 0 ? void 0 : media.length) > 0) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
112
|
+
const { selectedAnime } = yield inquirer.prompt([
|
|
113
|
+
{
|
|
114
|
+
type: "list",
|
|
115
|
+
name: "selectedAnime",
|
|
116
|
+
message: "Select anime to add to the list:",
|
|
117
|
+
choices: media.map((upx, idx) => ({
|
|
118
|
+
name: `[${idx + 1}] ${getTitle(upx === null || upx === void 0 ? void 0 : upx.title)}`,
|
|
119
|
+
value: upx === null || upx === void 0 ? void 0 : upx.id,
|
|
120
|
+
})),
|
|
121
|
+
pageSize: 10,
|
|
122
|
+
},
|
|
123
|
+
]);
|
|
124
|
+
// Where to save
|
|
125
|
+
const { selectedListType } = yield inquirer.prompt([
|
|
126
|
+
{
|
|
127
|
+
type: "list",
|
|
128
|
+
name: "selectedListType",
|
|
129
|
+
message: "Select the list where you want to save this anime:",
|
|
130
|
+
choices: [
|
|
131
|
+
{ name: "Planning", value: "PLANNING" },
|
|
132
|
+
{ name: "Watching", value: "CURRENT" },
|
|
133
|
+
{ name: "Completed", value: "COMPLETED" },
|
|
134
|
+
{ name: "Paused", value: "PAUSED" },
|
|
135
|
+
{ name: "Dropped", value: "DROPPED" },
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
]);
|
|
139
|
+
// Lets save to the list now
|
|
140
|
+
const ISLOGGEDIN = yield isLoggedIn();
|
|
141
|
+
if (ISLOGGEDIN) {
|
|
142
|
+
const query = addAnimeToListMutation;
|
|
143
|
+
const variables = {
|
|
144
|
+
mediaId: selectedAnime,
|
|
145
|
+
status: selectedListType,
|
|
146
|
+
};
|
|
147
|
+
const response = yield fetcher(query, variables);
|
|
148
|
+
if (response) {
|
|
149
|
+
const saved = (_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.SaveMediaListEntry;
|
|
150
|
+
console.log(`\nEntry ${saved === null || saved === void 0 ? void 0 : saved.id}. Saved as ${saved === null || saved === void 0 ? void 0 : saved.status}.`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
console.error(`Please log in first to use this feature.`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.log(`No popular available at this moment.`);
|
|
69
159
|
}
|
|
70
160
|
}
|
|
71
161
|
else {
|
|
72
|
-
console.log(`Something went wrong. ${(
|
|
162
|
+
console.log(`Something went wrong. ${(_d = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _d === void 0 ? void 0 : _d.message}`);
|
|
73
163
|
}
|
|
74
164
|
}
|
|
75
165
|
catch (error) {
|
|
@@ -79,7 +169,7 @@ function getPopular(count) {
|
|
|
79
169
|
}
|
|
80
170
|
function loggedInUsersAnimeLists() {
|
|
81
171
|
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
var _a, _b, _c;
|
|
172
|
+
var _a, _b, _c, _d, _e;
|
|
83
173
|
try {
|
|
84
174
|
const loggedIn = yield isLoggedIn();
|
|
85
175
|
if (loggedIn) {
|
|
@@ -99,28 +189,81 @@ function loggedInUsersAnimeLists() {
|
|
|
99
189
|
const response = yield request.json();
|
|
100
190
|
if (request.status === 200) {
|
|
101
191
|
const lists = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection) === null || _b === void 0 ? void 0 : _b.lists;
|
|
102
|
-
|
|
103
|
-
{
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
192
|
+
if (lists.length > 0) {
|
|
193
|
+
const { selectedList } = yield inquirer.prompt([
|
|
194
|
+
{
|
|
195
|
+
type: "list",
|
|
196
|
+
name: "selectedList",
|
|
197
|
+
message: "Select an anime list:",
|
|
198
|
+
choices: lists.map((list) => list.name),
|
|
199
|
+
},
|
|
200
|
+
]);
|
|
201
|
+
const selectedEntries = lists.find((list) => list.name === selectedList);
|
|
202
|
+
if (selectedEntries) {
|
|
203
|
+
console.log(`\nEntries for '${selectedEntries.name}':`);
|
|
204
|
+
if (((_c = selectedEntries === null || selectedEntries === void 0 ? void 0 : selectedEntries.entries) === null || _c === void 0 ? void 0 : _c.length) > 0) {
|
|
205
|
+
const { selectedAnime } = yield inquirer.prompt([
|
|
206
|
+
{
|
|
207
|
+
type: "list",
|
|
208
|
+
name: "selectedAnime",
|
|
209
|
+
message: "Select anime to add to the list:",
|
|
210
|
+
choices: selectedEntries === null || selectedEntries === void 0 ? void 0 : selectedEntries.entries.map((upx, idx) => {
|
|
211
|
+
var _a, _b;
|
|
212
|
+
return ({
|
|
213
|
+
name: `[${idx + 1}] ${getTitle((_a = upx === null || upx === void 0 ? void 0 : upx.media) === null || _a === void 0 ? void 0 : _a.title)}`,
|
|
214
|
+
value: (_b = upx === null || upx === void 0 ? void 0 : upx.media) === null || _b === void 0 ? void 0 : _b.id,
|
|
215
|
+
});
|
|
216
|
+
}),
|
|
217
|
+
pageSize: 10,
|
|
218
|
+
},
|
|
219
|
+
]);
|
|
220
|
+
// Where to save
|
|
221
|
+
const { selectedListType } = yield inquirer.prompt([
|
|
222
|
+
{
|
|
223
|
+
type: "list",
|
|
224
|
+
name: "selectedListType",
|
|
225
|
+
message: "Select the list where you want to save this anime:",
|
|
226
|
+
choices: [
|
|
227
|
+
{ name: "Planning", value: "PLANNING" },
|
|
228
|
+
{ name: "Watching", value: "CURRENT" },
|
|
229
|
+
{ name: "Completed", value: "COMPLETED" },
|
|
230
|
+
{ name: "Paused", value: "PAUSED" },
|
|
231
|
+
{ name: "Dropped", value: "DROPPED" },
|
|
232
|
+
],
|
|
233
|
+
},
|
|
234
|
+
]);
|
|
235
|
+
// Lets save to the list now
|
|
236
|
+
const ISLOGGEDIN = yield isLoggedIn();
|
|
237
|
+
if (ISLOGGEDIN) {
|
|
238
|
+
const query = addAnimeToListMutation;
|
|
239
|
+
const variables = {
|
|
240
|
+
mediaId: selectedAnime,
|
|
241
|
+
status: selectedListType,
|
|
242
|
+
};
|
|
243
|
+
const response = yield fetcher(query, variables);
|
|
244
|
+
if (response) {
|
|
245
|
+
const saved = (_d = response === null || response === void 0 ? void 0 : response.data) === null || _d === void 0 ? void 0 : _d.SaveMediaListEntry;
|
|
246
|
+
console.log(`\nEntry ${saved === null || saved === void 0 ? void 0 : saved.id}. Saved as ${saved === null || saved === void 0 ? void 0 : saved.status}.`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
console.error(`Please log in first to use this feature.`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
console.log(`Not available at this moment.`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
console.log("No entries found.");
|
|
259
|
+
}
|
|
117
260
|
}
|
|
118
261
|
else {
|
|
119
|
-
console.log(
|
|
262
|
+
console.log(`\nYou seems to have no anime(s) in your lists.`);
|
|
120
263
|
}
|
|
121
264
|
}
|
|
122
265
|
else {
|
|
123
|
-
console.log(`Something went wrong. ${(
|
|
266
|
+
console.log(`Something went wrong. ${(_e = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _e === void 0 ? void 0 : _e.message}`);
|
|
124
267
|
}
|
|
125
268
|
}
|
|
126
269
|
else {
|
|
@@ -138,7 +281,7 @@ function loggedInUsersAnimeLists() {
|
|
|
138
281
|
}
|
|
139
282
|
function loggedInUsersMangaLists() {
|
|
140
283
|
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
-
var _a, _b, _c;
|
|
284
|
+
var _a, _b, _c, _d, _e, _f;
|
|
142
285
|
try {
|
|
143
286
|
const loggedIn = yield isLoggedIn();
|
|
144
287
|
if (loggedIn) {
|
|
@@ -147,7 +290,7 @@ function loggedInUsersMangaLists() {
|
|
|
147
290
|
const request = yield fetch(aniListEndpoint, {
|
|
148
291
|
method: "POST",
|
|
149
292
|
headers: {
|
|
150
|
-
"
|
|
293
|
+
"Content-Type": "application/json",
|
|
151
294
|
Authorization: `Bearer ${yield retriveAccessToken()}`,
|
|
152
295
|
},
|
|
153
296
|
body: JSON.stringify({
|
|
@@ -156,42 +299,101 @@ function loggedInUsersMangaLists() {
|
|
|
156
299
|
}),
|
|
157
300
|
});
|
|
158
301
|
const response = yield request.json();
|
|
159
|
-
if (request.status === 200) {
|
|
160
|
-
const lists =
|
|
161
|
-
|
|
162
|
-
{
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
302
|
+
if (request.status === 200 && ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection)) {
|
|
303
|
+
const lists = response.data.MediaListCollection.lists;
|
|
304
|
+
if (lists && lists.length > 0) {
|
|
305
|
+
const { selectedList } = yield inquirer.prompt([
|
|
306
|
+
{
|
|
307
|
+
type: "list",
|
|
308
|
+
name: "selectedList",
|
|
309
|
+
message: "Select a manga list:",
|
|
310
|
+
choices: lists.map((list) => list.name),
|
|
311
|
+
},
|
|
312
|
+
]);
|
|
313
|
+
const selectedEntries = lists.find((list) => list.name === selectedList);
|
|
314
|
+
if (selectedEntries && selectedEntries.entries.length > 0) {
|
|
315
|
+
console.log(`\nEntries for '${selectedEntries.name}':`);
|
|
316
|
+
const { selectedManga } = yield inquirer.prompt([
|
|
317
|
+
{
|
|
318
|
+
type: "list",
|
|
319
|
+
name: "selectedManga",
|
|
320
|
+
message: "Select a manga to add to the list:",
|
|
321
|
+
choices: selectedEntries.entries.map((entry, idx) => {
|
|
322
|
+
var _a;
|
|
323
|
+
return ({
|
|
324
|
+
name: `[${idx + 1}] ${getTitle(entry.media.title)}`,
|
|
325
|
+
value: (_a = entry === null || entry === void 0 ? void 0 : entry.media) === null || _a === void 0 ? void 0 : _a.id,
|
|
326
|
+
});
|
|
327
|
+
}),
|
|
328
|
+
pageSize: 10,
|
|
329
|
+
},
|
|
330
|
+
]);
|
|
331
|
+
// Prompt user to select list type to save to
|
|
332
|
+
const { selectedListType } = yield inquirer.prompt([
|
|
333
|
+
{
|
|
334
|
+
type: "list",
|
|
335
|
+
name: "selectedListType",
|
|
336
|
+
message: "Select the list where you want to save this manga:",
|
|
337
|
+
choices: [
|
|
338
|
+
{ name: "Planning", value: "PLANNING" },
|
|
339
|
+
{ name: "Reading", value: "CURRENT" },
|
|
340
|
+
{ name: "Completed", value: "COMPLETED" },
|
|
341
|
+
{ name: "Paused", value: "PAUSED" },
|
|
342
|
+
{ name: "Dropped", value: "DROPPED" },
|
|
343
|
+
],
|
|
344
|
+
},
|
|
345
|
+
]);
|
|
346
|
+
// Save the selected manga to the selected list type
|
|
347
|
+
const ISLOGGEDIN = yield isLoggedIn();
|
|
348
|
+
if (ISLOGGEDIN) {
|
|
349
|
+
const query = addMangaToListMutation;
|
|
350
|
+
const variables = {
|
|
351
|
+
mediaId: selectedManga,
|
|
352
|
+
status: selectedListType,
|
|
353
|
+
};
|
|
354
|
+
const saveRequest = yield fetch(aniListEndpoint, {
|
|
355
|
+
method: "POST",
|
|
356
|
+
headers: {
|
|
357
|
+
"Content-Type": "application/json",
|
|
358
|
+
Authorization: `Bearer ${yield retriveAccessToken()}`,
|
|
359
|
+
},
|
|
360
|
+
body: JSON.stringify({ query, variables }),
|
|
361
|
+
});
|
|
362
|
+
const saveResponse = yield saveRequest.json();
|
|
363
|
+
if ((_b = saveResponse === null || saveResponse === void 0 ? void 0 : saveResponse.data) === null || _b === void 0 ? void 0 : _b.SaveMediaListEntry) {
|
|
364
|
+
const saved = saveResponse.data.SaveMediaListEntry;
|
|
365
|
+
console.log(`\nEntry ${saved.id}. Saved as ${saved.status}.`);
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
console.error(`Failed to save the manga. ${((_d = (_c = saveResponse === null || saveResponse === void 0 ? void 0 : saveResponse.errors) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.message) || "Unknown error"}`);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
console.error(`Please log in first to use this feature.`);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
console.log("No manga entries found in the selected list.");
|
|
377
|
+
}
|
|
176
378
|
}
|
|
177
379
|
else {
|
|
178
|
-
console.log("
|
|
380
|
+
console.log("\nYou don't seem to have any manga in your lists.");
|
|
179
381
|
}
|
|
180
382
|
}
|
|
181
383
|
else {
|
|
182
|
-
console.
|
|
384
|
+
console.error(`Failed to fetch manga lists. ${((_f = (_e = response === null || response === void 0 ? void 0 : response.errors) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.message) || "Unknown error"}`);
|
|
183
385
|
}
|
|
184
386
|
}
|
|
185
387
|
else {
|
|
186
|
-
console.
|
|
388
|
+
console.error(`Failed to get the current user ID.`);
|
|
187
389
|
}
|
|
188
390
|
}
|
|
189
391
|
else {
|
|
190
|
-
console.
|
|
392
|
+
console.error("Please log in first.");
|
|
191
393
|
}
|
|
192
394
|
}
|
|
193
395
|
catch (error) {
|
|
194
|
-
console.
|
|
396
|
+
console.error(`Something went wrong. ${error.message}`);
|
|
195
397
|
}
|
|
196
398
|
});
|
|
197
399
|
}
|
|
@@ -216,30 +418,36 @@ function deleteAnimeCollection() {
|
|
|
216
418
|
const response = yield request.json();
|
|
217
419
|
if (request.status === 200) {
|
|
218
420
|
const lists = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection) === null || _b === void 0 ? void 0 : _b.lists;
|
|
219
|
-
|
|
220
|
-
{
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
421
|
+
if (lists.length > 0) {
|
|
422
|
+
const { selectedList } = yield inquirer.prompt([
|
|
423
|
+
{
|
|
424
|
+
type: "list",
|
|
425
|
+
name: "selectedList",
|
|
426
|
+
message: "Select an anime list:",
|
|
427
|
+
choices: lists.map((list) => list.name),
|
|
428
|
+
pageSize: 10,
|
|
429
|
+
},
|
|
430
|
+
]);
|
|
431
|
+
const selectedEntries = lists.find((list) => list.name === selectedList);
|
|
432
|
+
if (selectedEntries) {
|
|
433
|
+
console.log(`\nDeleting entries of '${selectedEntries.name}':`);
|
|
434
|
+
for (const [idx, entry] of selectedEntries.entries.entries()) {
|
|
435
|
+
if (entry === null || entry === void 0 ? void 0 : entry.id) {
|
|
436
|
+
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
|
+
yield new Promise((resolve) => setTimeout(resolve, 2000));
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
console.log(`No id in entry.`);
|
|
441
|
+
console.log(entry);
|
|
442
|
+
}
|
|
238
443
|
}
|
|
239
444
|
}
|
|
445
|
+
else {
|
|
446
|
+
console.log("No entries found.");
|
|
447
|
+
}
|
|
240
448
|
}
|
|
241
449
|
else {
|
|
242
|
-
console.log(
|
|
450
|
+
console.log(`\nNo anime(s) found in any list.`);
|
|
243
451
|
}
|
|
244
452
|
}
|
|
245
453
|
else {
|
|
@@ -306,30 +514,36 @@ function deleteMangaCollection() {
|
|
|
306
514
|
const response = yield request.json();
|
|
307
515
|
if (request.status === 200) {
|
|
308
516
|
const lists = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection) === null || _b === void 0 ? void 0 : _b.lists;
|
|
309
|
-
|
|
310
|
-
{
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
517
|
+
if (lists.length > 0) {
|
|
518
|
+
const { selectedList } = yield inquirer.prompt([
|
|
519
|
+
{
|
|
520
|
+
type: "list",
|
|
521
|
+
name: "selectedList",
|
|
522
|
+
message: "Select a manga list:",
|
|
523
|
+
choices: lists.map((list) => list.name),
|
|
524
|
+
pageSize: 10,
|
|
525
|
+
},
|
|
526
|
+
]);
|
|
527
|
+
const selectedEntries = lists.find((list) => list.name === selectedList);
|
|
528
|
+
if (selectedEntries) {
|
|
529
|
+
console.log(`\nDeleting entries of '${selectedEntries.name}':`);
|
|
530
|
+
for (const [idx, entry] of selectedEntries.entries.entries()) {
|
|
531
|
+
if (entry === null || entry === void 0 ? void 0 : entry.id) {
|
|
532
|
+
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
|
+
yield new Promise((resolve) => setTimeout(resolve, 2000));
|
|
534
|
+
}
|
|
535
|
+
else {
|
|
536
|
+
console.log(`No id in entry.`);
|
|
537
|
+
console.log(entry);
|
|
538
|
+
}
|
|
328
539
|
}
|
|
329
540
|
}
|
|
541
|
+
else {
|
|
542
|
+
console.log("No entries found.");
|
|
543
|
+
}
|
|
330
544
|
}
|
|
331
545
|
else {
|
|
332
|
-
console.log(
|
|
546
|
+
console.log(`\nNo manga(s) found in any list.`);
|
|
333
547
|
}
|
|
334
548
|
}
|
|
335
549
|
else {
|
|
@@ -377,7 +591,7 @@ function deleteMangaByMangaId(id, title) {
|
|
|
377
591
|
}
|
|
378
592
|
function getUpcomingAnimes(count) {
|
|
379
593
|
return __awaiter(this, void 0, void 0, function* () {
|
|
380
|
-
var _a, _b, _c, _d;
|
|
594
|
+
var _a, _b, _c, _d, _e;
|
|
381
595
|
try {
|
|
382
596
|
const { nextSeason, nextYear } = getNextSeasonAndYear();
|
|
383
597
|
const loggedIn = yield isLoggedIn();
|
|
@@ -398,15 +612,50 @@ function getUpcomingAnimes(count) {
|
|
|
398
612
|
const response = yield request.json();
|
|
399
613
|
if (request.status === 200) {
|
|
400
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 : [];
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
615
|
+
const { selectedAnime } = yield inquirer.prompt([
|
|
616
|
+
{
|
|
617
|
+
type: "list",
|
|
618
|
+
name: "selectedAnime",
|
|
619
|
+
message: "Select anime to add to the list:",
|
|
620
|
+
choices: upcoming.map((upx, idx) => ({
|
|
621
|
+
name: `[${idx + 1}] ${getTitle(upx === null || upx === void 0 ? void 0 : upx.title)}`,
|
|
622
|
+
value: upx === null || upx === void 0 ? void 0 : upx.id,
|
|
623
|
+
})),
|
|
624
|
+
pageSize: 10,
|
|
625
|
+
},
|
|
626
|
+
]);
|
|
627
|
+
// Where to save
|
|
628
|
+
const { selectedListType } = yield inquirer.prompt([
|
|
629
|
+
{
|
|
630
|
+
type: "list",
|
|
631
|
+
name: "selectedListType",
|
|
632
|
+
message: "Select the list where you want to save this anime:",
|
|
633
|
+
choices: [
|
|
634
|
+
{ name: "Planning", value: "PLANNING" },
|
|
635
|
+
{ name: "Watching", value: "CURRENT" },
|
|
636
|
+
{ name: "Completed", value: "COMPLETED" },
|
|
637
|
+
{ name: "Paused", value: "PAUSED" },
|
|
638
|
+
{ name: "Dropped", value: "DROPPED" },
|
|
639
|
+
],
|
|
640
|
+
},
|
|
641
|
+
]);
|
|
642
|
+
// Lets save to the list now
|
|
643
|
+
const ISLOGGEDIN = yield isLoggedIn();
|
|
644
|
+
if (ISLOGGEDIN) {
|
|
645
|
+
const query = addAnimeToListMutation;
|
|
646
|
+
const variables = { mediaId: selectedAnime, status: selectedListType };
|
|
647
|
+
const response = yield fetcher(query, variables);
|
|
648
|
+
if (response) {
|
|
649
|
+
const saved = (_d = response === null || response === void 0 ? void 0 : response.data) === null || _d === void 0 ? void 0 : _d.SaveMediaListEntry;
|
|
650
|
+
console.log(`\nEntry ${saved === null || saved === void 0 ? void 0 : saved.id}. Saved as ${saved === null || saved === void 0 ? void 0 : saved.status}.`);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
else {
|
|
654
|
+
console.error(`Please log in first to use this feature.`);
|
|
655
|
+
}
|
|
407
656
|
}
|
|
408
657
|
else {
|
|
409
|
-
console.error(`Something went wrong. ${(
|
|
658
|
+
console.error(`Something went wrong. ${(_e = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _e === void 0 ? void 0 : _e.message}`);
|
|
410
659
|
}
|
|
411
660
|
}
|
|
412
661
|
catch (error) {
|
package/bin/helpers/more.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
declare function getUserInfoByUsername(username: string): Promise<void>;
|
|
2
2
|
declare function getAnimeDetailsByID(anilistID: number): Promise<void>;
|
|
3
|
-
|
|
3
|
+
declare function getAnimeSearchResults(search: string, count: number): Promise<void>;
|
|
4
|
+
declare function getMangaSearchResults(search: string, count: number): Promise<void>;
|
|
5
|
+
declare function deleteUserActivities(): Promise<void>;
|
|
6
|
+
export { getUserInfoByUsername, getAnimeDetailsByID, getAnimeSearchResults, getMangaSearchResults, deleteUserActivities, };
|