예제 #1
0
파일: app.py 프로젝트: jac0b-w/spotlightify
    def ui_invoke(self):
        """
        Runs authorisation process
        and invokes the UI.
        """

        try:
            print(f"{colors.BLUE}Starting auth process...{colors.RESET} \n\n ")
            self.oauth = self.config.get_oauth()
            self.token_info = self.oauth.get_access_token(as_dict=True)
            self.spotify = Spotify(auth=self.token_info["access_token"])
            self.init_tray()

            self.listener_thread.start()
            self.song_queue = SongQueue()
            self.image_queue = ImageQueue()
            self.cache_manager = CacheManager(self.spotify, self.song_queue,
                                              self.image_queue)

            self.spotlight = SpotlightUI(self.spotify, self.song_queue)

            self.show_spotlight()
            while True:
                self.app.exec_()

        except Exception as ex:
            print(ex)
예제 #2
0
    def run(self):
        print(self.config.username)
        if not self.config.is_valid():
            app = QApplication([])
            app.setQuitOnLastWindowClosed(True)
            auth = AuthUI()
            # ADD TUTORIAL WEBSITE webbrowser.open("https://alfred-spotify-mini-player.com/setup/", 2)
            while not self.config.is_valid():
                auth.show()
                app.exec_()
                if auth.isCanceled:
                    sys.exit()

        try:
            print("Starting auth process")
            self.oauth = self.config.get_oauth()
            self.token_info = self.oauth.get_access_token(as_dict=True)
            self.spotify = Spotify(auth=self.token_info["access_token"])

            self.init_tray()

            self.listener_thread.start()
            self.song_queue = SongQueue()
            self.image_queue = ImageQueue()
            self.cache_manager = CacheManager(self.spotify, self.song_queue,
                                              self.image_queue)

            self.spotlight = SpotlightUI(self.spotify, self.song_queue)

            self.show_spotlight()
            while True:
                self.app.exec_()

        except Exception as ex:
            print(ex)
예제 #3
0
    def __init__(self, addonhandle, addonname, addonbaseurl, parameters,
                 settings):
        self.addonname = addonname
        self.baseurl = 'http://www.laola1.tv/' + settings.language(
        ) + '-' + settings.location() + '/'
        self.addonhandle = addonhandle
        self.addonbaseurl = addonbaseurl
        self.settings = settings
        self.cacheManager = CacheManager(
            xbmc.translatePath('special://home/userdata/addon_data/' +
                               self.addonname + '/cache'))

        self.type = self.get_param(parameters, 'type')
        self.url = self.get_param(parameters, 'url')

        id = self.get_param(parameters, 'id')
        if id is None:
            self.idParts = []
        else:
            self.idParts = self.split_id_parts(id)
예제 #4
0
	def __init__(self, addonhandle, addonname, addonbaseurl, parameters, settings):
		self.addonname = addonname
		self.baseurl = 'http://www.laola1.tv/' + settings.language() + '-' + settings.location() + '/'
		self.addonhandle = addonhandle
		self.addonbaseurl = addonbaseurl
		self.settings = settings
		self.cacheManager = CacheManager(xbmc.translatePath('special://home/userdata/addon_data/' + self.addonname + '/cache'))

		self.type = self.get_param(parameters, 'type')
		self.url = self.get_param(parameters, 'url')

		id = self.get_param(parameters, 'id')
		if id is None:
			self.idParts = []
		else:
			self.idParts = self.split_id_parts(id)
예제 #5
0
    def run(self):
        print(self.config.username)
        if not self.config.is_valid():
            app = QApplication([])
            app.setQuitOnLastWindowClosed(True)
            auth = AuthUI()
            # ADD TUTORIAL WEBSITE webbrowser.open("https://alfred-spotify-mini-player.com/setup/", 2)
            while not self.config.is_valid():
                auth.show()
                app.exec_()
                if auth.isCanceled:
                    sys.exit()

        try:
            print("Starting auth process")

            # sets up a Spotify username env var which is referenced elsewhere
            environ["SPOTIFY_USERNAME"] = self.config.username  # TODO Change this to something permanent

            self.oauth = self.config.get_oauth()
            self.token_info = self.oauth.get_access_token(as_dict=True)
            SpotifySingleton(self.token_info["access_token"])  # Instantiate Singleton Object
            self.spotify = SpotifySingleton.get_instance()

            self.init_tray()

            self.listener_thread.start()
            self.song_queue = SongQueue()
            self.image_queue = ImageQueue()
            self.cache_manager = CacheManager(self.spotify, self.song_queue, self.image_queue)

            self.spotlight = SpotlightUI(self.spotify, self.song_queue, self.spotifyclient)

            self.show_spotlight()
            while True:
                self.app.exec_()

        except Exception as ex:
            print(ex)
예제 #6
0
class RequestHandler:
	def __init__(self, addonhandle, addonname, addonbaseurl, parameters, settings):
		self.addonname = addonname
		self.baseurl = 'http://www.laola1.tv/' + settings.language() + '-' + settings.location() + '/'
		self.addonhandle = addonhandle
		self.addonbaseurl = addonbaseurl
		self.settings = settings
		self.cacheManager = CacheManager(xbmc.translatePath('special://home/userdata/addon_data/' + self.addonname + '/cache'))

		self.type = self.get_param(parameters, 'type')
		self.url = self.get_param(parameters, 'url')

		id = self.get_param(parameters, 'id')
		if id is None:
			self.idParts = []
		else:
			self.idParts = self.split_id_parts(id)

	def build_url(self, query):
		return self.addonbaseurl + '?' + urllib.urlencode(query)

	def split_id_parts(self, id):
		sIds = id.split('-')
		return [int(i) for i in sIds]

	def join_id_parts(self, idParts):
		return '-'.join(str(e) for e in idParts)

	def full_id(self, id):
		return self.join_id_parts(self.idParts + [id])

	def get_param(self, parameters, key):
		return parameters.get(key, [None])[0]

	def add_folder(self, folder, id):
		image = 'DefaultFolder.png'

		if 'image' in folder:
			image = folder['image']
			if 'resource:' in image:
				image = xbmc.translatePath('special://home/addons/' + self.addonname + '/resources/' + image[9:])

		li = xbmcgui.ListItem(folder['label'], thumbnailImage=image, iconImage='DefaultFolder.png')
		parameters = { 'type': folder['type'], 'id': self.full_id(id) }
		if 'url' in folder:
			parameters['url'] = folder['url']

		xbmcplugin.addDirectoryItem(handle=self.addonhandle,
			url=self.build_url(parameters),
			listitem=li, isFolder=True)

	def add_video(self, video):
		image = 'DefaultVideo.png'

		if 'image' in video:
			image = video['image']

		li = xbmcgui.ListItem(video['label'], thumbnailImage=image, iconImage='DefaultVideo.png')
		li.setProperty("IsPlayable","true")
		xbmcplugin.addDirectoryItem(handle=self.addonhandle,
			url=self.build_url({ 'type': 'video', 'url': video['url'] }),
			listitem=li, isFolder=False)

	def add_all_entries(self, entries):
		id = 0
		for entry in entries:
			if entry['type'] == 'video':
				self.add_video(entry)
			else:
				self.add_folder(entry, id)

			id = id + 1

	def cache_clear(self):
		self.cacheManager.clear()

	def cache_load(self):
		return self.cacheManager.load(self.idParts)

	def cache_store(self, obj):
		self.cacheManager.store(obj, self.idParts)

	def handle(self):
		logger.error('handle() method not overridden!')

	def finish(self):
		xbmcplugin.endOfDirectory(self.addonhandle, True, False, True)
예제 #7
0
class RequestHandler:
    def __init__(self, addonhandle, addonname, addonbaseurl, parameters,
                 settings):
        self.addonname = addonname
        self.baseurl = 'http://www.laola1.tv/' + settings.language(
        ) + '-' + settings.location() + '/'
        self.addonhandle = addonhandle
        self.addonbaseurl = addonbaseurl
        self.settings = settings
        self.cacheManager = CacheManager(
            xbmc.translatePath('special://home/userdata/addon_data/' +
                               self.addonname + '/cache'))

        self.type = self.get_param(parameters, 'type')
        self.url = self.get_param(parameters, 'url')

        id = self.get_param(parameters, 'id')
        if id is None:
            self.idParts = []
        else:
            self.idParts = self.split_id_parts(id)

    def build_url(self, query):
        return self.addonbaseurl + '?' + urllib.urlencode(query)

    def split_id_parts(self, id):
        sIds = id.split('-')
        return [int(i) for i in sIds]

    def join_id_parts(self, idParts):
        return '-'.join(str(e) for e in idParts)

    def full_id(self, id):
        return self.join_id_parts(self.idParts + [id])

    def get_param(self, parameters, key):
        return parameters.get(key, [None])[0]

    def add_folder(self, folder, id):
        image = 'DefaultFolder.png'

        if 'image' in folder:
            image = folder['image']
            if 'resource:' in image:
                image = xbmc.translatePath('special://home/addons/' +
                                           self.addonname + '/resources/' +
                                           image[9:])

        li = xbmcgui.ListItem(folder['label'],
                              thumbnailImage=image,
                              iconImage='DefaultFolder.png')
        parameters = {'type': folder['type'], 'id': self.full_id(id)}
        if 'url' in folder:
            parameters['url'] = folder['url']

        xbmcplugin.addDirectoryItem(handle=self.addonhandle,
                                    url=self.build_url(parameters),
                                    listitem=li,
                                    isFolder=True)

    def add_video(self, video):
        image = 'DefaultVideo.png'

        if 'image' in video:
            image = video['image']

        li = xbmcgui.ListItem(video['label'],
                              thumbnailImage=image,
                              iconImage='DefaultVideo.png')
        li.setProperty("IsPlayable", "true")
        xbmcplugin.addDirectoryItem(handle=self.addonhandle,
                                    url=self.build_url({
                                        'type': 'video',
                                        'url': video['url']
                                    }),
                                    listitem=li,
                                    isFolder=False)

    def add_all_entries(self, entries):
        id = 0
        for entry in entries:
            if entry['type'] == 'video':
                self.add_video(entry)
            else:
                self.add_folder(entry, id)

            id = id + 1

    def cache_clear(self):
        self.cacheManager.clear()

    def cache_load(self):
        return self.cacheManager.load(self.idParts)

    def cache_store(self, obj):
        self.cacheManager.store(obj, self.idParts)

    def handle(self):
        logger.error('handle() method not overridden!')

    def finish(self):
        xbmcplugin.endOfDirectory(self.addonhandle, True, False, True)