magnum357i / myanimelist-api
MyAnimeList 的 API。它包含:动画、漫画、角色和人。
v1.0.0.6
2020-09-24 10:46 UTC
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^6
README
这是一个为了从 MyAnimeList 获取信息而开发的 API。它通过扫描请求页面的 HTML 代码来工作,因此当它发生变化时,这个库会崩溃。
所需
- CURL
- PHP 7
支持的页面
如何安装?
通过 composer
$ composer require magnum357i/myanimelist-api
通过 git
$ git clone --depth=50 --branch=master https://github.com/magnum357i/myanimelist-api.git magnum357i/myanimelist-api
如何使用?
动画页面
示例
// Create object $mal = new \MyAnimeList\Page\Anime( 20 ); // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->titleOriginal; echo $mal->titleEnglish; echo $mal->titleJapanese; echo $mal->titleOthers; echo $mal->poster; echo $mal->description; echo $mal->category; echo $mal->status; echo $mal->broadcast; echo $mal->statisticRank; echo $mal->statisticMember; echo $mal->statisticMemberraw; echo $mal->statisticPopularity; echo $mal->statisticFavorite; echo $mal->statisticFavoriteraw; echo $mal->rating; echo $mal->scoreVote; echo $mal->scoreVoteraw; echo $mal->scorePoint; echo $mal->genres; echo $mal->source; echo $mal->airedFirst; echo $mal->airedLast; echo $mal->episode; echo $mal->studios; echo $mal->duration; echo $mal->producers; echo $mal->licensors; echo $mal->premiered; echo $mal->year; echo $mal->voice; echo $mal->staff; echo $mal->songOpening; echo $mal->songEnding; echo $mal->relatedAdaptation; echo $mal->relatedPrequel; echo $mal->relatedSequel; echo $mal->relatedParentstory; echo $mal->relatedSidestory; echo $mal->relatedSpinoff; echo $mal->relatedAlternativeversion; echo $mal->relatedOther; echo $mal->relatedSummary; echo $mal->relatedAlternativesetting; echo $mal->trailer; echo $mal->tabBase; echo $mal->tabItems; echo $mal->link(); } else { echo 'No data.'; }
漫画页面
示例
// Create object $mal = new \MyAnimeList\Page\Manga( 2 ); // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->titleOriginal; echo $mal->titleEnglish; echo $mal->titleJapanese; echo $mal->titleOthers; echo $mal->poster; echo $mal->description; echo $mal->type; echo $mal->scoreVote; echo $mal->scoreVoteraw; echo $mal->scorePoint; echo $mal->genres; echo $mal->statisticRank; echo $mal->statisticPopularity; echo $mal->statisticMember; echo $mal->statisticMemberraw; echo $mal->statisticFavorite; echo $mal->statisticFavoriteraw; echo $mal->status; echo $mal->publishedFirst; echo $mal->publishedLast; echo $mal->authors; echo $mal->volume; echo $mal->chapter; echo $mal->serialization; echo $mal->year; echo $mal->characters; echo $mal->relatedAdaptation; echo $mal->relatedSequel; echo $mal->relatedPrequel; echo $mal->relatedParentstory; echo $mal->relatedSidestory; echo $mal->relatedOther; echo $mal->relatedSpinoff; echo $mal->relatedAlternativeversion; echo $mal->relatedSummary; echo $mal->relatedAlternativesetting; echo $mal->tabBase; echo $mal->tabItems; echo $mal->link(); } else { echo 'No data.'; }
角色页面
示例
// Create object $mal = new \MyAnimeList\Page\Character( 40 ); // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->titleSelf; echo $mal->titleNickname; echo $mal->poster; echo $mal->description; echo $mal->statisticFavorite; echo $mal->statisticFavoriteraw; echo $mal->recentAnime; echo $mal->recentManga; echo $mal->voiceactors; echo $mal->age; echo $mal->height; echo $mal->weight; echo $mal->tabBase; echo $mal->tabItems; echo $mal->link(); } else { echo 'No data.'; }
人物页面
示例
// Create object $mal = new \MyAnimeList\Page\People( 80 ); // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->name; echo $mal->poster; echo $mal->description; echo $mal->statisticFavorite; echo $mal->statisticFavoriteraw; echo $mal->recentVoice; echo $mal->recentWork; echo $mal->birth; echo $mal->death; echo $mal->height; echo $mal->weight; echo $mal->age; echo $mal->socialFacebook; echo $mal->socialTwitter; echo $mal->socialWebsite; echo $mal->tabBase; echo $mal->tabItems; echo $mal->link(); } else { echo 'No data.'; }
动画搜索
示例
// Create object $mal = new \MyAnimeList\Search\Anime( 'bleach' ); // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->results; echo $mal->link(); } else { echo 'No data.'; }
漫画搜索
示例
// Create object $mal = new \MyAnimeList\Search\Manga( 'baka to test to shoukanjuu' ); // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->results; echo $mal->link(); } else { echo 'No data.'; }
角色搜索
示例
// Create object $mal = new \MyAnimeList\Search\Character( 'yugi' ); // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->results; echo $mal->link(); } else { echo 'No data.'; }
人物搜索
示例
// Create object $mal = new \MyAnimeList\Search\People( 'yui' ); // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->results; echo $mal->link(); } else { echo 'No data.'; }
新动画小部件
示例
// Create object $mal = new \MyAnimeList\Widget\NewAnime; // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->tvnew; echo $mal->tvcontinuing; echo $mal->ona; echo $mal->ova; echo $mal->movie; echo $mal->special; echo $mal->link(); } else { echo 'No data.'; }
即将上映动画小部件
示例
// Create object $mal = new \MyAnimeList\Widget\UpcomingAnime; // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->tv; echo $mal->ona; echo $mal->ova; echo $mal->movie; echo $mal->special; echo $mal->unknown; echo $mal->link(); } else { echo 'No data.'; }
动画日历小部件
示例
// Create object $mal = new \MyAnimeList\Widget\AnimeCalendar; // Send request $mal->sendRequestOrGetData(); // Is not 404 page or (cache enabled) cache file exists if ( $mal->isSuccess() ) { echo $mal->monday; echo $mal->tuesday; echo $mal->wednesday; echo $mal->thursday; echo $mal->friday; echo $mal->saturday; echo $mal->sunday; echo $mal->link(); } else { echo 'No data.'; }
配置
覆盖默认缓存类
如果需要,您可以使用自己的缓存类。将缓存对象类型传递到具有 Cache 接口(MyAnimeList/Cache/CacheInterface)的缓存类构造函数中。
// Page $folders = \MyAnimeList\Builder\AbstractPage::$folders $type = 'anime' $mal = new \MyAnimeList\Page\Anime( 20, new \MyCustomCache( $type, $folders ) ); // Search $folders = \MyAnimeList\Builder\AbstractSearch::$folders $type = 'anime' $mal = new \MyAnimeList\Search\Anime( 'naruto', new \MyCustomCache( $type, $folders ) ); // Widget $folders = \MyAnimeList\Builder\AbstractWidget::$folders $type = 'animecalendar' $mal = new \MyAnimeList\Widget\AnimeCalendar( new \MyCustomCache( $type, $folders ) );
反向名称
// Create object $mal = new \MyAnimeList\Page\Manga( 1 ); // Reverse $mal->config()->reversename = TRUE; // Send request $mal->sendRequestOrGetData(); // Test echo $mal->authors; // Output // reverse name option is true: Naoki Urasawa // reverse name option is false: Urasawa, Naoki
大图片
// Create object $mal = new \MyAnimeList\Page\Manga( 1 ); // Use bigger images $mal->config()->bigimages = TRUE; // Send request $mal->sendRequestOrGetData(); // Test var_dump( $mal->staff );
启用缓存
// Create object $mal = new \MyAnimeList\Page\Anime( 1 ); // Enable cache $mal->config()->enablecache = TRUE; $mal->config()->expiredbyday = 5; $mal->cache()->setPath( ROOT_PATH . '/upload' ); // Send request $mal->sendRequestOrGetData(); // Test echo $mal->titleEnglish; echo $mal->poster; // Note // Backs up the values you use. // So, based on the above values, this will be create a file named 1.json // and inside of the file writes the english title of the anime. // Also a poster named 1.jpg is saved. // After all, it will return false even if you call another value until the cache expires. // Please don't forget this.
一次性捕获所有数据
// Create object $mal = new \MyAnimeList\Page\Manga( 20 ); // Send request $mal->sendRequestOrGetData(); // Get all data $mal->scanAvailableValues(); // Print data var_dump( $mal->output() );
cURL 设置
// Create object $mal = new \MyAnimeList\Page\People( 1 ); // A sample setting $mal->config()->setCurlOption( 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0', 'USERAGENT' ); // Send request $mal->sendRequestOrGetData();
限制
// Create object $mal = new \MyAnimeList\Page\Anime( 285 ); // Send request $mal->sendRequestOrGetData(); $mal->setLimit( 3 ); // works for all indexed arrays var_dump( $mal->voice );
广播时区
// Create object $mal = new \MyAnimeList\Page\Anime( 34134 ); // Send request $mal->sendRequestOrGetData(); // Print untoched broadcast var_dump( $mal->broadcast ); // [ "timezone" => "Asia/Tokyo", "dayIndex" => "3", "dayTitle" => "Wednesdays", "hour" => "01", "minute" => "35" // Print broadcast with default timezone // my default timezone: 'Europe/Berlin' $mal->timezone(); var_dump( $mal->broadcast ); // [ "timezone" => "Europe/Berlin", "dayIndex" => "2", "dayTitle" => "Tuesdays", "hour" => "18", "minute" => "35" // Print broadcast with custom timezone $mal->timezone( 'America/Los_Angeles' ); var_dump( $mal->broadcast ); // [ "timezone" => "America/Los_Angeles", "dayIndex" => "2", "dayTitle" => "Tuesdays", "hour" => "09", "minute" => "35"