Skip to content

Instantly share code, notes, and snippets.

@byronvanstien
Created June 6, 2018 03:44
Show Gist options
  • Save byronvanstien/99a139d6cac5de94ae12c7088b20c7a7 to your computer and use it in GitHub Desktop.
Save byronvanstien/99a139d6cac5de94ae12c7088b20c7a7 to your computer and use it in GitHub Desktop.
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