Basic draft for kissasian and masterani

master
Vishnunarayan K I 2018-06-02 23:03:47 +05:30
parent 5d2b9ce66a
commit 7ab97c5bf4
6 changed files with 66 additions and 10 deletions

View File

@ -12,7 +12,7 @@ matrix:
before_install:
- pip install pytest-cov
install:
- pip install -e ".[kissanime]"
- pip install -e ".[cloudflare]"
script:
- python -m pytest tests --cov=.
after_success:

View File

@ -39,7 +39,7 @@ $ pip install -U git+https://github.com/vn-ki/anime-downloader.git
KissAnime support is currently only available in master. Use the following command to install with KissAnime support.
```bash
pip install -U git+https://github.com/vn-ki/anime-downloader.git#egg=anime-downloader'[kissanime]'
pip install -U git+https://github.com/vn-ki/anime-downloader.git#egg=anime-downloader'[cloudflare]'
```
**IMP**: For KissAnime scraping [cfscrape](https://github.com/Anorov/cloudflare-scrape) is used. It depends on `node-js`. So if you want to use KissAnime, make sure you have node installed.

View File

@ -27,7 +27,7 @@ class KissanimeEpisode(BaseEpisode):
def getData(self):
url = self._base_url+self.episode_id
r = scraper.get(url + '/Mobile/', headers=mobile_headers)
r = scraper.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
if self.VERIFY_HUMAN:
@ -37,17 +37,22 @@ class KissanimeEpisode(BaseEpisode):
episode_url = self.episode_id
ret = scraper.get(self._base_url+episode_url)
rapid_re = re.compile(r'iframe.*src="https://(.*?)"')
rapid_url = rapid_re.findall(ret.text)[0]
data = util.get_stream_url_rapidvideo('https://'+rapid_url,
self.quality)
data = self._scrape_episode(ret)
self.stream_url = data['stream_url']
self.title = data['title']
self.image = data['image']
def _scrape_episode(self, response):
rapid_re = re.compile(r'iframe.*src="https://(.*?)"')
rapid_url = rapid_re.findall(response.text)[0]
data = util.get_stream_url_rapidvideo('https://'+rapid_url,
self.quality)
return data
class Kissanime(BaseAnimeCF):
sitename = 'kissanime'

View File

@ -0,0 +1,32 @@
from anime_downloader.sites.kissanime import Kissanime, KissanimeEpisode
from bs4 import BeautifulSoup
from anime_downloader.sites.exceptions import NotFoundError
class KissasianEpisode(KissanimeEpisode):
_base_url = ''
VERIFY_HUMAN = False
# def _scrape_episode(self, reponse):
# soup = BeautifulSoup(reponse.text, 'html.parser')
# data = dict()
# data['stream_url'] = soup.find_all('iframe')
# data['title'] = ''
# data['image'] = ''
# return data
class Kissasian(Kissanime):
sitename = 'kisscartoon'
_episodeClass = KissasianEpisode
def _getEpisodeUrls(self, soup):
ret = soup.find('div', {'class': 'listing'}).find_all('a')
ret = [str(a['href']) for a in ret]
if ret == []:
err = 'No episodes found in url "{}"'.format(self.url)
args = [self.url]
raise NotFoundError(err, *args)
return list(reversed(ret))

View File

@ -0,0 +1,19 @@
from anime_downloader.sites.anime import BaseAnime, BaseEpisode
import json
import requests
# class MasteraniEpisode(BaseEpisode):
class Masterani(BaseAnime):
sitename = 'masterani'
QUALITIES = ['360p', '480p', '720p']
_api_url = 'https://www.masterani.me/api/anime/{}/detailed'
def getEpisodes(self):
anime_id = self.url.split('info/')[-1].split('-')[0]
url = self._api_url.format(anime_id)
res = requests.get(url)
res = res.json()
self.meta = res['info']

View File

@ -24,7 +24,7 @@ setup(
'PyYAML>=3.12'
],
extras_require={
'kissanime': ['cfscrape>=1.9.5']
'cloudflare': ['cfscrape>=1.9.5']
},
long_description=long_description,
long_description_content_type='text/markdown',