File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ import { GogoPlayCrawler } from './vosten/gogoplay.crawler';
1818import { YugenAnimeCrawler } from './vosten/yugenanime.crawler' ;
1919import { GogoAnimeTvCrawler } from './vosten/gogoanimetv.crawler' ;
2020import { AnimensionCrawler } from './vosten/animension.crawler' ;
21+ import { NineAnimeCrawler } from './vosten/9anime.crawler' ;
2122// vostfr
2223import { AnimeKoCrawler } from './vostfr/animeko.crawler' ;
2324import { AnimeResistanceCrawler } from './vostfr/animeresistance.crawler' ;
@@ -65,6 +66,7 @@ const crawlersList = {
6566 YugenAnimeCrawler ,
6667 AnimixPlayCrawler ,
6768 GogoAnimeCrawler ,
69+ NineAnimeCrawler ,
6870 ] ,
6971 vostar : [
7072 WitAnimeCrawler ,
Original file line number Diff line number Diff line change 1+ import { LatestEpisodesCrawler } from '../abstract/latest-episodes.crawler' ;
2+ import { ScraperService } from '../../services/scraper.service' ;
3+ import { Episode } from '../../models/episode' ;
4+ import { Observable } from 'rxjs' ;
5+ import { toNumber } from 'src/app/helpers/number.helper' ;
6+
7+ export class NineAnimeCrawler extends LatestEpisodesCrawler {
8+ constructor ( private scraper : ScraperService ) {
9+ super ( '9Anime' , 'https://9anime.id' ) ;
10+ this . filters = {
11+ ...this . filters ,
12+ number : ( text : string ) => {
13+ const num = text . match ( / E p ( \d + ) / i) ;
14+ return toNumber ( num ?. length ? num [ 1 ] : text ) ;
15+ } ,
16+ url : ( text : string , element : any ) => {
17+ const number = this . scraper . htmlParser . find (
18+ element ,
19+ 'div.tag.ep | number' ,
20+ this . filters
21+ ) ;
22+ return `${ this . filters . concatUrl ( text ) } /ep-${ number } ` ;
23+ } ,
24+ subtitles : ( text : string ) => {
25+ return 'vosten' ;
26+ } ,
27+ } ;
28+ }
29+
30+ _getLatestEpisodes ( ) : Observable < Episode [ ] > {
31+ return this . scraper . scrape (
32+ encodeURI (
33+ `${ this . baseUrl } /filter?status[]=airing&language[]=subbed&sort=release_date:desc`
34+ ) ,
35+ 'ul.anime-list > li' ,
36+ {
37+ anime : {
38+ title : 'a.name' ,
39+ cover : 'a.poster img@src' ,
40+ } ,
41+ number : 'div.tag.ep | number' ,
42+ streamLinks : [
43+ {
44+ url : 'a.name@href | url' ,
45+ lang : '| subtitles' ,
46+ } ,
47+ ] ,
48+ } ,
49+ this . filters
50+ ) ;
51+ }
52+ }
You can’t perform that action at this time.
0 commit comments