playlists.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from lib import debug
  2. def get_playlist(youtube, title):
  3. """Return users's playlist by title (None if not found)"""
  4. playlists = youtube.playlists()
  5. request = playlists.list(mine=True, part='id,snippet')
  6. while request:
  7. results = request.execute()
  8. for item in results['items']:
  9. if item.get('snippet', {}).get('title') == title:
  10. return item.get('id')
  11. request = playlists.list_next(request, results)
  12. def create_playlist(youtube, title, privacy):
  13. """Create a playlist by title"""
  14. response = youtube.playlists().insert(part="snippet,status", body={
  15. "snippet": {
  16. "title": title,
  17. },
  18. "status": {
  19. "privacyStatus": privacy,
  20. }
  21. }).execute()
  22. return response.get('id', None)
  23. def add_video_to_playlist(youtube, playlist_id, video_id):
  24. """Add video to playlist (by identifier)."""
  25. return youtube.playlistItems().insert(part='snippet', body={
  26. "snippet": {
  27. "playlistId": playlist_id,
  28. "resourceId": {
  29. "kind": "youtube#video",
  30. "videoId": video_id
  31. }
  32. }
  33. }).execute()
  34. return playlist_id
  35. def add_to_playlist(youtube, video_id, title, privacy="public"):
  36. """Add video to playlist (by title)."""
  37. playlist_id = get_playlist(youtube, title) or \
  38. create_playlist(youtube, title, privacy)
  39. if playlist_id:
  40. return add_video_to_playlist(youtube, playlist_id, video_id)