Add tests and travis
parent
de38367140
commit
e8eca19920
|
@ -0,0 +1,15 @@
|
|||
language: python
|
||||
python:
|
||||
- "3.4"
|
||||
- "3.5"
|
||||
- "3.6"
|
||||
- "3.7-dev"
|
||||
before_install:
|
||||
- pip install pytest-cov
|
||||
install:
|
||||
- pip install -e .
|
||||
script:
|
||||
- python -m pytest tests --cov=.
|
||||
after_success:
|
||||
- pip install codecov
|
||||
- codecov
|
|
@ -4,17 +4,20 @@ import json
|
|||
import re
|
||||
|
||||
import time
|
||||
import sys
|
||||
import os
|
||||
import click
|
||||
import logging
|
||||
|
||||
from .exceptions import AnimeDLError
|
||||
from anime_downloader.sites.exceptions import AnimeDLError
|
||||
from anime_downloader import util
|
||||
|
||||
|
||||
class BaseAnime():
|
||||
sitename = ''
|
||||
title = ''
|
||||
|
||||
QUALITIES = None
|
||||
_episodeClass = None
|
||||
_episodeClass = object
|
||||
|
||||
def __init__(self, url, quality='720p'):
|
||||
|
||||
|
@ -26,7 +29,7 @@ class BaseAnime():
|
|||
if quality in self.QUALITIES:
|
||||
self.quality = quality
|
||||
else:
|
||||
raise AnimeDLError(f'Quality {quality} not found in {self.QUALITIES}')
|
||||
raise AnimeDLError('Quality {0} not found in {1}'.format(quality, self.QUALITIES))
|
||||
|
||||
logging.info('Extracting episode info from page')
|
||||
self.getEpisodes()
|
||||
|
@ -88,9 +91,16 @@ class BaseEpisode:
|
|||
def getData(self):
|
||||
raise NotImplementedError
|
||||
|
||||
def download(self, force=False):
|
||||
def download(self, force=False, path=None):
|
||||
logging.info('Downloading {}'.format(self.title))
|
||||
path = './' + self.title
|
||||
|
||||
if path is None:
|
||||
path = './' + self.title
|
||||
elif path.endswith('.mp4'):
|
||||
path = path
|
||||
else:
|
||||
path += self.title
|
||||
|
||||
r = requests.get(self.stream_url, stream=True)
|
||||
|
||||
total_size = int(r.headers['Content-length'])
|
||||
|
@ -114,18 +124,5 @@ class BaseEpisode:
|
|||
if chunk:
|
||||
f.write(chunk)
|
||||
downloaded += chunksize
|
||||
write_status((downloaded), (total_size),
|
||||
start_time)
|
||||
|
||||
|
||||
def write_status(downloaded, total_size, start_time):
|
||||
elapsed_time = time.time()-start_time
|
||||
rate = (downloaded/1024)/elapsed_time
|
||||
downloaded = float(downloaded)/1048576
|
||||
total_size = float(total_size)/1048576
|
||||
|
||||
status = 'Downloaded: {0:.2f}MB/{1:.2f}MB, Rate: {2:.2f}KB/s'.format(
|
||||
downloaded, total_size, rate)
|
||||
|
||||
sys.stdout.write("\r" + status + " "*5 + "\r")
|
||||
sys.stdout.flush()
|
||||
util.write_status((downloaded), (total_size),
|
||||
start_time)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from .anime import BaseAnime, BaseEpisode
|
||||
from .exceptions import AnimeDLError, URLError, NotFoundError
|
||||
from anime_downloader.sites.anime import BaseAnime, BaseEpisode
|
||||
from anime_downloader.sites.exceptions import AnimeDLError, URLError, NotFoundError
|
||||
|
||||
|
||||
import json
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
import logging
|
||||
import sys
|
||||
import time
|
||||
|
||||
def setup_logger(log_level):
|
||||
if log_level == 'DEBUG':
|
||||
|
@ -10,3 +12,16 @@ def setup_logger(log_level):
|
|||
level=logging.getLevelName(log_level),
|
||||
format=format
|
||||
)
|
||||
|
||||
|
||||
def write_status(downloaded, total_size, start_time):
|
||||
elapsed_time = time.time()-start_time
|
||||
rate = (downloaded/1024)/elapsed_time
|
||||
downloaded = float(downloaded)/1048576
|
||||
total_size = float(total_size)/1048576
|
||||
|
||||
status = 'Downloaded: {0:.2f}MB/{1:.2f}MB, Rate: {2:.2f}KB/s'.format(
|
||||
downloaded, total_size, rate)
|
||||
|
||||
sys.stdout.write("\r" + status + " "*5 + "\r")
|
||||
sys.stdout.flush()
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
from anime_downloader.sites.nineanime import NineAnime, NineAnimeEpisode
|
||||
|
||||
import pytest
|
||||
|
||||
@pytest.fixture
|
||||
def anime():
|
||||
return NineAnime('https://www4.9anime.is/watch/erased.kkw/6n069p')
|
||||
|
||||
|
||||
def test_length(anime):
|
||||
assert len(anime) == 12
|
||||
|
||||
|
||||
def test_title(anime):
|
||||
assert anime.title.lower() == 'erased'
|
||||
|
||||
|
||||
def test_episode(anime):
|
||||
episode1 = anime[0]
|
||||
|
||||
assert episode1.title.lower() == 'kametsu erased 01 bd 1080p hi10 flac 26723cf5.mp4'
|
||||
assert episode1.stream_url.endswith('.mp4')
|
Loading…
Reference in New Issue