/
/
/
1"""Constants for Storytel Provider."""
2
3# API URL TEMPLATES
4URL_LOGIN = "https://www.storytel.com/api/login.action?m=1&uid={UID}&pwd={PASSWORD}"
5URL_REVALIDATE = "https://www.storytel.com/api/v2/account/revalidation"
6URL_LIBRARY_MANAGEMENT = "https://api.storytel.net/libraries/bookshelf"
7URL_CONSUMABLE_DOWNLOAD_NO_RANGE = (
8 "https://api.storytel.net/assets/v2/consumables/{CONSUMABLE_ID}/url"
9)
10URL_BOOKMARK_GET = (
11 "https://api.storytel.net/bookmarks/positional?consumableIds={CONSUMABLE_ID}&version=22.43.0"
12)
13URL_BOOKMARK_SET = "https://api.storytel.net/bookmarks/positional?version=22.43.0"
14URL_CONSUMABLE_DETAILS = "https://api.storytel.net/book-details/consumables/{CONSUMABLE_ID}"
15URL_PLAYBACK_BOOK_DETAILS = "https://api.storytel.net/playback-metadata/consumable/{CONSUMABLE_ID}"
16URL_SEARCH = "https://api.storytel.net/search/client"
17URL_FRONTPAGE = "https://api.storytel.net/explore/frontpage/chips"
18URL_PODCAST_DETAILS = "https://api.storytel.net/explore/lists/series/{CONSUMABLE_ID}"
19
20# API ENCRYPTION KEYS
21# Source: https://github.com/MauritsWilke/storytel-api/blob/v1_archive/src/utils/encryptPassword.ts
22API_ENCRYPTION_KEY = b"VQZBJ6TD8M9WBUWT" # 16 bytes, AES-128-CBC key
23API_ENCRYPTION_IV = b"joiwef08u23j341a" # 16 bytes, AES-128-CBC initialization vector
24
25# API CONTENT-TYPE HEADERS
26API_HEADER_CONTENT_TYPE_LIBRARY_DELTA = "application/vnd.storytel.library-delta+json;v=1.4"
27API_HEADER_CONTENT_TYPE_BOOK_DETAILS = "application/vnd.storytel.bookdetails-v5+json"
28API_HEADER_CONTENT_TYPE_EXPLORE = "application/vnd.storytel.explore-v21+json"
29API_HEADER_CONTENT_TYPE_SEARCH = "application/vnd.storytel.search-v10+json"
30
31# API STREAM HEADERS
32API_HEADER_STORYTEL_MEDIA_ACCEPT = "storytel-media-accept"
33API_HEADER_STORYTEL_MEDIA_FORMATS = "audio/mpeg,audio/mp4;codecs=mp4a.40.2,audio/mp4;codecs=ec-3"
34
35# API RESOURCE VERSION
36# Default resource version for library management requests
37API_DEFAULT_RESOURCE_VERSION = (
38 "AAUAAAaaaaaaaaaaaaaAAAAaaaaaaaAaAAaAAAaaaaaaaaAAAAaaaaaaAAAAAAaaaaa="
39)
40
41
42# Provider configuration keys
43CONF_USERNAME = "username"
44CONF_PASSWORD = "password"
45CONF_LANGUAGES = "languages"
46CONF_KIDS_MODE = "kids_mode"
47
48
49# LANGUAGES - Available languages for discovery features (recommendations, search)
50# Format: {name: isoValue}
51DEFAULT_LANGUAGES = {
52 "English": "en",
53}
54
55ALL_LANGUAGES = {
56 "Danish": "da",
57 "English": "en",
58 "Arabic": "ar",
59 "Swedish": "sv",
60 "Faroese": "fo", # codespell:ignore fo
61 "German": "de",
62 "French": "fr",
63 "Italian": "it",
64 "Spanish": "es",
65 "Dutch": "nl",
66}
67
68# Provider cache keys
69
70CACHE_DOMAIN = "storytel"
71CACHE_CATEGORY_AUDIOBOOK = 1
72CACHE_CATEGORY_PODCAST = 2
73CACHE_CATEGORY_PODCAST_EPISODES = 3
74CACHE_CATEGORY_PODCAST_EPISODE = 4
75