Skip to content

Commit

Permalink
Update eReolen
Browse files Browse the repository at this point in the history
- Add more metadata
- Fix login
  • Loading branch information
jo1gi authored and freddy36 committed Dec 27, 2023
1 parent a4c2d57 commit e5de111
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 11 deletions.
35 changes: 26 additions & 9 deletions audiobookdl/sources/ereolen.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from typing import List, Optional, Dict
import re
import json
import pycountry

LOGIN_PAGE_URL = "https://ereolen.dk/adgangsplatformen/login?destination=/user"

Expand Down Expand Up @@ -35,7 +36,7 @@ def _login(self, url: str, username: str, password: str, library: str): # type:
data = {
library_attr_name: library,
"agency": libraries[library],
"userId": username,
"loginBibDkUserId": username,
"pincode": password
}
)
Expand All @@ -60,16 +61,32 @@ def download(self, url: str) -> Audiobook:
return Audiobook(
session = self._session,
files = self.get_files(book_id),
metadata = self.get_metadata(meta),
metadata = self.get_metadata(url),
cover = self.get_cover(meta),
)


def get_metadata(self, meta) -> AudiobookMetadata:
title = meta["title"]
metadata = AudiobookMetadata(title)
metadata.add_author(meta["artist"])
return metadata
def get_metadata(self, url: str) -> AudiobookMetadata:
"""
Extract metadata from information page
:param url: Url of information page
"""

language: pycountry.language.Language = None
language_str = self.find_elem_in_page(url, ".field-type-ting-details-language .field-item")
if language_str == "dansk":
language = pycountry.languages.get(alpha_3 = "dan")

return AudiobookMetadata(
title = self.find_elem_in_page(url, ".field-name-ting-title .field-item h1"),
authors = [ self.find_elem_in_page(url, ".author") ],
narrators = [ self.find_elem_in_page(url, ".field-type-ting-details-audiobook-reader .field-item") ],
publisher = self.find_elem_in_page(url, ".field-name-ting-details-publisher .field-item a"),
description = self.find_elem_in_page(url, ".field-name-ting-abstract .field-item"),
scrape_url = url,
language = language,
)


def get_cover(self, meta) -> Cover:
Expand All @@ -79,7 +96,8 @@ def get_cover(self, meta) -> Cover:

def get_files(self, book_id: str) -> List[AudiobookFile]:
return self.get_stream_files(
f"https://audio.api.streaming.pubhub.dk/v1/stream/hls/{book_id}/playlist.m3u8"
f"https://audio.api.streaming.pubhub.dk/v1/stream/hls/{book_id}/playlist.m3u8",
extension = "mp3"
)


Expand All @@ -96,4 +114,3 @@ def _get_libraries(self):
library_id = library["branchId"]
libraries[library_name] = library_id
return libraries

6 changes: 4 additions & 2 deletions audiobookdl/sources/source/networking.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,16 @@ def get_json(self, url: str, **kwargs) -> dict:
return json.loads(resp.decode('utf8'))


def get_stream_files(self, url: str, headers={}) -> List[AudiobookFile]:
def get_stream_files(self, url: str, headers={}, extension=None) -> List[AudiobookFile]:
"""Creates a list of audio files from an m3u8 file"""
playlist = m3u8.load(url, headers=headers)
files = []
for _, seg in enumerate(playlist.segments):
if extension is None:
extension = os.path.splitext(seg.absolute_uri)[1][1:].split("?")[0]
current = AudiobookFile(
url = seg.absolute_uri,
ext = os.path.splitext(seg.absolute_uri)[1][1:].split("?")[0],
ext = extension,
headers = headers
)
if not seg.key.method == "NONE":
Expand Down

0 comments on commit e5de111

Please sign in to comment.