def isValid(): import OmniUtil try: OmniUtil.jsonLoad(OmniUtil.BASE_PROFILE) return True except: return False
def testAuthorization(): import OmniUtil if not isAuthorized(): defaultBrowser = OmniUtil.getDefaultBrowser() if 'com.google.chrome' in defaultBrowser: newAuth = splinter.browser.Browser( driver_name='chrome', executable_path='%s/Resources/webdrivers/chromedriver' % OmniUtil.WORKFLOW) elif 'org.mozilla.firefox' in defaultBrowser: newAuth = splinter.browser.Browser(driver_name='firefox') else: if OmniUtil.cocoaMsgBox( '%s browser currently not supported!' % defaultBrowser, 'Your browser is not supported for authentication.\nOmniTube will default to Firefox to authenticate your profile.', '%sWarning.png' % OmniUtil.ICONS): newAuth = splinter.browser.Browser(driver_name='firefox') else: sys.exit(0) requestsLoad = { 'client_id': base64.b64decode(OmniUtil.CLIENT_ID), 'redirect_uri': 'urn:ietf:wg:oauth:2.0:oob', 'scope': 'https://www.googleapis.com/auth/youtube', 'response_type': 'code', 'access_type': 'offline' } newAuth.visit('%s?%s' % (OmniUtil.BASE_OAUTH, urllib.urlencode(requestsLoad))) if 'Chrome' in newAuth.driver_name: OmniUtil.__runProcess__( 'osascript -e \'%s\'' % 'tell application "System Events" to tell process "Chrome" to set frontmost to true' ) else: OmniUtil.__runProcess__( 'osascript -e \'%s\'' % 'tell application "System Events" to tell process "firefox-bin" to set frontmost to true' ) while 'success code' not in newAuth.title.lower(): pass requestsLoad = { 'code': newAuth.title.split('=')[-1], 'client_id': base64.b64decode(OmniUtil.CLIENT_ID), 'client_secret': base64.b64decode(OmniUtil.CLIENT_SECRET), 'redirect_uri': 'urn:ietf:wg:oauth:2.0:oob', 'grant_type': 'authorization_code' } jsonBump = open(OmniUtil.OAUTH_JSON, 'w') jsonBump.write( urllib.urlopen(OmniUtil.BASE_OAUTH_TOKEN, urllib.urlencode(requestsLoad)).read()) jsonBump.close() newAuth.quit() OmniUtil.introHtmlOpen() OmniUtil.introLoadThumbs()
def queryPlaylist(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_PLAYLIST, param1 = {'max-results':'9', 'q':query}) if gdataResults: for i in gdataResults: feed.add_item(i['title']['$t'], '%s - %s videos' % (i['author'][0]['name']['$t'], i['yt$countHint']['$t']), 'http://www.youtube.com/playlist?list=%s' % i['yt$playlistId']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getPlaylists(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_USER_PLAYLIST) feed.add_item(u'\u2329 New Playlist \u232A', '', "{'key':'newplaylist'}", '', '', '%sAddList.png' % OmniUtil.ICONS) if gdataResults: for i in gdataResults: feed.add_item(i['title']['$t'], '%s - %s videos' % (i['author'][0]['name']['$t'], i['yt$countHint']['$t']), 'http://www.youtube.com/playlist?list=%s' % i['yt$playlistId']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No playlists on your account could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getWatchLater(): feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_WATCHLATER) if gdataResults: for i in gdataResults: feed.add_item(i['title']['$t'], '%s - %s' % (i['media$group']['media$credit'][0]['yt$display'], OmniUtil.secondsToHuman(int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No videos from "Watch Later" could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def removeFromPlaylist(video): OmniUtil.validStart() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_PLAYLIST_FEED % OmniUtil.__urlParse__(selectPlaylist('Remove <%s> from which playlist?' % video)).query.split('=')[1]) if gdataResults: for i in gdataResults: if i['media$group']['yt$videoid']['$t'] == OmniUtil.__urlParse__(video).query.split('=')[1].split('&')[0]: for j in i['link']: if j['rel'] == 'self': requests.delete(j['href'], data = '', headers = OmniUtil.postLoad()) OmniUtil.displayNotification(OmniUtil.TITLE, 'Removed video from playlist', '', '') else: OmniUtil.cocoaMsgBox('Could not delete video from playlist', 'Sorry, but an error occured during the deletion process.', '%sWarning.png' % OmniUtil.ICONS)
def getUploads(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_UPLOADS) if gdataResults: for i in gdataResults: feed.add_item(i['title']['$t'], '%s - %s' % (i['author'][0]['name']['$t'], OmniUtil.secondsToHuman(int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No videos from your uploads could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getPlaylistFeed(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_PLAYLIST_FEED % OmniUtil.__urlParse__(query).query.split('=')[1]) if gdataResults: for i in gdataResults: feed.add_item(i['title']['$t'], '%s - %s' % (i['media$group']['media$credit'][0]['yt$display'], OmniUtil.secondsToHuman(int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No feed results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def queryVideo(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_VIDEO, param1 = {'orderby':'relevance', 'q':query}) if gdataResults: for i in gdataResults: feed.add_item(i['title']['$t'], '%s - %s' % (i['author'][0]['name']['$t'], OmniUtil.secondsToHuman(int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getChannelFeed(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_USER_UPLOADS % OmniUtil.__urlParse__(query).path.split('/')[-1], param1 = {'orderby':'published'}) if gdataResults: for i in gdataResults: feed.add_item(i['title']['$t'], '%s - %s' % (i['media$group']['media$credit'][0]['yt$display'], OmniUtil.secondsToHuman(int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No feed results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getSubscriptions(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_SUBSCRIPTIONS) if gdataResults: for i in gdataResults: if not os.path.exists('%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['yt$channelId']['$t'])): OmniUtil.retrieveThumb(i['yt$channelId']['$t']) feed.add_item(i['yt$username']['display'], '%s videos' % i['yt$countHint']['$t'], 'http://www.youtube.com/channel/%s' % i['yt$channelId']['$t'], '', '', '%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['yt$channelId']['$t'])) else: feed.add_item('No Results', 'No results for your subscriptions could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def queryChannel(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_CHANNEL, param1 = {'max-results':'9', 'q':query}) if gdataResults: for i in gdataResults: channelSummary = i['summary']['$t'] channelLink = 'http://www.youtube.com/channel/%s' % i['yt$channelId']['$t'] if len(channelSummary) <= 0: channelSummary = channelLink feed.add_item(i['author'][0]['name']['$t'], channelSummary, channelLink, '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getHistory(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_HISTORY) if gdataResults: feed.add_item(u'\u2329 Clear History \u232A', '', "{'key':'wipehistory'}", '', '', '%sErase.png' % OmniUtil.ICONS) for i in gdataResults: feed.add_item(i['title']['$t'], '%s - %s' % (i['media$group']['media$credit'][0]['yt$display'], OmniUtil.secondsToHuman(int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No videos in your history could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def removeWatchLater(query): OmniUtil.validStart() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_WATCHLATER) if gdataResults: for i in gdataResults: if i['media$group']['yt$videoid']['$t'] == OmniUtil.__urlParse__(query).query.split('v=')[-1].split('&')[0]: query = i['id']['$t'].split(':')[-1] requests.delete('%s/%s' % (OmniUtil.BASE_FAVORITES, query), data = '', headers = OmniUtil.postLoad()) OmniUtil.displayNotification(OmniUtil.TITLE, 'Removed from Watch Later', '', '') else: OmniUtil.displayNotification(OmniUtil.TITLE, 'Could not remove from "Watch Later"', '<unkown error occured>', '')
def removePlaylist(query): OmniUtil.validStart() playlistId = OmniUtil.__urlParse__(query).query.split('=')[1] query = '%s/%s' % (OmniUtil.BASE_USER_PLAYLIST, playlistId) if OmniUtil.cocoaYesNoBox('Deleting Playlist!', 'Are you sure you want to delete this playlist?', '%sWarning.png' % OmniUtil.ICONS): requests.delete(query, data = '', headers = OmniUtil.postLoad()) OmniUtil.displayNotification(OmniUtil.TITLE, 'Deleted Playlist', playlistId, '')
def getWatchLater(): feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_WATCHLATER) if gdataResults: for i in gdataResults: feed.add_item( i['title']['$t'], '%s - %s' % (i['media$group']['media$credit'][0]['yt$display'], OmniUtil.secondsToHuman( int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No videos from "Watch Later" could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def addFavorite(query): OmniUtil.validStart() query = OmniUtil.__urlParse__(query).query.split('v=')[-1].split('&')[0] OmniUtil.postLoad()['Content-Length'] = '1' requests.post(OmniUtil.BASE_FAVORITES, data = '<?xml version="1.0" encoding="UTF-8"?>\n<entry xmlns="http://www.w3.org/2005/Atom">\n<id>%s</id>\n</entry>' % query, headers = OmniUtil.postLoad()) OmniUtil.displayNotification(OmniUtil.TITLE, 'Added to Favorites', '', '')
def addWatchLater(query): OmniUtil.validStart() query = OmniUtil.__urlParse__(query).query.split('v=')[-1].split('&')[0] OmniUtil.postLoad()['Content-Length'] = '1' requests.post(OmniUtil.BASE_WATCHLATER, data = '<?xml version="1.0" encoding="UTF-8"?>\n<entry xmlns="http://www.w3.org/2005/Atom"\nxmlns:yt="http://gdata.youtube.com/schemas/2007">\n<id>%s</id>\n<yt:position>1</yt:position>\n</entry>' % query, headers = OmniUtil.postLoad()) OmniUtil.displayNotification(OmniUtil.TITLE, 'Added to Watch Later', '', '')
def getUploads(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_UPLOADS) if gdataResults: for i in gdataResults: feed.add_item( i['title']['$t'], '%s - %s' % (i['author'][0]['name']['$t'], OmniUtil.secondsToHuman( int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No videos from your uploads could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getPlaylists(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_USER_PLAYLIST) feed.add_item(u'\u2329 New Playlist \u232A', '', "{'key':'newplaylist'}", '', '', '%sAddList.png' % OmniUtil.ICONS) if gdataResults: for i in gdataResults: feed.add_item( i['title']['$t'], '%s - %s videos' % (i['author'][0]['name']['$t'], i['yt$countHint']['$t']), 'http://www.youtube.com/playlist?list=%s' % i['yt$playlistId']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No playlists on your account could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def removeWatchLater(query): OmniUtil.validStart() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_WATCHLATER) if gdataResults: for i in gdataResults: if i['media$group']['yt$videoid']['$t'] == OmniUtil.__urlParse__( query).query.split('v=')[-1].split('&')[0]: query = i['id']['$t'].split(':')[-1] requests.delete('%s/%s' % (OmniUtil.BASE_FAVORITES, query), data='', headers=OmniUtil.postLoad()) OmniUtil.displayNotification(OmniUtil.TITLE, 'Removed from Watch Later', '', '') else: OmniUtil.displayNotification(OmniUtil.TITLE, 'Could not remove from "Watch Later"', '<unkown error occured>', '')
def queryPlaylist(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_PLAYLIST, param1={ 'max-results': '9', 'q': query }) if gdataResults: for i in gdataResults: feed.add_item( i['title']['$t'], '%s - %s videos' % (i['author'][0]['name']['$t'], i['yt$countHint']['$t']), 'http://www.youtube.com/playlist?list=%s' % i['yt$playlistId']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getHistory(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_HISTORY) if gdataResults: feed.add_item(u'\u2329 Clear History \u232A', '', "{'key':'wipehistory'}", '', '', '%sErase.png' % OmniUtil.ICONS) for i in gdataResults: feed.add_item( i['title']['$t'], '%s - %s' % (i['media$group']['media$credit'][0]['yt$display'], OmniUtil.secondsToHuman( int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No videos in your history could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def addPlaylist(): OmniUtil.validStart() playlistTitle = OmniUtil.cocoaInputBox('Enter the title of your new playlist:', '%s/icon.png' % OmniUtil.WORKFLOW) playlistDescription = OmniUtil.cocoaInputBox('Enter a description for your new playlist:', '%s/icon.png' % OmniUtil.WORKFLOW) postLoad = OmniUtil.postLoad() postLoad['Content-Length'] = '1' requests.post(OmniUtil.BASE_USER_PLAYLIST, data = '<?xml version="1.0" encoding="UTF-8"?>\n<entry xmlns="http://www.w3.org/2005/Atom"\n\txmlns:yt="http://gdata.youtube.com/schemas/2007">\n<title type="text">%s</title>\n<summary>%s</summary>\n</entry>' % (playlistTitle, playlistDescription), headers = postLoad) OmniUtil.displayNotification(OmniUtil.TITLE, 'Created new playlist', playlistTitle, '')
def removePlaylist(query): OmniUtil.validStart() playlistId = OmniUtil.__urlParse__(query).query.split('=')[1] query = '%s/%s' % (OmniUtil.BASE_USER_PLAYLIST, playlistId) if OmniUtil.cocoaYesNoBox( 'Deleting Playlist!', 'Are you sure you want to delete this playlist?', '%sWarning.png' % OmniUtil.ICONS): requests.delete(query, data='', headers=OmniUtil.postLoad()) OmniUtil.displayNotification(OmniUtil.TITLE, 'Deleted Playlist', playlistId, '')
def addFavorite(query): OmniUtil.validStart() query = OmniUtil.__urlParse__(query).query.split('v=')[-1].split('&')[0] OmniUtil.postLoad()['Content-Length'] = '1' requests.post( OmniUtil.BASE_FAVORITES, data= '<?xml version="1.0" encoding="UTF-8"?>\n<entry xmlns="http://www.w3.org/2005/Atom">\n<id>%s</id>\n</entry>' % query, headers=OmniUtil.postLoad()) OmniUtil.displayNotification(OmniUtil.TITLE, 'Added to Favorites', '', '')
def addWatchLater(query): OmniUtil.validStart() query = OmniUtil.__urlParse__(query).query.split('v=')[-1].split('&')[0] OmniUtil.postLoad()['Content-Length'] = '1' requests.post( OmniUtil.BASE_WATCHLATER, data= '<?xml version="1.0" encoding="UTF-8"?>\n<entry xmlns="http://www.w3.org/2005/Atom"\nxmlns:yt="http://gdata.youtube.com/schemas/2007">\n<id>%s</id>\n<yt:position>1</yt:position>\n</entry>' % query, headers=OmniUtil.postLoad()) OmniUtil.displayNotification(OmniUtil.TITLE, 'Added to Watch Later', '', '')
def queryChannel(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_CHANNEL, param1={ 'max-results': '9', 'q': query }) if gdataResults: for i in gdataResults: channelSummary = i['summary']['$t'] channelLink = 'http://www.youtube.com/channel/%s' % i[ 'yt$channelId']['$t'] if len(channelSummary) <= 0: channelSummary = channelLink feed.add_item(i['author'][0]['name']['$t'], channelSummary, channelLink, '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def queryVideo(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_VIDEO, param1={ 'orderby': 'relevance', 'q': query }) if gdataResults: for i in gdataResults: feed.add_item( i['title']['$t'], '%s - %s' % (i['author'][0]['name']['$t'], OmniUtil.secondsToHuman( int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def removeFromPlaylist(video): OmniUtil.validStart() gdataResults = OmniUtil.gdataLoad( OmniUtil.BASE_PLAYLIST_FEED % OmniUtil.__urlParse__( selectPlaylist('Remove <%s> from which playlist?' % video)).query.split('=')[1]) if gdataResults: for i in gdataResults: if i['media$group']['yt$videoid']['$t'] == OmniUtil.__urlParse__( video).query.split('=')[1].split('&')[0]: for j in i['link']: if j['rel'] == 'self': requests.delete(j['href'], data='', headers=OmniUtil.postLoad()) OmniUtil.displayNotification( OmniUtil.TITLE, 'Removed video from playlist', '', '') else: OmniUtil.cocoaMsgBox( 'Could not delete video from playlist', 'Sorry, but an error occured during the deletion process.', '%sWarning.png' % OmniUtil.ICONS)
def testAuthorization(): import OmniUtil if not isAuthorized(): defaultBrowser = OmniUtil.getDefaultBrowser() if 'com.google.chrome' in defaultBrowser: newAuth = splinter.browser.Browser(driver_name = 'chrome', executable_path = '%s/Resources/webdrivers/chromedriver' % OmniUtil.WORKFLOW) elif 'org.mozilla.firefox' in defaultBrowser: newAuth = splinter.browser.Browser(driver_name = 'firefox') else: if OmniUtil.cocoaMsgBox('%s browser currently not supported!' % defaultBrowser, 'Your browser is not supported for authentication.\nOmniTube will default to Firefox to authenticate your profile.', '%sWarning.png' % OmniUtil.ICONS): newAuth = splinter.browser.Browser(driver_name = 'firefox') else: sys.exit(0) requestsLoad = {'client_id':base64.b64decode(OmniUtil.CLIENT_ID), 'redirect_uri':'urn:ietf:wg:oauth:2.0:oob', 'scope':'https://www.googleapis.com/auth/youtube', 'response_type':'code', 'access_type':'offline'} newAuth.visit('%s?%s' % (OmniUtil.BASE_OAUTH, urllib.urlencode(requestsLoad))) if 'Chrome' in newAuth.driver_name: OmniUtil.__runProcess__('osascript -e \'%s\'' % 'tell application "System Events" to tell process "Chrome" to set frontmost to true') else: OmniUtil.__runProcess__('osascript -e \'%s\'' % 'tell application "System Events" to tell process "firefox-bin" to set frontmost to true') while 'success code' not in newAuth.title.lower(): pass requestsLoad = {'code':newAuth.title.split('=')[-1], 'client_id':base64.b64decode(OmniUtil.CLIENT_ID), 'client_secret':base64.b64decode(OmniUtil.CLIENT_SECRET), 'redirect_uri':'urn:ietf:wg:oauth:2.0:oob', 'grant_type':'authorization_code'} jsonBump = open(OmniUtil.OAUTH_JSON, 'w') jsonBump.write(urllib.urlopen(OmniUtil.BASE_OAUTH_TOKEN, urllib.urlencode(requestsLoad)).read()) jsonBump.close() newAuth.quit() OmniUtil.introHtmlOpen() OmniUtil.introLoadThumbs()
def addToPlaylist(video): OmniUtil.validStart() if video[0] == "'": video = video[1:-1] postLoad = OmniUtil.postLoad() postLoad['Content-Length'] = '1' requests.post(OmniUtil.BASE_PLAYLIST_FEED % OmniUtil.__urlParse__(selectPlaylist('Add <%s> to which playlist?' % video)).query.split('=')[1], data = '<?xml version="1.0" encoding="UTF-8"?>\n<entry xmlns="http://www.w3.org/2005/Atom"\n\txmlns:yt="http://gdata.youtube.com/schemas/2007">\n<id>%s</id>\n<yt:position>1</yt:position>\n</entry>' % OmniUtil.__urlParse__(video).query.split('=')[1].split('&')[0], headers = postLoad) OmniUtil.displayNotification(OmniUtil.TITLE, 'Added video to playlist', '', '')
def addToPlaylist(video): OmniUtil.validStart() if video[0] == "'": video = video[1:-1] postLoad = OmniUtil.postLoad() postLoad['Content-Length'] = '1' requests.post( OmniUtil.BASE_PLAYLIST_FEED % OmniUtil.__urlParse__( selectPlaylist( 'Add <%s> to which playlist?' % video)).query.split('=')[1], data= '<?xml version="1.0" encoding="UTF-8"?>\n<entry xmlns="http://www.w3.org/2005/Atom"\n\txmlns:yt="http://gdata.youtube.com/schemas/2007">\n<id>%s</id>\n<yt:position>1</yt:position>\n</entry>' % OmniUtil.__urlParse__(video).query.split('=')[1].split('&')[0], headers=postLoad) OmniUtil.displayNotification(OmniUtil.TITLE, 'Added video to playlist', '', '')
def selectPlaylist(text): OmniUtil.validStart() playlistHref = {} items = [] gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_USER_PLAYLIST) if gdataResults: print gdataResults for i in gdataResults: playlistHref[i['title']['$t']] = 'http://www.youtube.com/playlist?list=%s' % i['yt$playlistId']['$t'] items.append(i['title']['$t']) return playlistHref[OmniUtil.cocoaDropdown(text, items, '%s/icon.png' % OmniUtil.WORKFLOW)] else: OmniUtil.cocoaMsgBox('No playlists could be found!', 'Sorry, but no playlists could be found on this account.', '%sWarning.png' % OmniUtil.ICONS) sys.exit(0)
def addPlaylist(): OmniUtil.validStart() playlistTitle = OmniUtil.cocoaInputBox( 'Enter the title of your new playlist:', '%s/icon.png' % OmniUtil.WORKFLOW) playlistDescription = OmniUtil.cocoaInputBox( 'Enter a description for your new playlist:', '%s/icon.png' % OmniUtil.WORKFLOW) postLoad = OmniUtil.postLoad() postLoad['Content-Length'] = '1' requests.post( OmniUtil.BASE_USER_PLAYLIST, data= '<?xml version="1.0" encoding="UTF-8"?>\n<entry xmlns="http://www.w3.org/2005/Atom"\n\txmlns:yt="http://gdata.youtube.com/schemas/2007">\n<title type="text">%s</title>\n<summary>%s</summary>\n</entry>' % (playlistTitle, playlistDescription), headers=postLoad) OmniUtil.displayNotification(OmniUtil.TITLE, 'Created new playlist', playlistTitle, '')
def getFeed(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_FEED) if gdataResults: for i in gdataResults: if not os.path.exists('%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['author'][0]['yt$userId']['$t'])): OmniUtil.retrieveThumb(i['author'][0]['yt$userId']['$t']) feed.add_item(i['title']['$t'], '%s - %s' % (i['author'][0]['name']['$t'], OmniUtil.secondsToHuman(int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['author'][0]['yt$userId']['$t'])) else: feed.add_item('No Results', 'No videos in your feed could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getProfile(): OmniUtil.validStart() def filterFeeds(gdataResults, rel): count = 0 for i in gdataResults['gd$feedLink']: if i['rel'] == rel: return count else: count += 1 feed = OmniUtil.Feedback() i = OmniUtil.jsonLoad(OmniUtil.BASE_PROFILE)['entry'] if not os.path.exists('%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['link'][0]['href'].split('/')[-1])): OmniUtil.retrieveThumb(i['link'][0]['href'].split('/')[-1]) feed.add_item(i['author'][0]['name']['$t'], '%s years old [%s]' % (i['yt$age']['$t'],i['yt$username']['$t']), i['link'][0]['href'], '', '', '%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['link'][0]['href'].split('/')[-1])) feed.add_item('Subscriptions %s' % i['gd$feedLink'][filterFeeds(i, 'http://gdata.youtube.com/schemas/2007#user.subscriptions')]['countHint'], '', '{\'key\':\'subscriptions\'}', '', '', '%sGroup.png' % OmniUtil.ICONS) feed.add_item('Subscribers %s' % i['yt$statistics']['subscriberCount'], '', '{\'key\':\'subscribers\'}', '', '', '%sGroupG.png' % OmniUtil.ICONS) feed.add_item('Uploads %s' % i['gd$feedLink'][filterFeeds(i, 'http://gdata.youtube.com/schemas/2007#user.uploads')]['countHint'], '', '{\'key\':\'uploads\'}', '', '', '%sMulti.png' % OmniUtil.ICONS) try: feed.add_item('Playlists %s' % OmniUtil.jsonLoad(OmniUtil.BASE_USER_PLAYLIST)['feed']['openSearch$totalResults']['$t'], '', '{\'key\':\'playlists\'}', '', '', '%sList.png' % OmniUtil.ICONS) except ValueError: feed.add_item(u'\uFFFD Playlists \uFFFD', 'Sorry, for some reason your playlists could not be found', '', '', '', '%sList.png' % OmniUtil.ICONS) try: feed.add_item('Favorites %s' % OmniUtil.jsonLoad(OmniUtil.BASE_FAVORITES)['feed']['openSearch$totalResults']['$t'], '', '{\'key\':\'favorites\'}', '', '', '%sHeart.png' % OmniUtil.ICONS) except ValueError: feed.add_item(u'\uFFFD Favorites \uFFFD', 'Sorry, for some reason your Favorites could not be found', '', '', '', '%sHeart.png' % OmniUtil.ICONS) try: feed.add_item('Watch Later %s' % OmniUtil.jsonLoad(OmniUtil.BASE_WATCHLATER)['feed']['openSearch$totalResults']['$t'], '', '{\'key\':\'watchlater\'}', '', '', '%sClock.png' % OmniUtil.ICONS) except ValueError: feed.add_item(u'\uFFFD Watch Later \uFFFD' 'Sorry, for some reason your Watch Later could not be found', '', '', '', '%sClock.png' % OmniUtil.ICONS) return feed
def getFeed(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_FEED) if gdataResults: for i in gdataResults: if not os.path.exists( '%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['author'][0]['yt$userId']['$t'])): OmniUtil.retrieveThumb(i['author'][0]['yt$userId']['$t']) feed.add_item( i['title']['$t'], '%s - %s' % (i['author'][0]['name']['$t'], OmniUtil.secondsToHuman( int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['author'][0]['yt$userId']['$t'])) else: feed.add_item('No Results', 'No videos in your feed could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def selectPlaylist(text): OmniUtil.validStart() playlistHref = {} items = [] gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_USER_PLAYLIST) if gdataResults: print gdataResults for i in gdataResults: playlistHref[i['title'][ '$t']] = 'http://www.youtube.com/playlist?list=%s' % i[ 'yt$playlistId']['$t'] items.append(i['title']['$t']) return playlistHref[OmniUtil.cocoaDropdown( text, items, '%s/icon.png' % OmniUtil.WORKFLOW)] else: OmniUtil.cocoaMsgBox( 'No playlists could be found!', 'Sorry, but no playlists could be found on this account.', '%sWarning.png' % OmniUtil.ICONS) sys.exit(0)
def getPlaylistFeed(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad( OmniUtil.BASE_PLAYLIST_FEED % OmniUtil.__urlParse__(query).query.split('=')[1]) if gdataResults: for i in gdataResults: feed.add_item( i['title']['$t'], '%s - %s' % (i['media$group']['media$credit'][0]['yt$display'], OmniUtil.secondsToHuman( int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No feed results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getSubscriptions(): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad(OmniUtil.BASE_SUBSCRIPTIONS) if gdataResults: for i in gdataResults: if not os.path.exists( '%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['yt$channelId']['$t'])): OmniUtil.retrieveThumb(i['yt$channelId']['$t']) feed.add_item( i['yt$username']['display'], '%s videos' % i['yt$countHint']['$t'], 'http://www.youtube.com/channel/%s' % i['yt$channelId']['$t'], '', '', '%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['yt$channelId']['$t'])) else: feed.add_item('No Results', 'No results for your subscriptions could be found', '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getChannelFeed(query): OmniUtil.validStart() feed = OmniUtil.Feedback() gdataResults = OmniUtil.gdataLoad( OmniUtil.BASE_USER_UPLOADS % OmniUtil.__urlParse__(query).path.split('/')[-1], param1={'orderby': 'published'}) if gdataResults: for i in gdataResults: feed.add_item( i['title']['$t'], '%s - %s' % (i['media$group']['media$credit'][0]['yt$display'], OmniUtil.secondsToHuman( int(i['media$group']['yt$duration']['seconds']))), 'http://www.youtube.com/watch?v=%s' % i['media$group']['yt$videoid']['$t'], '', '', '%sListBlock.png' % OmniUtil.ICONS) else: feed.add_item('No Results', 'No feed results for "%s" could be found' % query, '', '', '', '%sX.png' % OmniUtil.ICONS) return feed
def getProfile(): OmniUtil.validStart() def filterFeeds(gdataResults, rel): count = 0 for i in gdataResults['gd$feedLink']: if i['rel'] == rel: return count else: count += 1 feed = OmniUtil.Feedback() i = OmniUtil.jsonLoad(OmniUtil.BASE_PROFILE)['entry'] if not os.path.exists( '%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['link'][0]['href'].split('/')[-1])): OmniUtil.retrieveThumb(i['link'][0]['href'].split('/')[-1]) feed.add_item( i['author'][0]['name']['$t'], '%s years old [%s]' % (i['yt$age']['$t'], i['yt$username']['$t']), i['link'][0]['href'], '', '', '%s%s.jpg' % (OmniUtil.SUBSCRIPTIONS, i['link'][0]['href'].split('/')[-1])) feed.add_item( 'Subscriptions %s' % i['gd$feedLink'][filterFeeds( i, 'http://gdata.youtube.com/schemas/2007#user.subscriptions')] ['countHint'], '', '{\'key\':\'subscriptions\'}', '', '', '%sGroup.png' % OmniUtil.ICONS) feed.add_item('Subscribers %s' % i['yt$statistics']['subscriberCount'], '', '{\'key\':\'subscribers\'}', '', '', '%sGroupG.png' % OmniUtil.ICONS) feed.add_item( 'Uploads %s' % i['gd$feedLink'][filterFeeds( i, 'http://gdata.youtube.com/schemas/2007#user.uploads')] ['countHint'], '', '{\'key\':\'uploads\'}', '', '', '%sMulti.png' % OmniUtil.ICONS) try: feed.add_item( 'Playlists %s' % OmniUtil.jsonLoad(OmniUtil.BASE_USER_PLAYLIST) ['feed']['openSearch$totalResults']['$t'], '', '{\'key\':\'playlists\'}', '', '', '%sList.png' % OmniUtil.ICONS) except ValueError: feed.add_item( u'\uFFFD Playlists \uFFFD', 'Sorry, for some reason your playlists could not be found', '', '', '', '%sList.png' % OmniUtil.ICONS) try: feed.add_item( 'Favorites %s' % OmniUtil.jsonLoad(OmniUtil.BASE_FAVORITES)['feed'] ['openSearch$totalResults']['$t'], '', '{\'key\':\'favorites\'}', '', '', '%sHeart.png' % OmniUtil.ICONS) except ValueError: feed.add_item( u'\uFFFD Favorites \uFFFD', 'Sorry, for some reason your Favorites could not be found', '', '', '', '%sHeart.png' % OmniUtil.ICONS) try: feed.add_item( 'Watch Later %s' % OmniUtil.jsonLoad(OmniUtil.BASE_WATCHLATER) ['feed']['openSearch$totalResults']['$t'], '', '{\'key\':\'watchlater\'}', '', '', '%sClock.png' % OmniUtil.ICONS) except ValueError: feed.add_item( u'\uFFFD Watch Later \uFFFD' 'Sorry, for some reason your Watch Later could not be found', '', '', '', '%sClock.png' % OmniUtil.ICONS) return feed