it only works on premium accounts dont read the code or commits i swear
This commit is contained in:
		
							parent
							
								
									7888e685ec
								
							
						
					
					
						commit
						9e397dc673
					
				
					 11 changed files with 46 additions and 5 deletions
				
			
		|  | @ -5,9 +5,9 @@ Uses 'bottle' and 'librespot-python' for playback, and 'spotipy' for the playlis | ||||||
| 
 | 
 | ||||||
| Thanks to kokarare1212 for creating ['librespot-python'](https://github.com/kokarare1212/librespot-python/). | Thanks to kokarare1212 for creating ['librespot-python'](https://github.com/kokarare1212/librespot-python/). | ||||||
| 
 | 
 | ||||||
| This a fork of the [glk1001](https://github.com/glk1001/plugin.audio.spotify) version, modified to work with librespot-python instead of spotty. | This a fork of the [glk1001](https://github.com/glk1001/plugin.audio.spotify) addon, modified to work with librespot-python instead of spotty. | ||||||
| 
 | 
 | ||||||
| It may take some disabling/re-enabling the addon to get it to generate the initial authorization token. Dunno why. | It may take some disabling/re-enabling the addon (or just reopening it a few times) to get it to generate the initial authorization token. Dunno why. | ||||||
| 
 | 
 | ||||||
| ## Support | ## Support | ||||||
| None, like my Piped addon this is for personal use. If you wanna update it, fork it (and let me know if you end up doing so!) | None, like my Piped addon this is for personal use. If you wanna update it, fork it (and let me know if you end up doing so!) | ||||||
|  | @ -24,6 +24,10 @@ msgctxt "#11002" | ||||||
| msgid "Password" | msgid "Password" | ||||||
| msgstr "Passwort" | msgstr "Passwort" | ||||||
| 
 | 
 | ||||||
|  | msgctxt "#11003" | ||||||
|  | msgid "Premium Account" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgctxt "#11005" | msgctxt "#11005" | ||||||
| msgid "New releases" | msgid "New releases" | ||||||
| msgstr "Neuerscheinungen" | msgstr "Neuerscheinungen" | ||||||
|  |  | ||||||
|  | @ -24,6 +24,10 @@ msgctxt "#11002" | ||||||
| msgid "Password" | msgid "Password" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
|  | msgctxt "#11003" | ||||||
|  | msgid "Premium Account" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgctxt "#11005" | msgctxt "#11005" | ||||||
| msgid "New releases" | msgid "New releases" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | @ -24,6 +24,10 @@ msgctxt "#11002" | ||||||
| msgid "Password" | msgid "Password" | ||||||
| msgstr "Contraseña" | msgstr "Contraseña" | ||||||
| 
 | 
 | ||||||
|  | msgctxt "#11003" | ||||||
|  | msgid "Premium Account" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgctxt "#11005" | msgctxt "#11005" | ||||||
| msgid "New releases" | msgid "New releases" | ||||||
| msgstr "Nuevos Lanzamientos" | msgstr "Nuevos Lanzamientos" | ||||||
|  |  | ||||||
|  | @ -24,6 +24,10 @@ msgctxt "#11002" | ||||||
| msgid "Password" | msgid "Password" | ||||||
| msgstr "Contraseña" | msgstr "Contraseña" | ||||||
| 
 | 
 | ||||||
|  | msgctxt "#11003" | ||||||
|  | msgid "Premium Account" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgctxt "#11005" | msgctxt "#11005" | ||||||
| msgid "New releases" | msgid "New releases" | ||||||
| msgstr "Nuevos Lanzamientos" | msgstr "Nuevos Lanzamientos" | ||||||
|  |  | ||||||
|  | @ -24,6 +24,10 @@ msgctxt "#11002" | ||||||
| msgid "Password" | msgid "Password" | ||||||
| msgstr "Contraseña" | msgstr "Contraseña" | ||||||
| 
 | 
 | ||||||
|  | msgctxt "#11003" | ||||||
|  | msgid "Premium Account" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgctxt "#11005" | msgctxt "#11005" | ||||||
| msgid "New releases" | msgid "New releases" | ||||||
| msgstr "Nuevos Lanzamientos" | msgstr "Nuevos Lanzamientos" | ||||||
|  |  | ||||||
|  | @ -24,6 +24,10 @@ msgctxt "#11002" | ||||||
| msgid "Password" | msgid "Password" | ||||||
| msgstr "Mot de passe" | msgstr "Mot de passe" | ||||||
| 
 | 
 | ||||||
|  | msgctxt "#11003" | ||||||
|  | msgid "Premium Account" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgctxt "#11005" | msgctxt "#11005" | ||||||
| msgid "New releases" | msgid "New releases" | ||||||
| msgstr "Nouveautés" | msgstr "Nouveautés" | ||||||
|  |  | ||||||
|  | @ -25,6 +25,10 @@ msgctxt "#11002" | ||||||
| msgid "Password" | msgid "Password" | ||||||
| msgstr "ססמה" | msgstr "ססמה" | ||||||
| 
 | 
 | ||||||
|  | msgctxt "#11003" | ||||||
|  | msgid "Premium Account" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgctxt "#11005" | msgctxt "#11005" | ||||||
| msgid "New releases" | msgid "New releases" | ||||||
| msgstr "שיחרורים חדשים" | msgstr "שיחרורים חדשים" | ||||||
|  |  | ||||||
|  | @ -25,6 +25,10 @@ msgctxt "#11002" | ||||||
| msgid "Password" | msgid "Password" | ||||||
| msgstr "Wachtwoord" | msgstr "Wachtwoord" | ||||||
| 
 | 
 | ||||||
|  | msgctxt "#11003" | ||||||
|  | msgid "Premium Account" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgctxt "#11005" | msgctxt "#11005" | ||||||
| msgid "New releases" | msgid "New releases" | ||||||
| msgstr "Nieuwe releases" | msgstr "Nieuwe releases" | ||||||
|  |  | ||||||
|  | @ -4,27 +4,35 @@ sys.path.insert(1, os.path.join(os.path.dirname(__file__), "deps")) | ||||||
| from wsgiref.simple_server import make_server | from wsgiref.simple_server import make_server | ||||||
| 
 | 
 | ||||||
| from bottle import app, request, HTTPResponse, Bottle | from bottle import app, request, HTTPResponse, Bottle | ||||||
| import xbmc | import xbmcaddon | ||||||
| 
 | 
 | ||||||
| from librespot.core import Session | from librespot.core import Session | ||||||
| from librespot.audio.decoders import AudioQuality, VorbisOnlyAudioQuality | from librespot.audio.decoders import AudioQuality, VorbisOnlyAudioQuality | ||||||
| from librespot.metadata import TrackId | from librespot.metadata import TrackId | ||||||
| 
 | 
 | ||||||
| from utils import log_msg | from utils import ADDON_ID, log_msg | ||||||
| 
 | 
 | ||||||
| class LibrespotServer(Bottle): | class LibrespotServer(Bottle): | ||||||
|  |     __addon: xbmcaddon.Addon = xbmcaddon.Addon(id=ADDON_ID) | ||||||
|  | 
 | ||||||
|     def __init__(self, session: Session): |     def __init__(self, session: Session): | ||||||
|         super(LibrespotServer, self).__init__() |         super(LibrespotServer, self).__init__() | ||||||
|         self.session: Session = session |         self.session: Session = session | ||||||
|         self.route('/track/<track_id>', callback=self.stream) |         self.route('/track/<track_id>', callback=self.stream) | ||||||
|  |         self.is_premium: bool = self.__addon.getSetting("isPremium") | ||||||
| 
 | 
 | ||||||
|     # TODO: Make Range header work PLEASE I BEG |     # TODO: Make Range header work PLEASE I BEG | ||||||
| 
 | 
 | ||||||
|     def stream(self, track_id): |     def stream(self, track_id): | ||||||
|         try: |         try: | ||||||
|             playabletrack_id = TrackId.from_uri(f"spotify:track:{track_id}") |             playabletrack_id = TrackId.from_uri(f"spotify:track:{track_id}") | ||||||
|  | 
 | ||||||
|  |             quality = AudioQuality.NORMAL | ||||||
|  |             if self.is_premium: | ||||||
|  |                 quality = AudioQuality.VERY_HIGH | ||||||
|  | 
 | ||||||
|             stream = self.session.content_feeder().load( |             stream = self.session.content_feeder().load( | ||||||
|                 playabletrack_id, VorbisOnlyAudioQuality(AudioQuality.NORMAL), False, |                 playabletrack_id, VorbisOnlyAudioQuality(quality), False, | ||||||
|                 None) |                 None) | ||||||
|             start = 0 |             start = 0 | ||||||
|             end = stream.input_stream.size |             end = stream.input_stream.size | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ | ||||||
|     <category label="11028"> |     <category label="11028"> | ||||||
|         <setting id="username" type="text" default="" label="11001"/> |         <setting id="username" type="text" default="" label="11001"/> | ||||||
|         <setting id="password" type="text" default="" option="hidden" label="11002"/> |         <setting id="password" type="text" default="" option="hidden" label="11002"/> | ||||||
|  |         <setting id="isPremium" type="bool" default="false" label="11003"/> | ||||||
|     </category> |     </category> | ||||||
| 
 | 
 | ||||||
|     <category label="11055"> |     <category label="11055"> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue