change test file structure and add twist tests
parent
abdaebba8d
commit
7c1d4a3634
|
@ -39,14 +39,14 @@ class TwistMoe(Anime, sitename='twist.moe'):
|
|||
headers = {
|
||||
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.46 Safari/537.36'
|
||||
}
|
||||
first_time = helpers.soupify(helpers.get('https://twist.moe', allow_redirects=True, headers=headers))
|
||||
js = first_time.select_one('script').text
|
||||
js = "location = {'reload': ()=>true};document = {}; \n" + js + f"console.log(document.cookie)"
|
||||
cookie = eval_in_node(js).strip()
|
||||
with requests_cache.disabled():
|
||||
headers['cookie'] = cookie
|
||||
r = requests.get('https://twist.moe/', headers=headers)
|
||||
soup = helpers.soupify(r)
|
||||
soup = helpers.soupify(helpers.get('https://twist.moe/', allow_redirects=True, headers=headers))
|
||||
if 'being redirected' in soup.text:
|
||||
cookie = get_cookie(soup)
|
||||
with requests_cache.disabled():
|
||||
headers['cookie'] = cookie
|
||||
# XXX: Can't use helpers.get here becuse that one is cached. Investigate
|
||||
r = requests.get('https://twist.moe/', headers=headers)
|
||||
soup = helpers.soupify(r)
|
||||
all_anime = soup.select_one('nav.series').select('li')
|
||||
animes = []
|
||||
for anime in all_anime:
|
||||
|
@ -111,3 +111,10 @@ def decrypt(encrypted, passphrase):
|
|||
iv = key_iv[32:]
|
||||
aes = AES.new(key, AES.MODE_CBC, iv)
|
||||
return unpad(aes.decrypt(encrypted[16:]))
|
||||
|
||||
|
||||
def get_cookie(soup):
|
||||
js = soup.select_one('script').text
|
||||
js = "location = {'reload': ()=>true};document = {}; \n" + js + f"console.log(document.cookie)"
|
||||
cookie = eval_in_node(js).strip()
|
||||
return cookie
|
||||
|
|
|
@ -6,7 +6,7 @@ from pathlib import Path
|
|||
|
||||
def configure_httpretty(sitedir):
|
||||
httpretty.enable()
|
||||
dir = Path(f"tests/test_sites/test_{sitedir}/webpages/")
|
||||
dir = Path(f"tests/test_sites/test_{sitedir}/")
|
||||
data_file = dir / 'data.json'
|
||||
|
||||
data = None
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
[{"method": "GET", "url": "https://twist.moe/", "file": "tmpp43aw_mv"}, {"method": "GET", "url": "https://twist.moe/api/anime/shingeki-no-kyojin/sources", "file": "tmpfczuk35z"}]
|
|
@ -0,0 +1,202 @@
|
|||
[
|
||||
{
|
||||
"id": 18901,
|
||||
"source": "U2FsdGVkX1+t9kziRSsIW171AGM9UO4C55I2D/xndLWeoru4RgiFromUdSkbkfsV8JjNdcwvoJXE3/yCSpYFYn4jFLw7iF7UV9twBh/NFhjZmOwEIW3rxwzY4ui26ZzJMhXmXGD5JMzODMxPmhPVbg==",
|
||||
"number": 1,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18902,
|
||||
"source": "U2FsdGVkX19rNREQUjCy31xPL5BCFvswENq5crognWIDhAzJEFc1FNtvTIRJAnbNRuWmyNweubUBBRNVmzakLu3nmv78DpiF2eLISDcUc5csT1TKJXJiIfvuPSDn3waHuGz48JgADTqhR9nu0gJgag==",
|
||||
"number": 2,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18903,
|
||||
"source": "U2FsdGVkX19jRHSXbmqwFGqNifA5PaX/4me1+BNEobfv1tI6zXrfhXHCCvjgnLqScrxfPKxtp/JWUNqbjYjUfzyzc2/LzsqqWgrbbUCgIyXgyPe82QfYQdESpzwbzBtTthhgIzybdTyOMRrxhUEpCA==",
|
||||
"number": 3,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18904,
|
||||
"source": "U2FsdGVkX189inutThHMN/YnsqlCW38Fm47Cv1UTwepgeTMwlD+afin5GTEb7W63P/lNR6ZfjtDO9q6GP/u0oqU623JS9F6sVrF9PBFgqZnXtdwb73/RN/Wg00dR9DxCLOrFokI3Aj2irkV1KrRGng==",
|
||||
"number": 4,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18905,
|
||||
"source": "U2FsdGVkX1+z2M0/uyCyHwqWOksw7btovAbXh0lXpdOFNfAsIhfbKPkjQMpBZhCz7zN+Wmxy8wrrtuLgt6o3UqaPh0IEy+HbIW4+1tgU0DUixf/+rg++iV7FntTrfHznxrWMdDY23dgZYL/C5gJyvg==",
|
||||
"number": 5,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18906,
|
||||
"source": "U2FsdGVkX1/NcAokpp4ADR8V9aULA1t0WttDVTsdD1mN6K40qzWIDWMPkG/vW0KiA0yCkPUp/EMdKXxylmW6/6Urn7lsFeCQ280gEIunhGHwFOBgv3oM2zN82/d90Ticd5gOCAOHmtMCJPAJrxw6jQ==",
|
||||
"number": 6,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18907,
|
||||
"source": "U2FsdGVkX1+Z+zY4vJJEz/FV2W11oPJGseUqRXI/au3E22+550yG/T+84Wdt7OHELjyfCpOo7JMVhWkKSxbS7v8xGilNqCmogiJDR/s1BEi0WAIHTIRr0PIacKv7QD2xQpk5nzihdkSLjAYLDBX9SQ==",
|
||||
"number": 7,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18908,
|
||||
"source": "U2FsdGVkX18wbcLcy3EuyXhJJRuEpT5cwJmVUuIuvVdZBOztyM8D+n9AM7rbdVp7RZW95Hku1fknl5oDn2U4kPOOJ9ak3u4mvnmbYqmxAW0JFH7jwByzeeiItDl3NbGODbupBoLKxXZcuuT2jk0p4w==",
|
||||
"number": 8,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18909,
|
||||
"source": "U2FsdGVkX1+4MU2m0Qm1/aOzhE5gQJjMNxF34uPfYTVu1FDF9OcQH5WYA5/sVMV8UVcvHhmI3Bs6egJvGdxaL+EnHqEVxDGyx6uRSOHG1kVbst4LjK14OqIfslXxtOMbPY8UETUSnhhxLXJaKmqEQg==",
|
||||
"number": 9,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18910,
|
||||
"source": "U2FsdGVkX19jfdfKTFDcyfWKTC1w1ZBRhlRQbe+8R1WGouG0Tad4bxBLHc7k9JsCMDOi6enusuV2O8c9I+wZCmJx51BiQFHB77xZHGjhmTCa20VSsOO1KDNC6SA7yLV/b7kZGrfqUcf1ITgPoWuFqQ==",
|
||||
"number": 10,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18911,
|
||||
"source": "U2FsdGVkX1+sbR3ejv6KpK8+zNc4hhfZCRf/CvUBLnMFrcvXlBcAJ9hQpeuX/vdgOHn7OV+k7HGnFCioImxP2BAXSJ3UM/KsA5+l3uaokv+EQHTara37DE5er4THwKugT2pc3EjCCkO2VbjNtD8THg==",
|
||||
"number": 11,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18912,
|
||||
"source": "U2FsdGVkX1+ULUv/Q9FfhjyWJwL6IFc4bwi28R8I1aYerBYN7sSd7OvdmVM3KhseHRQA4rm/4GAcGctpsyHGd/5Ts5nG2e8I2SksGTm9NfjMlSTD0to6R60iZ98ZUO43v/6o4baSP+Ed4FeYLWledw==",
|
||||
"number": 12,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:57",
|
||||
"updated_at": "2016-08-24 14:57:57"
|
||||
},
|
||||
{
|
||||
"id": 18913,
|
||||
"source": "U2FsdGVkX19jYK5ynaUc8eerZJX4qQq2slFjqVUElcoSDEQYmOh5yX43WwJUEPcCOs/J3aQaSxUT1mkLlLgnLbNX6tYYe9kSp+KPipG82iQNPv5YRCn46yDfb7Xav/fXxxstUVCJKJY6ADPwoi5suA==",
|
||||
"number": 13,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18914,
|
||||
"source": "U2FsdGVkX19UqU8KnIxZ6WshnJU2FlC+Nn+p0JZeO5+hq+p8Spk43PX7R5kNV8iexu4ocmm15BJLAlLqVK6VoKQxH1RR0UhgT3u0RK1O27+CI593DH3YV5FHfwTSX7teZMY0QEkbHvILAIGJgFyaqA==",
|
||||
"number": 14,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18915,
|
||||
"source": "U2FsdGVkX187wUrFSM64/RUUKC+/SVM/w3aLSwqj6in1WXHVMuVt51rYA9L9cAWBswOsvOzpCEbjwf5ARurdBvVPVscWBxLSpWrNTHZtq8W4JJgG8Qx0bPprnaf6VunjRpxgQix0wjUKzwU6YC7RrQ==",
|
||||
"number": 15,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18916,
|
||||
"source": "U2FsdGVkX19OLVbgMUN8VY5LjMjhoVwGqUeYOB4rctTBHPYIRR9FQWn/stM/23+kz2Zy7zZ38Ja/cbDXqTjU0AntwgLTLuVylPRZv8KdQ7DRqSHStc8xfzIL7ggPQJ3NYsDfl41kkUDu2/vIt3Iw8g==",
|
||||
"number": 16,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18917,
|
||||
"source": "U2FsdGVkX1/MXLTDwyyQKOO933EgkdoNGn/q4BE7p17QLt3fNXly+lhUL55aMiHvNPUN0dRiy6uT95sDOUrGXDfUzHeknKab5n16OI/UsDnmca0Fr7XDtU4XtMuEkgZYyY8HcqEL6VyTXqQ4JrK7Ww==",
|
||||
"number": 17,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18918,
|
||||
"source": "U2FsdGVkX19FJyqcZe9yMZB4i73DR39XKhpMTqMyq2YxCJ7HxUGUdw9FsWpDDR5N7GCLpmpd6Rq+VIIOAq99acTnKJqGwrzHaIf55OPuDAfMHneYyGFbLwnKLJU8XvLfLnS6Hcx8Ju9D94xNN/vlFQ==",
|
||||
"number": 18,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18919,
|
||||
"source": "U2FsdGVkX19HWe/urXBduVrSL3zNHLJf7CWcHkUhMf1nxPFMTXn5QZx5aG7+ZAkILMu0E0Ij57NJd5lAJaSYTvHlhpB2FfcefNHJgQ0N5qLb40VSWpceQZOT4UYqES90vUJa3vFo/IyiujV1rnE9kQ==",
|
||||
"number": 19,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18920,
|
||||
"source": "U2FsdGVkX19OQpN5S+N7qLv2jXUPabbedy2rmzoilwpr+ikSRaWVlNc2k2x1D7W31ma5g2HN0BaOWbzI+EgIDMab5qS9d+MauoHD5OOqZYSpZLJLk3+i3uGFXTTyQnIrJD4k44gj8c04eWqGWb5Hlg==",
|
||||
"number": 20,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18921,
|
||||
"source": "U2FsdGVkX1/APwDYuOTX7cJp4Rem+U3/+akJbTFD86VH3tlUhW+5lqBWkxe6tHf1fkokSpG1DVJd23WGoOd4a8zUv0hvnGgMkvQF1fyecei2JCu5Kfz1eMlgM40PA3O7rDryT4Ju6UrSxOAgU+eOSg==",
|
||||
"number": 21,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18922,
|
||||
"source": "U2FsdGVkX1+qazLSmygA751GfjcIkzv0uHGBjYl4WhP/fuP2TUouFL+9yJq5MC/xxgB/mXuLKQ11JBP3vAShvLhgqFSSkCSkqroYROUnN3Sbpy4hh9JOVNy0ONHnJAG2TOVedaeUSUYiBDUHb6P6KQ==",
|
||||
"number": 22,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18923,
|
||||
"source": "U2FsdGVkX1+dYvijqs7E3sSxZLnWYjxw5ySyvtGqffCAIXLUs2b9dtJ9OmAkj0jWk+9X9h1dfHC97qoXbRATdG5tq6jMa9+6jmChnNXnvGkatHfV64Q1pw7lG3TLqnLkE6xCnGsX2v5idoPVNu0BEQ==",
|
||||
"number": 23,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18924,
|
||||
"source": "U2FsdGVkX1/JkLMqa/IZNefhiES9b/dNwNiQ9WrflWxAFhpUdFlD6SzVvX6q95FqPQX89vXB+SyLZKywX7NwTWX7CXBGr/BtZdPIjqLVHHMbCHVzMldfeihDuxg6n8lxEIDKpSmZ+EAD3jX9Pufuhg==",
|
||||
"number": 24,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
},
|
||||
{
|
||||
"id": 18925,
|
||||
"source": "U2FsdGVkX1/AtJ5BMp7wqyZq77QtvJWaEFl4T4N8n4phDXDhv5d96kOJiOuVPS16+zDnU3A31VPS532Eybpeg3e5oMZgOM1hEQrvTSbkuUKdyo5bEV3WLky5WrRZmXLfRcYWEeTmPPbZYWLLwccYxg==",
|
||||
"number": 25,
|
||||
"anime_id": 230,
|
||||
"created_at": "2016-08-24 14:57:58",
|
||||
"updated_at": "2016-08-24 14:57:58"
|
||||
}
|
||||
]
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,28 @@
|
|||
import pytest
|
||||
|
||||
from anime_downloader.sites.twistmoe import TwistMoe
|
||||
from test_sites.site import configure_httpretty
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def anime():
|
||||
return TwistMoe('https://twist.moe/a/shingeki-no-kyojin/first')
|
||||
|
||||
configure_httpretty('twistmoe')
|
||||
|
||||
def test_search():
|
||||
ret = TwistMoe.search('shingeki no kyojin')
|
||||
assert len(ret) == 5
|
||||
assert ret[0].title == 'Shingeki no Kyojin'
|
||||
|
||||
|
||||
def test_title(anime):
|
||||
assert anime.title == 'shingeki-no-kyojin'
|
||||
|
||||
|
||||
def test_length(anime):
|
||||
assert len(anime) == 25
|
||||
|
||||
|
||||
def test_streamurl(anime):
|
||||
assert anime[0].source().stream_url == 'https://eu1.twist.moe/anime/attackontitan/[Coalgirls]_Shingeki_no_Kyojin_01_(1920x1080_Blu-ray_FLAC)_[AEF12794].mp4'
|
Loading…
Reference in New Issue