Added animefreak.tv (#228)
* Added animefreak * Add useful comment for animefreak * Added animefreak to README.md * Use json method in helpers.getmaster
parent
396bce25d3
commit
a3414a1bec
|
@ -55,6 +55,7 @@ Yeah. Me too! That's why this tool exists.
|
||||||
- Anistream
|
- Anistream
|
||||||
- Animeflv (Latin)
|
- Animeflv (Latin)
|
||||||
- itsaturday.com
|
- itsaturday.com
|
||||||
|
- Animefreak
|
||||||
- Masterani.me [cloudlfare] (site shut down**
|
- Masterani.me [cloudlfare] (site shut down**
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
from anime_downloader.sites.anime import Anime, AnimeEpisode, SearchResult
|
||||||
|
from anime_downloader.sites.exceptions import NotFoundError
|
||||||
|
from anime_downloader.sites import helpers
|
||||||
|
|
||||||
|
|
||||||
|
class AnimeFreak(Anime, sitename='animefreak'):
|
||||||
|
sitename = 'animefreak'
|
||||||
|
search_url = f'https://{sitename}.tv/search/topSearch'
|
||||||
|
anime_url = 'https://www.animefreak.tv/watch'
|
||||||
|
QUALITIES = ['360p', '480p', '720p', '1080p']
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def search(cls, query):
|
||||||
|
search_results = helpers.get(cls.search_url,
|
||||||
|
params={'q': query}).json()
|
||||||
|
search_results = [
|
||||||
|
SearchResult(
|
||||||
|
title=result['name'],
|
||||||
|
url=f'{cls.anime_url}/{result["seo_name"]}')
|
||||||
|
for result in search_results.get('data', [])
|
||||||
|
]
|
||||||
|
|
||||||
|
return search_results
|
||||||
|
|
||||||
|
def _scrape_episodes(self):
|
||||||
|
soup = helpers.soupify(helpers.get(self.url))
|
||||||
|
# Negative index for episode links in cases where full episode
|
||||||
|
# list is available or if not default to usual episode list
|
||||||
|
episode_links = soup.select('ul.check-list')[-1].select('li a')
|
||||||
|
return [a.get('href') for a in episode_links][::-1]
|
||||||
|
|
||||||
|
|
||||||
|
class AnimeFreakEpisode(AnimeEpisode, sitename='animefreak'):
|
||||||
|
def _get_sources(self):
|
||||||
|
page = helpers.get(self.url).text
|
||||||
|
source_re = re.compile(r'loadVideo.+file: "([^"]+)', re.DOTALL)
|
||||||
|
match = source_re.findall(page)
|
||||||
|
|
||||||
|
if not match:
|
||||||
|
raise NotFoundError(f'Failed to find video url for {self.url}')
|
||||||
|
return [('no_extractor', match[0],)]
|
|
@ -11,6 +11,7 @@ ALL_ANIME_SITES = [
|
||||||
('anistream', 'anistream', 'Anistream'),
|
('anistream', 'anistream', 'Anistream'),
|
||||||
('animeflv', 'animeflv', 'Animeflv'),
|
('animeflv', 'animeflv', 'Animeflv'),
|
||||||
('itsaturday', 'itsaturday', 'Itsaturday'),
|
('itsaturday', 'itsaturday', 'Itsaturday'),
|
||||||
|
('animefreak', 'animefreak', 'AnimeFreak'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue