Tidal App discussion

Ok, try the previously linked release. I believe it works. EDIT: also available in chum testing.

1 Like

on my 32bit:
nichts stellt ‘python-dateutil’ bereit, das vom zu installierenden harbour-tidalplayer-0.2.0-1.armv7hl benötigt wird

so nothing provides … python-dateutil: means we did miss that one in the ist of dependencies

hmmm. we were including that via chum so it should already be installed.

https://build.sailfishos.org/package/view_file/sailfishos:chum:testing/python-dateutil/python-dateutil.spec?expand=1

I’m rebuilding on chum. Try installing from chum:testing?

might be i took the direct link you did provide.
let me try chum

update: i could update and start, but need to login.
ok login failed once, and then also after reboot. which is strange cause after reboot it would usualy work

update2: the deployed tidal api seems correct

update3: it fails in init of tidal.py

[D] unknown:0 - “PyOtherSide error: Traceback (most recent call last):\n\n File "/usr/share/harbour-tidalplayer/qml/tidal.py", line 8, in \n import tidalapi\n\n File "/usr/share/harbour-tidalplayer/python/tidalapi/init.py", line 6, in \n from .media import Quality, Track, Video, VideoQuality # noqa: F401\n\n File "/usr/share/harbour-tidalplayer/python/tidalapi/media.py", line 38, in \n from isodate import parse_duration\n\n File "/usr/share/harbour-tidalplayer/python/isodate/init.py", line 9, in \n from isodate.isodates import date_isoformat, parse_date\n\n File "/usr/share/harbour-tidalplayer/python/isodate/isodates.py", line 15, in \n from isodate.isostrf import DATE_EXT_COMPLETE, strftime\n\n File "/usr/share/harbour-tidalplayer/python/isodate/isostrf.py", line 59, in \n STRF_DT_MAP: dict[str, Callable[[Union[time, date], int], str]] = {\n\nTypeError: ‘type’ object is not subscriptable\n”
[W] unknown:0 - Unhandled PyOtherSide error: Cannot import module: tidal (Traceback (most recent call last):

File “/usr/share/harbour-tidalplayer/qml/tidal.py”, line 8, in
import tidalapi

same result on my C2 btw

please check:
which branch of each library
which version/tag of each library

/isodate-0.7.2-py3.8.egg

i did copy my isodate over ‘yours’ and the error did slightly change i think:

File “/usr/share/harbour-tidalplayer/python/typing_extensions.py”, line 490, in
class _SpecialGenericAlias(typing._SpecialGenericAlias, _root=True):

AttributeError: module ‘typing’ has no attribute ‘_SpecialGenericAlias’

before (or on the x10 it is:)
File “/usr/share/harbour-tidalplayer/python/isodate/isostrf.py”, line 59, in
STRF_DT_MAP: dict[str, Callable[[Union[time, date], int], str]] = {

TypeError: ‘type’ object is not subscriptable

ok i had to overwrite also user.py from tidalapi, now player is playing

summary: i did overwrite isodate, typing_extensions and partly tidalapi.

typing_extensions-4.13.2-py3.8.egg
isodate-0.7.2-py3.8

i did not diff user.py (it complained about intention error)

according to my notes i did install these dependencies via easy_install:

devel-su easy_install typing_extensions
devel-su easy_install isodate
devel-su easy_install mpegdash

rem to myself: after uninstall of tidal isodate/version.py remains installed

did diff your tidal-api and mine and they do differ too
the version is same, but in mine is the encoding specified

this is the diff in user.py / an obvious error in your version. strange

i believe i took python-tidal from here:

i did uninstall tidalplayer, cleaned up, installed from chum and replaced only user.py in tidalplayer
app is working.
i will now reboot and retry but seem the only culprit is the broken python-tidal

Ok, I took master, v0.8.3 of python-tidal. It’s hard to say. Did you grab a file from the release of v0.8.3? It could be that I have newer code.

Yes i took the release

Hi,
I’m using appllcation in C2 and it is working great. Now I have installed it to FP4 and when I’m trying to log in to Tidal, application takes md to Jolla’s frontpage.

When i have this i have to reboot the phone.
Jolla homepage is loaded when a network eror occures
But normal app restart does not do the trick for me, only reboot.
Else collect some logs please

It might also behave differently with mobile and wifi network

Switching this on C2 requires currently an app restart too

I have the same issue. I think Amberauth needs to be properly setup since that would never wind up at any given default page. We just have a WebView at the moment which doesn’t seem to get the correct urls passed.

currently i try to understand why app looses connection on mobile data / wifi switch
any hints ?

the allmighty ki gave me some hints, but after this error:
ConnectivityManager is not a type
it said:
On some Sailfish OS builds (especially aarch64/Qt 5.5), the Nemo.Connectivity plugin does not register any QML types for direct use in QML.
This means you cannot use ConnectivityManager or ConnectionMonitor in QML, even though the import works.

Heh, yea, that’s not a thing that ever existed.

ok on switch mobile ↔ wifi or vice versa the app looses connection
and currently need to be restarted to work again.

but when i have in parallel browser opnd or when i open browser after the switch. app starts to work again, so there is a workaround

[D] :159 - tidalApi::printConsole returned None
[D] :69 - playlistManager::printConsolereturned None
[D] :512 - retValue of getTrackUrl: undefined
[D] playUrl:140 - only this function is allowed to start playback https://amz-pr-fa.audio.tidal.com/7cd1c2b077db986c09b482f84c5fda8a_36.mp4

[D] :159 - tidalApi::printConsole: message: (‘Connection aborted.’, RemoteDisconnected(‘Remote end closed connection without response’))
[D] :69 - playlistManager::printConsole: message: (‘Connection aborted.’, RemoteDisconnected(‘Remote end closed connection without response’))
[D] :159 - tidalApi::printConsole: returned None
[D] :69 - playlistManager::printConsole: returned None
[D] :512 - retValue of getTrackUrl: undefined

In general, either connectivity is there or it is not. Connectivity can come and go and you can obtain connectivity in qml transparently. There may be something in the python backend that fails, but I’ve never seen a qml only app care when the connectivity switches or goes off/on/off/on. When I have a minute I’ll look at 1. Amber and 2. connection management.

i think it is a combination of switch and authentication.
just checked harbour-sailkick. that runs also on python and loads resource like images (no auth needed) and data (auth needed)
after conn switch, no concerts do get loaded, images do

still strange why browser fixes tidal if it were auth issue
from that bit of logging i see timeouts in tidal after switch

Like I said, the way that oath is being done now in tidal is not quiet complete. The way the flow SHOULD be is:

  1. Amber (webview++) authentication (no password in the app, just the provider view)
  2. User authenticates (the app does not see this at all)
  3. A token is returned to the app
  4. The app via the tidal api in python, fetches a long lasting token with the auth token it just got
  5. app/tidal api store token for future use.

Once that happens, It should be like it is with tooter. If tooter loses connectivity, it doesn’t care. Just reload when you have connectivity.

there is no pwd in the app, just a token and refresh token
the app hosts the webview rather then opening the browser
i am no expert in oauth, happy that somebody else did that
the user is there in the app, maybe just for convenience, currently it is not even handed over to webview. thankfullly webview suggests it

Ok. I haven’t actually been able to log in at all, so I wouldn’t know. I just looked at the code and thought, update oath vis. amber first … I’ve never seen the app in action since I always just get a jolla web page.