From b211a1312d461f9c60693a28a6295122b3f0584b Mon Sep 17 00:00:00 2001 From: Jonathan Huston Date: Sun, 10 Dec 2023 14:41:47 -0800 Subject: [PATCH] Added examples for methods related to audiobooks, shows and episodes --- examples/add_saved_episodes.py | 28 ++++++++++++++++++++++ examples/add_saved_shows.py | 28 ++++++++++++++++++++++ examples/check_show_is_saved.py | 31 +++++++++++++++++++++++++ examples/delete_saved_episodes.py | 28 ++++++++++++++++++++++ examples/get_audiobook_chapters_info.py | 29 +++++++++++++++++++++++ examples/get_audiobooks_info.py | 29 +++++++++++++++++++++++ examples/user_saved_episodes.py | 29 +++++++++++++++++++++++ examples/user_saved_shows.py | 29 +++++++++++++++++++++++ 8 files changed, 231 insertions(+) create mode 100644 examples/add_saved_episodes.py create mode 100644 examples/add_saved_shows.py create mode 100644 examples/check_show_is_saved.py create mode 100644 examples/delete_saved_episodes.py create mode 100644 examples/get_audiobook_chapters_info.py create mode 100644 examples/get_audiobooks_info.py create mode 100644 examples/user_saved_episodes.py create mode 100644 examples/user_saved_shows.py diff --git a/examples/add_saved_episodes.py b/examples/add_saved_episodes.py new file mode 100644 index 00000000..5acc1772 --- /dev/null +++ b/examples/add_saved_episodes.py @@ -0,0 +1,28 @@ +""" +Add episodes to current user's library +Usage: add_saved_episodes.py -e episode_id episode_id ... +""" + +import argparse +import spotipy +from spotipy.oauth2 import SpotifyOAuth + +scope = 'user-library-modify' + +def get_args(): + parser = argparse.ArgumentParser(description='Add episodes to library') + # Default args set to This American Life episodes 814 and 815 + parser.add_argument('-e', '--eids', nargs='+', + default=['6rxg9Lpt2ywNHFea8LxEBO', '7q8or6oYYRFQFYlA0remoy'], + help='Episode ids') + return parser.parse_args() + +def main(): + args = get_args() + print('Adding following episode ids to library: ' + str(args.eids)) + sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope=scope)) + sp.current_user_saved_episodes_add(episodes=args.eids) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/examples/add_saved_shows.py b/examples/add_saved_shows.py new file mode 100644 index 00000000..ef16258c --- /dev/null +++ b/examples/add_saved_shows.py @@ -0,0 +1,28 @@ +""" +Add shows to current user's library +Usage: add_saved_shows.py -s show_id show_id ... +""" + +import argparse +import spotipy +from spotipy.oauth2 import SpotifyOAuth + +scope = 'user-library-modify' + +def get_args(): + parser = argparse.ArgumentParser(description='Add shows to library') + # Default args set to Radiolab and 99% invisible + parser.add_argument('-s', '--sids', nargs='+', + default=['2hmkzUtix0qTqvtpPcMzEL', '2VRS1IJCTn2Nlkg33ZVfkM'], + help='Show ids') + return parser.parse_args() + +def main(): + args = get_args() + print('Adding following show ids to library: ' + str(args.sids)) + sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope=scope)) + sp.current_user_saved_shows_add(shows=args.sids) + + +if __name__ == '__main__': + main() diff --git a/examples/check_show_is_saved.py b/examples/check_show_is_saved.py new file mode 100644 index 00000000..eeeb56d9 --- /dev/null +++ b/examples/check_show_is_saved.py @@ -0,0 +1,31 @@ +""" +Check if shows are saved in user's library +Usage: check_show_is_saved -s show_id show_id ... +""" + +import argparse +import spotipy +from spotipy.oauth2 import SpotifyOAuth + +scope = 'user-library-read' + +def get_args(): + parser = argparse.ArgumentParser(description='Check that a show is saved') + # Default args set to Radiolab and 99% invisible + parser.add_argument('-s', '--sids', nargs='+', + default=['2hmkzUtix0qTqvtpPcMzEL', '2VRS1IJCTn2Nlkg33ZVfkM'], + help='Show ids') + return parser.parse_args() + +def main(): + args = get_args() + sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope=scope)) + results = sp.current_user_saved_episodes_contains(episodes=args.sids) + show_names = sp.shows(shows=args.sids) + # Print show names and if show is saved by current user + for i, show in enumerate(show_names['shows']): + print(show['name'] + ': ' + str(results[i])) + + +if __name__ == '__main__': + main() diff --git a/examples/delete_saved_episodes.py b/examples/delete_saved_episodes.py new file mode 100644 index 00000000..b62f4f04 --- /dev/null +++ b/examples/delete_saved_episodes.py @@ -0,0 +1,28 @@ +""" +Delete episodes from current user's library +Usage: delete_saved_episodes.py -e episode_id episode_id ... +""" + +import argparse +import spotipy +from spotipy.oauth2 import SpotifyOAuth + +scope = 'user-library-modify' + +def get_args(): + parser = argparse.ArgumentParser(description='Delete episodes from library') + # Default args set to This American Life episodes 814 and 815 + parser.add_argument('-e', '--eids', nargs='+', + default=['6rxg9Lpt2ywNHFea8LxEBO', '7q8or6oYYRFQFYlA0remoy'], + help='Episode ids') + return parser.parse_args() + +def main(): + args = get_args() + print('Deleting following episode ids from library: ' + str(args.eids)) + sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope=scope)) + sp.current_user_saved_episodes_delete(episodes=args.eids) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/examples/get_audiobook_chapters_info.py b/examples/get_audiobook_chapters_info.py new file mode 100644 index 00000000..abbf37a5 --- /dev/null +++ b/examples/get_audiobook_chapters_info.py @@ -0,0 +1,29 @@ +""" +Print chapter titles and lengths for given audiobook +Usage: get_audiobooks_chapters_info.py -a audiobook_id +""" + +import argparse +import spotipy +from spotipy.oauth2 import SpotifyOAuth + + +def get_args(): + parser = argparse.ArgumentParser(description='Get chapter info for an audiobook') + # Default set to Dune + parser.add_argument('-a', '--audiobook', default='2h01INWMBvfpzNMpGFzhdF', help='Audiobook id') + return parser.parse_args() + + +def main(): + args = get_args() + print('Getting chapter info for follow audiobook id: ' + str(args.audiobook)) + sp = spotipy.Spotify(auth_manager=SpotifyOAuth()) + results = sp.get_audiobook_chapters(id=args.audiobook) + # Print chapter name and length + for item in results['items']: + print('Name: ' + item['name'] + ', length: ' + str(round(item['duration_ms']/60000,1)) + ' minutes') + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/examples/get_audiobooks_info.py b/examples/get_audiobooks_info.py new file mode 100644 index 00000000..72fe18d1 --- /dev/null +++ b/examples/get_audiobooks_info.py @@ -0,0 +1,29 @@ +""" +Print audiobook title and description for a list of audiobook ids +Usage: get_audiobooks_info.py -a audiobook_id audiobook_id ... +""" + +import argparse +import spotipy +from spotipy.oauth2 import SpotifyOAuth + +def get_args(): + parser = argparse.ArgumentParser(description='Get information for a list of audiobooks') + # Defaults set to The Great Gatsby, The Chronicles of Narnia and Dune + parser.add_argument('-a', '--aids', nargs='+', + default=['6qjpt1CUHhKXiNoeNoU7nu', '1ezmXd68LbDtxebvygEQ2U', '2h01INWMBvfpzNMpGFzhdF'], + help='Audiobook ids') + return parser.parse_args() + +def main(): + args = get_args() + print('Getting info for follow audiobook ids: ' + str(args.aids) + '\n') + sp = spotipy.Spotify(auth_manager=SpotifyOAuth()) + results = sp.get_audiobooks(ids=args.aids) + # Print book title and description + for book in results['audiobooks']: + print('Title: ' + book['name'] + '\n' + book['description'] + '\n') + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/examples/user_saved_episodes.py b/examples/user_saved_episodes.py new file mode 100644 index 00000000..4a106824 --- /dev/null +++ b/examples/user_saved_episodes.py @@ -0,0 +1,29 @@ +""" +List current user's saved episodes +Usage: user_saved_episodes -l -o +""" + +import argparse +import spotipy +from spotipy.oauth2 import SpotifyOAuth + +scope = 'user-library-read' + +def get_args(): + parser = argparse.ArgumentParser(description='Show user\'s saved episodes') + parser.add_argument('-l', '--limit', default=20, help='Num of episodes to return') + parser.add_argument('-o', '--offset', default=0, help='Index of first show to return') + + return parser.parse_args() + +def main(): + args = get_args() + sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope=scope)) + results = sp.current_user_saved_episodes(limit=args.limit, offset=args.offset) + # Print episode names + for item in results['items']: + print(item['episode']['name']) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/examples/user_saved_shows.py b/examples/user_saved_shows.py new file mode 100644 index 00000000..ea60f4a0 --- /dev/null +++ b/examples/user_saved_shows.py @@ -0,0 +1,29 @@ +""" +List current user's saved shows +Usage: user_saved_shows -l -o +""" + +import argparse +import spotipy +from spotipy.oauth2 import SpotifyOAuth + +scope = 'user-library-read' + +def get_args(): + parser = argparse.ArgumentParser(description='Show user\'s saved shows') + parser.add_argument('-l', '--limit', default=20, help='Num of shows to return') + parser.add_argument('-o', '--offset', default=0, help='Index of first show to return') + + return parser.parse_args() + +def main(): + args = get_args() + sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope=scope)) + results = sp.current_user_saved_shows(limit=args.limit, offset=args.offset) + # Print episode names + for item in results['items']: + print(item['show']['name']) + + +if __name__ == '__main__': + main() \ No newline at end of file