Created
June 6, 2018 03:44
-
-
Save byronvanstien/99a139d6cac5de94ae12c7088b20c7a7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
BASE_URL = "https://api.j-novel.club/api" | |
class Novel(object): | |
def __init__(self, id_): | |
self.id = id_ | |
@property | |
def id(self): | |
return self._id | |
class User(object): | |
def __init__(self, email, password): | |
self._session = requests.Session() | |
self._session.headers.update({"User-Agent": "OwO"}) | |
self.login(email, password) | |
@property | |
def user_id(self): | |
return self._user_id | |
@user_id.setter | |
def user_id(self, new): | |
if type(new) == str: | |
self._user_id = new | |
@property | |
def access_token(self): | |
return self._access_token | |
@access_token.setter | |
def access_token(self, new): | |
if type(new) == str: | |
self._access_token = new | |
def get_books(self): | |
req = self._session.get(f"{BASE_URL}/users/{self.user_id}?filter={{%22include%22:%22ownedBooks%22}}", | |
headers={"Authorization": self.access_token}) | |
books = [] | |
for book in req.json()["ownedBooks"]: | |
books.append(Novel(book["id"])) | |
return books | |
def download_epub(self, novel: Novel): | |
book_id = getattr(novel, "id") | |
req = self._session.get(f"{BASE_URL}/volumes/{book_id}/getpremiumebook", | |
params={"userId": self.user_id, | |
"userName": "Recchan", | |
"access_token": self.access_token}) | |
with open("novel.epub", "wb") as file: | |
file.write(req.content) | |
return True | |
def login(self, email, password): | |
req = self._session.post(f"{BASE_URL}/users/login", | |
params={"include": "user"}, | |
data={"email": email, "password": password}) | |
if req.status_code == 200: | |
self.user_id = req.json()["user"]["id"] | |
self.access_token = req.json()["id"] | |
return "Logged in successfully" | |
raise RuntimeError("Failed to login") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment