Skip to content

Commit

Permalink
Merge branch 'master' of github.com:jo1gi/audiobook-dl
Browse files Browse the repository at this point in the history
  • Loading branch information
jo1gi committed Dec 18, 2023
2 parents 020dc10 + 12e4efd commit c1f61e1
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 12 deletions.
8 changes: 4 additions & 4 deletions audiobookdl/output/download.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,16 @@ def add_metadata_to_file(audiobook: Audiobook, filepath: str, options):
:param filepath: Filepath of output file
:options: Cli options
"""
# Chapters
if audiobook.chapters and not options.no_chapters:
logging.book_update("Adding chapters")
metadata.add_chapters(filepath, audiobook.chapters)
# General metadata
logging.book_update("Adding metadata")
metadata.add_metadata(filepath, audiobook.metadata)
if options.write_json_metadata:
with open(f"{filepath}.json", "w") as f:
f.write(audiobook.metadata.as_json())
# Chapters
if audiobook.chapters and not options.no_chapters:
logging.book_update("Adding chapters")
metadata.add_chapters(filepath, audiobook.chapters)
# Cover
if audiobook.cover:
logging.book_update("Embedding cover")
Expand Down
5 changes: 3 additions & 2 deletions audiobookdl/sources/nextory.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def _login(self, url: str, username: str, password: str):
{
# New version headers
"X-Application-Id": self.APP_ID,
"X-App-Version": "5.0.0",
"X-App-Version": "5.4.1",
"X-Locale": self.LOCALE,
"X-Model": "Personal Computer",
"X-Device-Id": device_id,
Expand All @@ -59,6 +59,7 @@ def _login(self, url: str, username: str, password: str):
},
)
session_response = session_response.json()
logging.debug(f"{session_response=}")
login_token = session_response["login_token"]
country = session_response["country"]
self._session.headers.update(
Expand Down Expand Up @@ -88,7 +89,7 @@ def _login(self, url: str, username: str, password: str):


def download(self, url) -> Audiobook:
book_id = int(url.split("-")[-1].replace("/", ""))
book_id = int(url.split("/")[-1].split("-")[-1])
want_to_read_list = self.download_want_to_read_list()
book_info = self.find_book_info(book_id, want_to_read_list)
audio_data = self.download_audio_data(book_info)
Expand Down
27 changes: 21 additions & 6 deletions audiobookdl/sources/yourcloudlibrary.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,22 @@
import requests.utils
import base64
from typing import List
import re

class YourCloudLibrarySource(Source):
match = [
# r"https?://ebook.yourcloudlibrary.com/library/[^/]+/AudioPlayer/.+"
r"https?://audio.yourcloudlibrary.com/listen/.+"
r"https?://audio.yourcloudlibrary.com/listen/.+",
r"https://ebook.yourcloudlibrary.com/library/[^/]+/detail/.+",
]
names = [ "YourCloudLibrary" ]
login_data = [ "username", "password", "library" ]
_authentication_methods = [
"cookies",
"login"
]
_library: str

def download(self, url: str) -> Audiobook:
url = self.get_listening_url(url)
account_id = self.extract_json_string(url, "accountId")
logging.debug(f"{account_id=}")
fulfillment_id = self.extract_json_string(url, "fulfillmentId")
Expand All @@ -39,6 +40,19 @@ def download(self, url: str) -> Audiobook:
)


@staticmethod
def get_listening_url(url: str) -> str:
"""
Get url for listening page
:param url: Url to information or listening page
:return: Url to listening page
"""
if re.match(YourCloudLibrarySource.match[0], url):
return url
book_id = url.split("/")[-1]
return f"https://audio.yourcloudlibrary.com/listen/{book_id}"

def extract_json_string(self, url: str, key: str) -> str:
"""
Extracts string from json in web page
Expand Down Expand Up @@ -123,12 +137,13 @@ def download_playlist(self, fulfillment_id: str, license_id: str) -> dict:


def _login(self, url: str, username: str, password: str, library: str): # type: ignore
self.library = library
self.get(f"https://ebook.yourcloudlibrary.com/library/{library}/featured")
resp = self.post(
f"https://ebook.yourcloudlibrary.com/library/{library}/?_data=root",
"https://ebook.yourcloudlibrary.com/?_data=root",
data = {
"action": "login",
"barcode": username,
"pin": password
"pin": password,
"library": library
}
)

0 comments on commit c1f61e1

Please sign in to comment.