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…
Reference in a new issue