Skip to content

Commit 598582e

Browse files
committed
chore: add GogoAnimeTv crawler
1 parent b52a9b6 commit 598582e

5 files changed

Lines changed: 68 additions & 2 deletions

File tree

src/app/crawlers/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export { DarkAnimeCrawler } from './vosten/darkanime.crawler';
1616
export { GogoAnimeCrawler } from './vosten/gogoanime.crawler';
1717
export { GogoPlayCrawler } from './vosten/gogoplay.crawler';
1818
export { YugenAnimeCrawler } from './vosten/yugenanime.crawler';
19+
export { GogoAnimeTvCrawler } from './vosten/gogoanimetv.crawler';
1920
// vostfr
2021
export { AnimeKoCrawler } from './vostfr/animeko.crawler';
2122
export { AnimeResistanceCrawler } from './vostfr/animeresistance.crawler';
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { LatestEpisodesCrawler } from '../abstract/latest-episodes.crawler';
2+
import { ScraperService } from '../../services/scraper.service';
3+
import { Episode } from '../../models/episode';
4+
import { today, yesterday, dateBefore } from '../../helpers/date.helper';
5+
import { Observable } from 'rxjs';
6+
import { toNumber } from 'src/app/helpers/number.helper';
7+
8+
export class GogoAnimeTvCrawler extends LatestEpisodesCrawler {
9+
constructor(private scraper: ScraperService) {
10+
super('GogoAnimeTv', 'https://gogoanimestv.org');
11+
this.filters = {
12+
...this.filters,
13+
title: (text: string) => {
14+
return text.replace(/<.*>.*?<\/.*>/gi, '').trim();
15+
},
16+
number: (text: string) => {
17+
const num = text.match(/EP (\d+)/i);
18+
return toNumber(num?.length ? num[1] : text);
19+
},
20+
subtitles: (text: string) => {
21+
return 'vosten';
22+
},
23+
date: (text: string) => {
24+
if (
25+
text.indexOf('mins ago') !== -1 ||
26+
text.indexOf('hours ago') !== -1
27+
) {
28+
return today();
29+
} else if (text.indexOf('1 day ago') !== -1) {
30+
return yesterday();
31+
} else {
32+
const matches = text.match(/(\d+) days ago/);
33+
if (matches?.length) {
34+
return dateBefore(+matches[1]);
35+
}
36+
return new Date(text)?.getTime();
37+
}
38+
},
39+
};
40+
}
41+
42+
_getLatestEpisodes(): Observable<Episode[]> {
43+
return this.scraper.scrape(
44+
`${this.baseUrl}`,
45+
'.postbody .listupd > div > article',
46+
{
47+
anime: {
48+
title: 'a .tt | title',
49+
cover: 'a img.ts-post-image@src',
50+
},
51+
number: 'a .bt .epx | number',
52+
streamLinks: [
53+
{
54+
url: 'a@href',
55+
lang: '| subtitles',
56+
},
57+
],
58+
releaseDate: 'a .timeago | date',
59+
},
60+
this.filters
61+
);
62+
}
63+
}

src/app/crawlers/vosten/gogoplay.crawler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { toNumber } from 'src/app/helpers/number.helper';
77

88
export class GogoPlayCrawler extends LatestEpisodesCrawler {
99
constructor(private scraper: ScraperService) {
10-
super('GogoPlay', 'https://gogoplay1.com/');
10+
super('GogoPlay', 'https://gogoplay1.com');
1111
this.filters = {
1212
...this.filters,
1313
title: (text: string) => {

src/app/crawlers/vostfr/11anim.crawler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Observable } from 'rxjs';
66

77
export class ElevenAnimCrawler extends LatestEpisodesCrawler {
88
constructor(private scraper: ScraperService) {
9-
super('11Anim', 'https://11anim.net/');
9+
super('11Anim', 'https://11anim.net');
1010
this.filters = {
1111
...this.filters,
1212
title: (text: string) => {

src/app/services/crawlers.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
WacVostfrCrawler,
2626
GogoPlayCrawler,
2727
ElevenAnimCrawler,
28+
GogoAnimeTvCrawler,
2829
} from '../crawlers';
2930

3031
@Injectable({
@@ -55,6 +56,7 @@ export class CrawlersService {
5556
this.add(new AnimeKisaCrawler(this.scraper));
5657
this.add(new YugenAnimeCrawler(this.scraper));
5758
this.add(new AnimixPlayCrawler(this.scraper));
59+
this.add(new GogoAnimeTvCrawler(this.scraper));
5860
this.add(new GogoAnimeCrawler(this.scraper));
5961
// Vostar crawlers
6062
this.add(new WitAnimeCrawler(this.scraper));

0 commit comments

Comments
 (0)