Example #1
0
def isValid():
	import OmniUtil
	try:
		OmniUtil.jsonLoad(OmniUtil.BASE_PROFILE)
		return True
	except:
		return False
Example #2
0
def isValid():
    import OmniUtil
    try:
        OmniUtil.jsonLoad(OmniUtil.BASE_PROFILE)
        return True
    except:
        return False
Example #3
0
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()
Example #4
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
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)
Example #8
0
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
Example #9
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
Example #10
0
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
Example #11
0
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
Example #12
0
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	
Example #13
0
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
Example #14
0
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
Example #15
0
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>', '')
Example #16
0
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, '')
Example #17
0
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
Example #18
0
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', '', '')	
Example #19
0
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', '', '')
Example #20
0
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
Example #21
0
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
Example #22
0
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>', '')
Example #23
0
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
Example #24
0
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
Example #25
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, '')
Example #26
0
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, '')
Example #27
0
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', '', '')
Example #28
0
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', '',
                                 '')
Example #29
0
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
Example #30
0
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
Example #31
0
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)
Example #32
0
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()
Example #33
0
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', '', '')
Example #34
0
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', '',
                                 '')
Example #35
0
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)
Example #36
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, '')
Example #37
0
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
Example #38
0
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
Example #39
0
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
Example #40
0
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)
Example #41
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
Example #42
0
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
Example #43
0
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
Example #44
0
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