Browse Source

Add pagination to find Peertube existing playlists as default pagination shows 14 playlists max. See #41

pull/51/head
LecygneNoir 3 years ago
parent
commit
cbb7c745de
1 changed files with 41 additions and 33 deletions
  1. +41
    -33
      prismedia/pt_upload.py

+ 41
- 33
prismedia/pt_upload.py View File

@ -108,10 +108,21 @@ def get_default_playlist(user_info):
return user_info['videoChannels'][0]['id']
def get_playlist_by_name(user_playlists, options):
for playlist in user_playlists["data"]:
if playlist['displayName'] == options.get('--playlist'):
return playlist['id']
def get_playlist_by_name(oauth, url, username, options):
start = 1
user_playlists = json.loads(oauth.get(
url+"/api/v1/accounts/"+username+"/video-playlists?start="+str(start)+"&count=100").content)
total = user_playlists["total"]
data = user_playlists["data"]
# We need to iterate on pagination as peertube returns max 100 playlists (see #41)
while start < total:
for playlist in data:
if playlist['displayName'] == options.get('--playlist'):
return playlist['id']
start = start + 100
user_playlists = json.loads(oauth.get(
url+"/api/v1/accounts/"+username+"/video-playlists?start="+str(start)+"&count=100").content)
data = user_playlists["data"]
def create_playlist(oauth, url, options, channel):
@ -179,13 +190,10 @@ def upload_video(oauth, secret, options):
return (basename(path), open(abspath(path), 'rb'),
mimetypes.types_map[splitext(path)[1]])
def get_playlist(username):
return json.loads(oauth.get(url+"/api/v1/accounts/"+username+"/video-playlists").content)
path = options.get('--file')
url = str(secret.get('peertube', 'peertube_url')).rstrip('/')
user_info = get_userinfo()
user_playlists = get_playlist(str(secret.get('peertube', 'username').lower()))
username = str(secret.get('peertube', 'username').lower())
# We need to transform fields into tuple to deal with tags as
# MultipartEncoder does not support list refer
@ -267,7 +275,7 @@ def upload_video(oauth, secret, options):
fields.append(("channelId", str(channel_id)))
if options.get('--playlist'):
playlist_id = get_playlist_by_name(user_playlists, options)
playlist_id = get_playlist_by_name(oauth, url, username, options)
if not playlist_id and options.get('--playlistCreate'):
playlist_id = create_playlist(oauth, url, options, channel_id)
elif not playlist_id:
@ -284,30 +292,30 @@ def upload_video(oauth, secret, options):
headers = {
'Content-Type': multipart_data.content_type
}
response = oauth.post(url + "/api/v1/videos/upload",
data=multipart_data,
headers=headers)
if response is not None:
if response.status_code == 200:
jresponse = response.json()
jresponse = jresponse['video']
uuid = jresponse['uuid']
video_id = str(jresponse['id'])
logger.info('Peertube : Video was successfully uploaded.')
template = 'Peertube: Watch it at %s/videos/watch/%s.'
logger.info(template % (url, uuid))
template_stdout = '%s/videos/watch/%s'
if options.get('--url-only'):
logger_stdout.info(template_stdout % (url, uuid))
elif options.get('--batch'):
logger_stdout.info("Peertube: " + template_stdout % (url, uuid))
# Upload is successful we may set playlist
if options.get('--playlist'):
set_playlist(oauth, url, video_id, playlist_id)
else:
logger.critical(('Peertube: The upload failed with an unexpected response: '
'%s') % response)
exit(1)
# response = oauth.post(url + "/api/v1/videos/upload",
# data=multipart_data,
# headers=headers)
# if response is not None:
# if response.status_code == 200:
# jresponse = response.json()
# jresponse = jresponse['video']
# uuid = jresponse['uuid']
# video_id = str(jresponse['id'])
# logger.info('Peertube: Video was successfully uploaded.')
# template = 'Peertube: Watch it at %s/videos/watch/%s.'
# logger.info(template % (url, uuid))
# template_stdout = '%s/videos/watch/%s'
# if options.get('--url-only'):
# logger_stdout.info(template_stdout % (url, uuid))
# elif options.get('--batch'):
# logger_stdout.info("Peertube: " + template_stdout % (url, uuid))
# # Upload is successful we may set playlist
# if options.get('--playlist'):
# set_playlist(oauth, url, video_id, playlist_id)
# else:
# logger.critical(('Peertube: The upload failed with an unexpected response: '
# '%s') % response)
# exit(1)
def run(options):

Loading…
Cancel
Save