from bs4 import BeautifulSoup import requests import json import re from audiobook import Track, Playlist playlist_url = "https://api.findawayworld.com/v4/audiobooks/12345/playlists" headers = { 'Session-Key': '', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Accept': '*/*' } data = "{\"license_id\":\"5efd04173f0f627901261adc\"}" license_id = "5efd04173f0f627901261adc" sanitized_title = sanitize_title("book title") def sanitize_title(title): """ Remove forbidden characters from title that will prevent Windows from creating directory. Also change ' ' to '_' to preserve previous behavior. """ forbidden_chars = r' *"/\<>:|(),' replace_char = "_" for ch in forbidden_chars: title = title.replace(ch, replace_char) return title def make_playlist(): playlist = {} data = '{"license_id":"' + license_id + '"}' response = requests.post( playlist_url, headers=headers, data=data) playlist = json.loads(response.text) return playlist download_paths=[] def download(): """ Downloads all the chapters available in the playlist. """ playlist = make_playlist() tracks = [ Track(track) for track in playlist["playlist"] ] for track in tracks: path = "{0}/{0}_{1}.mp3".format(sanitized_title, track.chapter_number) dl_str = 'Downloading chapter-{0} ({1}) to "{2}"'.format(track.chapter_number, track.url, path) print(dl_str) track.download(path) download_paths.append(path) download()