def os_query(qry): start = time.time() retval = os.system(qry) duration = time.time() - start if retval: logger.error("[%(duration).2fs], retval=%(retval)s, %(qry)s" % locals()) raise OSError("Cannot execute %(qry)s" % locals()) else: logger.info("[%(duration).2fs], retval=%(retval)s, %(qry)s" % locals())
def clean_channel_playlist(self, playlist_id): if not self.accessToken: self.get_access_token() headers = {'Authorization': 'Bearer ' + self.accessToken} url = 'https://www.googleapis.com/youtube/v3/playlistItems' r = requests.get(url, params={'part': 'snippet', 'playlistId': playlist_id, 'maxResults': 50}, headers=headers) for video in r.json()['items']: vd = requests.delete(url, params={'id': video['id']}, headers=headers) if vd.status_code != 204: logger.error("Error removing song from playlist %s" % (vd.text))
def build_channel_playlist(self, playlist_id, songs): if not self.accessToken: self.get_access_token() url = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet' headers = {'Authorization': 'Bearer ' + self.accessToken, 'Content-Type': 'application/json'} songPosition = -1 for song in songs: if song.youtube_id: songPosition += 1 payload = json.dumps({'snippet': { 'playlistId': playlist_id, 'resourceId': { 'kind': 'youtube#video', 'videoId': song.youtube_id }, 'position': songPosition } }) logger.debug('Sending payload %s' % (payload)) r = requests.post(url, data=payload, headers=headers) if r.status_code != 200: logger.error("Error publishing %s : %s" % (song.artist + ' / ' + song.title, r.text))