Passed
Push — master ( 61f61d...b3341e )
by axel
01:30
created

index.php (1 issue)

1
<?php
2
3
// Return json file
4
header('Content-type:application/json;charset=utf-8');
5
6
ini_set('max_execution_time', 0);
7
8
// Use the Mal-Scraper library
9
require 'vendor/autoload.php';
10
use MalScraper\MalScraper;
11
12
$myMalScraper = new MalScraper([
13
    'enable_cache' => true,
14
    'cache_time'   => 3600,
15
    'to_api'       => true,
16
]);
17
18
// Get the parameter
19
$method = isset($_GET['m']) ? $_GET['m'] : '';
20
21
$type = isset($_GET['t']) ? $_GET['t'] : '';
22
$id = isset($_GET['id']) ? $_GET['id'] : '';
23
24
$page = isset($_GET['p']) ? $_GET['p'] : 1;
25
26
$query = isset($_GET['q']) ? $_GET['q'] : '';
27
28
$year = isset($_GET['y']) ? $_GET['y'] : date('Y');
29
$season = isset($_GET['s']) ? $_GET['s'] : getCurrentSeason();
30
31
$user = isset($_GET['u']) ? $_GET['u'] : '';
32
$status = isset($_GET['st']) ? $_GET['st'] : 7;
33
34
// Call the requested method
35
switch ($method) {
36
37
// General Method ----------
38
    case 'info':
39
        if ($type && $id) {
40
            $result = $myMalScraper->getInfo($type, $id);
41
            print_r($result);
42
        } else {
43
            print_r(paramError());
44
        }
45
        break;
46
    case 'character':
47
        if ($id) {
48
            $result = $myMalScraper->getCharacter($id);
49
            print_r($result);
50
        } else {
51
            print_r(paramError());
52
        }
53
        break;
54
    case 'people':
55
        if ($id) {
56
            $result = $myMalScraper->getPeople($id);
57
            print_r($result);
58
        } else {
59
            print_r(paramError());
60
        }
61
        break;
62
    case 'studio-producer':
63
    case 'studioproducer':
64
        if ($id) {
65
            $result = $myMalScraper->getStudioProducer($id, $page);
66
            print_r($result);
67
        } else {
68
            print_r(paramError());
69
        }
70
        break;
71
    case 'magazine':
72
        if ($id) {
73
            $result = $myMalScraper->getMagazine($id, $page);
74
            print_r($result);
75
        } else {
76
            print_r(paramError());
77
        }
78
        break;
79
    case 'genre':
80
        if ($type && $id) {
81
            $result = $myMalScraper->getGenre($type, $id, $page);
82
            print_r($result);
83
        } else {
84
            print_r(paramError());
85
        }
86
        break;
87
88
// Additional Method ----------
89
    case 'character-staff':
90
    case 'characterstaff':
91
        if ($type && $id) {
92
            $result = $myMalScraper->getCharacterStaff($type, $id);
93
            print_r($result);
94
        } else {
95
            print_r(paramError());
96
        }
97
        break;
98
    case 'stat':
99
        if ($type && $id) {
100
            $result = $myMalScraper->getStat($type, $id);
101
            print_r($result);
102
        } else {
103
            print_r(paramError());
104
        }
105
        break;
106
    case 'picture':
107
        if ($type && $id) {
108
            $result = $myMalScraper->getPicture($type, $id);
109
            print_r($result);
110
        } else {
111
            print_r(paramError());
112
        }
113
        break;
114
    case 'character-picture':
115
    case 'characterpicture':
116
        if ($id) {
117
            $result = $myMalScraper->getCharacterPicture($id);
118
            print_r($result);
119
        } else {
120
            print_r(paramError());
121
        }
122
        break;
123
    case 'people-picture':
124
    case 'peoplepicture':
125
        if ($id) {
126
            $result = $myMalScraper->getPeoplePicture($id);
127
            print_r($result);
128
        } else {
129
            print_r(paramError());
130
        }
131
        break;
132
133
// List ----------
134
    case 'all-anime-genre':
135
    case 'allanimegenre':
136
        $result = $myMalScraper->getAllAnimeGenre();
137
        print_r($result);
138
        break;
139
    case 'all-manga-genre':
140
    case 'allmangagenre':
141
        $result = $myMalScraper->getAllMangaGenre();
142
        print_r($result);
143
        break;
144
    case 'all-studio-producer':
145
    case 'allstudioproducer':
146
        $result = $myMalScraper->getAllStudioProducer();
147
        print_r($result);
148
        break;
149
    case 'all-magazine':
150
    case 'allmagazine':
151
        $result = $myMalScraper->getAllMagazine();
152
        print_r($result);
153
        break;
154
155
// Search ----------
156
    case 'search-anime':
157
    case 'searchanime':
158
        if ($query) {
159
            $result = $myMalScraper->searchAnime($query, $page);
160
            print_r($result);
161
        } else {
162
            print_r(paramError());
163
        }
164
        break;
165
    case 'search-manga':
166
    case 'searchmanga':
167
        if ($query) {
168
            $result = $myMalScraper->searchManga($query, $page);
169
            print_r($result);
170
        } else {
171
            print_r(paramError());
172
        }
173
        break;
174
    case 'search-character':
175
    case 'searchcharacter':
176
        if ($query) {
177
            $result = $myMalScraper->searchCharacter($query, $page);
178
            print_r($result);
179
        } else {
180
            print_r(paramError());
181
        }
182
        break;
183
    case 'search-people':
184
    case 'searchpeople':
185
        if ($query) {
186
            $result = $myMalScraper->searchPeople($query, $page);
187
            print_r($result);
188
        } else {
189
            print_r(paramError());
190
        }
191
        break;
192
    case 'search-user':
193
    case 'searchuser':
194
        if ($query) {
195
            $result = $myMalScraper->searchUser($query, $page);
196
            print_r($result);
197
        } else {
198
            print_r(paramError());
199
        }
200
        break;
201
202
// Seasonal ----------
203
    case 'season':
204
        $result = $myMalScraper->getSeason($year, $season);
205
        print_r($result);
206
        break;
207
208
// Top List ----------
209
    case 'top-anime':
210
    case 'topanime':
211
        $type = $type ? $type : 0;
212
        $result = $myMalScraper->getTopAnime($type, $page);
213
        print_r($result);
214
        break;
215
    case 'top-manga':
216
    case 'topmanga':
217
        $type = $type ? $type : 0;
218
        $result = $myMalScraper->getTopManga($type, $page);
219
        print_r($result);
220
        break;
221
222
// User ----------
223
    case 'user':
224
        if ($user) {
225
            $result = $myMalScraper->getUser($user);
226
            print_r($result);
227
        } else {
228
            print_r(paramError());
229
        }
230
        break;
231
    case 'user-friend':
232
    case 'userfriend':
233
        if ($user) {
234
            $result = $myMalScraper->getUserFriend($user);
235
            print_r($result);
236
        } else {
237
            print_r(paramError());
238
        }
239
        break;
240
    case 'user-history':
241
    case 'userhistory':
242
        if ($user) {
243
            $result = $myMalScraper->getUserHistory($user, $type);
244
            print_r($result);
245
        } else {
246
            print_r(paramError());
247
        }
248
        break;
249
    case 'user-list':
250
    case 'userlist':
251
        if ($user) {
252
            $type = $type ? $type : 'anime';
253
            $result = $myMalScraper->getUserList($user, $type, $status);
254
            print_r($result);
255
        } else {
256
            print_r(paramError());
257
        }
258
        break;
259
    case 'user-cover':
260
    case 'usercover':
261
        if ($user) {
262
            header('Content-Type: text/css');
263
264
            $type = $type ? $type : 'anime';
265
            $query = $query ? $query : false;
266
267
            $result = $myMalScraper->getUserCover($user, $type, $query);
268
            $result = json_decode($result, true);
269
            $result = $result['data'];
270
271
            print_r($result);
272
        } else {
273
            print_r(paramError());
274
        }
275
        break;
276
277
// Secret ----------
278
    case 'auto-cover':
279
        header('Content-Type: text/css');
280
281
        $user_url = $_SERVER['HTTP_REFERER'];
282
        $user_url = str_replace('https://myanimelist.net', '', $user_url);
283
284
        preg_match("/\/.+(list)\//", $user_url, $user_type);
285
        $type = str_replace(['/', 'list'], '', $user_type[0]);
286
287
        $user_url = str_replace(['/animelist/', '/mangalist/'], '', $user_url);
288
        $user_url = preg_replace('/\?+.+/', '', $user_url);
289
290
        $user = $user_url;
291
        $type = $type ? $type : 'anime';
292
        $query = $query ? $query : false;
293
294
        $result = $myMalScraper->getUserCover($user, $type, $query);
295
        $result = json_decode($result, true);
296
        $result = $result['data'];
297
298
        print_r($result);
299
        break;
300
    default:
301
        print_r(paramError(true));
302
        break;
303
}
304
305
// Return error parameter
306
function paramError($a = false)
307
{
308
    if ($a) {
309
        header('HTTP/1.1 404');
310
        $result['status'] = 404;
0 ignored issues
show
Comprehensibility Best Practice introduced by
$result was never initialized. Although not strictly required by PHP, it is generally a good practice to add $result = array(); before regardless.
Loading history...
311
        $result['status_message'] = 'Method not found';
312
        $result['data'] = [];
313
    } else {
314
        header('HTTP/1.1 400');
315
        $result['status'] = 400;
316
        $result['status_message'] = 'Bad Request';
317
        $result['data'] = [];
318
    }
319
320
    return json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
321
}
322
323
// Get current season (spring,summer,fall,winter)
324
function getCurrentSeason()
325
{
326
    $day = new DateTime();
327
328
    //  Days of spring
329
    $spring_starts = new DateTime('April 1');
330
    $spring_ends = new DateTime('June 30');
331
332
    //  Days of summer
333
    $summer_starts = new DateTime('July 1');
334
    $summer_ends = new DateTime('September 30');
335
336
    //  Days of autumn
337
    $autumn_starts = new DateTime('October 1');
338
    $autumn_ends = new DateTime('December 31');
339
340
    //  If $day is between the days of spring, summer, autumn, and winter
341
    if ($day >= $spring_starts && $day <= $spring_ends) :
342
        $season = 'spring'; elseif ($day >= $summer_starts && $day <= $summer_ends) :
343
        $season = 'summer'; elseif ($day >= $autumn_starts && $day <= $autumn_ends) :
344
        $season = 'fall'; else :
345
        $season = 'winter';
346
    endif;
347
348
    return $season;
349
}
350