Esempio n. 1
0
 async def test_list_page(self):
     scraper = KinozalScraper(f'localhost:{TEST_SERVER_PORT}',
                              max_not_a_robot_delay=0)
     page_count = 0
     async for _ in scraper.list_page(self.search_string):
         page_count += 1
     assert page_count == 3, 'Test web-server returns exactly three pages with search results'
Esempio n. 2
0
def test_details_url(host, id):
    s = KinozalScraper(host)
    page_url = s.details_url(f'details.php?id={id}')
    parsed_url = urllib.parse.urlparse(page_url)
    assert parsed_url.scheme == '' or parsed_url.scheme.startswith('http')
    #assert parsed_url.netloc - could be empty or localhost, or example.com, no feasible way to test
    assert parsed_url.path == '/details.php'
Esempio n. 3
0
 async def test_find_episodes(self):
     scraper = KinozalScraper(f'localhost:{TEST_SERVER_PORT}',
                              max_not_a_robot_delay=0)
     movies_count = 0
     async for movie in scraper.find_episodes(self.search_string,
                                              season=3,
                                              min_episode=9):
         movies_count += 1
     assert movies_count == 36
Esempio n. 4
0
def test_extract_details():
    scraper = KinozalScraper('localhost:4433', max_not_a_robot_delay=0)
    page_html = open('test/better_call_saul_card_1.html', 'r').read()
    movie = scraper.extract_details(page_html)
    assert movie[
        'audio'] == 'Русский (AC3, 6 ch, 640 Кбит/с), английский (E-AC3, 6 ch, 640 Кбит/с)'
    assert movie['quality'] == 'WEBRip ( 2160p)'
    assert movie['subtitles'] == 'Русские, английские'
    assert movie['has_english_subtitles'] == True
    assert movie['has_english_audio'] == True
Esempio n. 5
0
def test_kinozal_url(host, search_string, page):
    s = KinozalScraper(host)
    page_url = s.search_list_url(search_string, page)
    parsed_url = urllib.parse.urlparse(page_url)
    assert parsed_url.scheme == '' or parsed_url.scheme.startswith('http')
    #assert parsed_url.netloc - could be empty or localhost, or example.com, no feasible way to test
    assert parsed_url.path == '/browse.php'
    assert 's=' in parsed_url.query
    assert 'q=0' in parsed_url.query
    assert f'page={page}' in parsed_url.query
    assert search_string in itertools.chain.from_iterable(
        urllib.parse.parse_qsl(parsed_url.query))
Esempio n. 6
0
def test_extract_episode():
    scraper = KinozalScraper(f'localhost:{TEST_SERVER_PORT}',
                             max_not_a_robot_delay=0)
    page_html = open('test/better_call_saul_1.html', 'r').read()
    movies_count = 0
    for movie in scraper.extract_episode(page_html, 'fake_url'):
        movies_count += 1
        if movies_count == 2:
            assert movie[
                'title'] == 'Лучше звоните Солу (4 сезон: 1-10 серии из 10) / Better Call Saul / 2018 / ПД (Кубик в Кубе) / WEBRip (720p)'
            assert movie['details_link'] == '/details.php?id=1638000'
            assert movie['seeds_num'] == '15'
            assert movie['size'] == 15190000000
            assert movie['id'] == 'ktv_1638000'
            assert movie['last_season'] == 4
            assert movie['last_episode'] == 10
            assert movie['seasons'] == [4]
            assert movie[
                'torrent_link'] == 'http://dl.kinozal.tv/download.php?id=1638000'
    assert movies_count == 50
Esempio n. 7
0
 async def test_episodes(self):
     scraper = KinozalScraper(f'localhost:{TEST_SERVER_PORT}',
                              max_not_a_robot_delay=0)
     movies_count = 0
     async for movie in scraper.episodes(self.search_string):
         movies_count += 1
         if movies_count == 130:
             assert movie[
                 'title'] == 'Лучше звоните Солу (1 сезон: 1-10 серии из 10) / Better Call Saul  / 2015 / ЛО (Kerob) / WEB-DLRip'
             assert movie['details_link'] == '/details.php?id=1307895'
             assert movie['seeds_num'] == '0'
             assert movie['size'] == 4110000000
             assert movie['id'] == 'ktv_1307895'
             assert movie['last_season'] == 1
             assert movie['last_episode'] == 10
             assert movie['seasons'] == [1]
         if movies_count == 86:
             assert movie[
                 'title'] == 'Лучше звоните Солу (1-2 сезон) / Better Call Saul (Unofficial) / Soundtrack / 2015-2016 / MP3'
             assert movie['details_link'] == '/details.php?id=1453060'
             assert movie['seeds_num'] == '0'
             assert movie['size'] == 637000000
             assert movie['id'] == 'ktv_1453060'
     assert movies_count == 130
Esempio n. 8
0
async def scrape_movie():
    scraper = KinozalScraper('localhost:4433')
    async for scraped_movie in scraper.find_episodes('Better Call Saul', 1, 1):
        movie = Movie(**scraped_movie)
        movie.save()
Esempio n. 9
0
 async def test_details(self):
     scraper = KinozalScraper(f'localhost:{TEST_SERVER_PORT}',
                              max_not_a_robot_delay=0)
     movie = await scraper.details('/details.php?id=1534654')
     assert movie['audio'] == 'AC3, 2 ch, 192 Кбит/с'
     assert movie['has_english_subtitles'] == False
Esempio n. 10
0
 async def test_i_am_not_a_robot_delay(self):
     scraper = KinozalScraper(f'localhost:{TEST_SERVER_PORT}')
     start = time.time()
     await scraper.i_am_not_a_robot_delay()
     assert time.time() - start > 0.009