1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import locale
- from .lib import debug
- def get_playlist(youtube, title):
- """Return users's playlist ID by title (None if not found)"""
- playlists = youtube.playlists()
- request = playlists.list(mine=True, part="id,snippet")
- current_encoding = locale.getpreferredencoding()
-
- while request:
- results = request.execute()
- for item in results["items"]:
- t = item.get("snippet", {}).get("title")
- existing_playlist_title = (t.encode(current_encoding) if hasattr(t, 'decode') else t)
- if existing_playlist_title == title:
- return item.get("id")
- request = playlists.list_next(request, results)
- def create_playlist(youtube, title, privacy):
- """Create a playlist by title and return its ID"""
- debug("Creating playlist: {0}".format(title))
- response = youtube.playlists().insert(part="snippet,status", body={
- "snippet": {
- "title": title,
- },
- "status": {
- "privacyStatus": privacy,
- }
- }).execute()
- return response.get("id")
- def add_video_to_existing_playlist(youtube, playlist_id, video_id):
- """Add video to playlist (by identifier) and return the playlist ID."""
- debug("Adding video to playlist: {0}".format(playlist_id))
- return youtube.playlistItems().insert(part="snippet", body={
- "snippet": {
- "playlistId": playlist_id,
- "resourceId": {
- "kind": "youtube#video",
- "videoId": video_id,
- }
- }
- }).execute()
-
- def add_video_to_playlist(youtube, video_id, title, privacy="public"):
- """Add video to playlist (by title) and return the full response."""
- playlist_id = get_playlist(youtube, title) or \
- create_playlist(youtube, title, privacy)
- if playlist_id:
- return add_video_to_existing_playlist(youtube, playlist_id, video_id)
- else:
- debug("Error adding video to playlist")
|