**Animik mal-crawler ** β ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ Laravel, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π΄Π°Π½Π½ΡΡ ΠΎ Π°Π½ΠΈΠΌΠ΅ Π΄Π»Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ Animik.
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Composer:
composer require animik/mal-crawler
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ:
php artisan vendor:publish --provider="Vahe\MalCrawler\MalCrawlerServiceProvider" --tag=config
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
./vendor/bin/phpunit tests
- crawlGenres()
- crawlExplicitGenres()
- crawlThemes()
- crawlDemographics()
- crawlGenreDescription(int $malId)
- crawlStudios()
- crawlStudioInformation(int $malId)
- crawlRankings()
- crawlSeasons()
- crawlAnimeRange()
- crawlTypes()
- crawlStatus()
- crawlRated()
- crawlColumns()
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΠΆΠ°Π½ΡΡ Π°Π½ΠΈΠΌΠ΅. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ Π²ΡΠ΅ ΠΆΠ°Π½ΡΡ Π°Π½ΠΈΠΌΠ΅ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΡΠ²Π½ΡΠ΅ ΠΆΠ°Π½ΡΡ Π°Π½ΠΈΠΌΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π΄Π»Ρ Π²Π·ΡΠΎΡΠ»ΡΡ
). ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΊΡΠ°ΡΠ»ΠΈΠ½Π³Π° ΠΆΠ°Π½ΡΠΎΠ² ΠΈ
ΡΠΈΠ»ΡΡΡΡΠ΅Ρ ΡΠ²Π½ΡΠ΅ ΠΆΠ°Π½ΡΡ.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΡΠ΅ΠΌΡ Π°Π½ΠΈΠΌΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠΌΠ°Π½ΡΠΈΠΊΠ°, ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΈΡ). ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΊΡΠ°ΡΠ»ΠΈΠ½Π³Π° ΠΆΠ°Π½ΡΠΎΠ² ΠΈ ΡΠΈΠ»ΡΡΡΡΠ΅Ρ ΠΏΠΎ
ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅ΠΌΠ°ΠΌ.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ Π΄Π΅ΠΌΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π³ΡΡΠΏΠΏΡ Π°Π½ΠΈΠΌΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ½Π΅Π½, ΡΡΠ½Π΅Π½, ΡΡΠΉΠ½Π΅Π½ ΠΈ Ρ.Π΄.). ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΊΡΠ°ΡΠ»ΠΈΠ½Π³Π°
ΠΆΠ°Π½ΡΠΎΠ² ΠΈ ΡΠΈΠ»ΡΡΡΡΠ΅Ρ ΠΏΠΎ Π΄Π΅ΠΌΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π³ΡΡΠΏΠΏΠ°ΠΌ.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΆΠ°Π½ΡΠ° ΠΏΠΎ Π΅Π³ΠΎ malId
. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΆΠ°Π½ΡΠ°, ΡΠ²Π½ΠΎΠ³ΠΎ ΠΆΠ°Π½ΡΠ° ΠΈΠ»ΠΈ ΡΠ΅ΠΌΡ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
int $malId
:malId
ΠΆΠ°Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΡΡΡΠ΄ΠΈΠΈ Π°Π½ΠΈΠΌΠ΅. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠ΄ΠΈΠΈ Π°Π½ΠΈΠΌΠ΅ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΡΠ΄ΠΈΠΈ ΠΏΠΎ Π΅Ρ malId
. ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΡΠ΄ΠΈΠΈ ΠΏΠΎ Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
int $malId
:malId
ΡΡΡΠ΄ΠΈΠΈ, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΡΠ΅ΠΉΡΠΈΠ½Π³ΠΈ Π°Π½ΠΈΠΌΠ΅. ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΡΠ΅ΠΉΡΠΈΠ½Π³ΠΈ Π°Π½ΠΈΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π°Π½ΠΈΠΌΠ΅-ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΈΠ»ΠΈ ΡΠΈΠ»ΡΠΌΠΎΠ².
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΡΠ΅Π·ΠΎΠ½Ρ Π°Π½ΠΈΠΌΠ΅. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ΅Π·ΠΎΠ½Ρ Π°Π½ΠΈΠΌΠ΅ ΠΈ ΠΈΡ
Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π³ΠΎΠ΄Ρ Π²ΡΠΏΡΡΠΊΠ° ΠΈ
ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ID Π°Π½ΠΈΠΌΠ΅. ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ID Π°Π½ΠΈΠΌΠ΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
, ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ
Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΎΠ²ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΡΠΈΠΏΡ Π°Π½ΠΈΠΌΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΠ°Π», ΡΠΈΠ»ΡΠΌ, OVA, ONA ΠΈ Ρ.Π΄. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΏΠΎ ΡΠΈΠΏΡ Π°Π½ΠΈΠΌΠ΅.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΡΡΠ°ΡΡΡΡ Π°Π½ΠΈΠΌΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π·Π°Π²Π΅ΡΡΡΠ½Π½ΠΎΠ΅, Π²ΡΡ
ΠΎΠ΄ΡΡΠ΅Π΅ ΠΈ Ρ.Π΄. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ Π°Π½ΠΈΠΌΠ΅ ΠΏΠΎ ΡΡΠ°ΡΡΡΡ Π²ΡΠΏΡΡΠΊΠ°.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ Π²ΠΎΠ·ΡΠ°ΡΡΠ½ΡΠ΅ ΡΠ΅ΠΉΡΠΈΠ½Π³ΠΈ Π°Π½ΠΈΠΌΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ G, PG, PG-13, R ΠΈ Ρ.Π΄. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ»ΡΡΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ½ΡΠΌ ΡΠ΅ΠΉΡΠΈΠ½Π³Π°ΠΌ
Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π°Π½ΠΈΠΌΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΠΎΠ·ΡΠ°ΡΡΠ° Π·ΡΠΈΡΠ΅Π»Ρ.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ°ΡΠ»ΠΈΡ ΡΡΠΎΠ»Π±ΡΡ Π°Π½ΠΈΠΌΠ΅, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ
ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ
. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠ°ΠΊΡΡ ΠΊΠ°ΠΊ
Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΡΠ΅ΠΉΡΠΈΠ½Π³, ΡΡΡΠ΄ΠΈΡ, Π³ΠΎΠ΄ Π²ΡΠΏΡΡΠΊΠ° ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Π’ΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: JsonResponse