Kodi Community Forum

Full Version: TIDAL music (former WiMP)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
well, @arneson, this is how it went:

Code:
<property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalArtists">plugin://context.item.tidal2/search_field/artist/"</property>
<property name="widgetPath2" tag="property" attribute="name|list" value="DefaultSearch-TidalArtists">"</property>

- same as plugin://context.item.tidal2/search_field/artist/"SEARCHTERM"
with this it will search for "madonna", but it will now display the search results in its own window that will pop-up, overriding the search window. if i come back from that window, search results will be cleared. if i enter any other search term after that, like "kelly clarkson" it will show "madonna" again.

previous problem was that it popped the search window, now it opens it's own results window.

i also tried this, but no change:
Code:
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalArtists">plugin://context.item.tidal2/search_field/artist/"</property>
            <property name="widgetPath2" tag="property" attribute="name|list" value="DefaultSearch-TidalArtists">"/</property>
- i just thought it could make a change, that's practically plugin://context.item.tidal2/search_field/artist/"SEARCHTERM"/

then i tried fuzzy...if it's "plugin://context.item.tidal2/search_fuzzy_fields/<artist>/<title>/<album>/<albumartist>/<year>"
then, from your example, i need something like this to search for an artist:
Code:
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalArtists">plugin://context.item.tidal2/search_fuzzy_fields/"</property>
            <property name="widgetPath2" tag="property" attribute="name|list" value="DefaultSearch-TidalArtists">"/+/+/+/+/</property>

it does find kelly and it only finds exactly "kelly clarkson" unlike when i did an artist search in the first example, but it still pops up its own window. if i search for something else after that, it will still show kelly clarkson.

i don't know why this one so different to other addons that were easy to implement Smile
it opens its own search results window for some reason and it doesn't refresh on "back" after the search so when i call it again, it just displays the first search result again over and over again.
i guess this just won't work out of the box with this and there's nothing i can do about that.

i'm using spotify for years and recently added tidal to check this plugin out. i fell in love with it because it's so much more complete than spotify so these days i've been moving my whole spotify library and playlists to tidal so i can use it more Smile

(2022-06-30, 12:31)ray2301 Wrote: [ -> ]hey @arneson thanks for all the information.
[...]

Hi @ray2301,

it seems the search call has to return items for the specific type (artists, albums, etc.).
My search addon shows a result window with a possibility to modify/edit the search parameters and search again to update the search results.
That is not what you need.

Please try to add a new search function into Kodi/addons/context.item.tidal2/resources/lib/tidalsearch/main.py
like this:
python:

@plugin.route('/search/<field>')
def search_query(field):
    search_text = plugin.args.get('query', [None])[0]
    searchresults = []
    if search_text:
        searchresults = session.search(field.lower(), search_text)
        add_items(searchresults.artists, end=False)
        add_items(searchresults.albums, end=False)
        add_items(searchresults.playlists, end=False)
        add_items(searchresults.tracks, end=False)
        add_items(searchresults.videos, end=False)
    add_items([], end=True)

I called this function with a hotkey from my keyboard.xml like
ActivateWindow(Music,plugin://context.item.tidal2/search/artist?query=Kelly+Clarkson,return)
and it show an artist list.

You can try it with "plugin://context.item.tidal2/search/artist?query=" in your skin xml. You can also use a different search field like "album", "track", "video", "playlist" or "all" instead of "artist".

Please try it out and I will insert this function in the next version of the addon.

arneson
Hi @arneson
Thank you very much for your great work on this plugin.
I’m also looking for this search function to use on AH2.
I will try when I have a bit of spare time and report back.
(2022-06-30, 23:21)arneson Wrote: [ -> ]Please try it out and I will insert this function in the next version of the addon.

hey @arneson 
this worked perfectly!!!! i am so happy right now Smile thank you a million times!

that's it! this works right "out of the box" Big Grin 
please add this in the next update and when it comes out, i'll let @jurialmunkey know (or remind him since he's tagged now) to add it to the skin.

so, these are all the searches:
Code:
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalArtists">plugin://context.item.tidal2/search/artist?query=</property>
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalAlbums">plugin://context.item.tidal2/search/album?query=</property>
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalSongs">plugin://context.item.tidal2/search/track?query=</property>
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalPlaylists">plugin://context.item.tidal2/search/playlist?query=</property>
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalVideos">plugin://context.item.tidal2/search/video?query=</property>


kelly clarkson rules XD
Hi @arneson @ray2301

YES 😀 , it works.

Thank you very much to both.
Great work
(2022-07-01, 12:16)rapteev Wrote: [ -> ]Hi @arneson @ray2301

YES 😀 , it works.

Thank you very much to both.
Great work

Nice to hear that this is working.

The context.tem.tidal2 addon is a context menue addon for selected list items.
I think that the main addon plugin.audio.tidal2 is the right place for the search function.
So I will add this search function in the next version of this addon.

You can try to add the search funtion into /plugin.audio.tidal2/blob/master/resources/lib/tidal2/main.py 
and call this with plugin://plugin.audio.tidal2/search/artist?query=

Please try, if this is working there.

arneson
(2022-07-01, 13:48)arneson Wrote: [ -> ]Please try, if this is working there.
alright, i removed the code from the context menu plugin and i've put it in plugin.audio.tidal2. everything still works with no problems.

Code:
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalArtists">plugin://plugin.audio.tidal2/search/artist?query=</property>
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalAlbums">plugin://plugin.audio.tidal2/search/album?query=</property>
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalSongs">plugin://plugin.audio.tidal2/search/track?query=</property>
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalPlaylists">plugin://plugin.audio.tidal2/search/playlist?query=</property>
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalVideos">plugin://plugin.audio.tidal2/search/video?query=</property>
            <property name="widgetPath" tag="property" attribute="name|list" value="DefaultSearch-TidalAll">plugin://plugin.audio.tidal2/search/all?query=</property>


i just discovered that i can make a video playlist from my audio playlists with tidal2 search menu. this is so great!
i can't thank you enough for this and for maintaining this plugin!
Hi

Just came here to thank you all for this.
This is fantastic.
Great work guys.
(2022-07-01, 20:26)anona Wrote: [ -> ]Hi

Just came here to thank you all for this.
This is fantastic.
Great work guys.

It was even better if the new music recommendations that @jurialmunkey is working on AH2 could include recommendations from Tidal2 plugin. 
That was simply awesome.
Hi TIDAL2 users,

For the past few months I've been working on the TIDAL2 addon to expand its functionality and playback capabilities.
And now, after many tests on different hardware and operating system platforms, I have decided to finalize this new version V2.1.1 of TIDAL2.

It's a small version number change, but it includes some important new features:

TIDAL browsing pages

The TIDAL website and the original app use a page structure to provide the music content to the user.
I rebuilt these page structure for "Feed", "Home", "Explore" and "Videos" and added them to the TIDAL2 main screen as folders. Now there is even more content available.
Otherwise I removed the old menu items "Suggestions for me", "Featured Playlists", "TIDAL Rising" and "Promotions" because this content (and more) can be found within the page structure.

Support for MPEG-DASH playback

Previous versions of TIDAL2 skip streams in MPEG-DASH format (MPD) with the message "DRM protected".
This happens if you select one of the TV device types. Then the FLAC and AAC streams are MPD streams but MQA and Atmos are still HTTP streams.

MPD streams can be played with Kodi using the inputstream addons. In Kodi Matrix there are two of them:
  • The inputstream.adaptive addon (available for Kodi >= 18):
    This addon can play MPD streams but not in lossless format because it doesn't have a built-in FLAC decoder.
  • The inputstream.ffmpegdirect addon (available for Kodi >= 19):
    This addon can play MPD streams in AAC and FLAC format.
    But I found out that on some (or all) Linux versions of Kodi the MPD demuxer doesn't seems to be compiled into this addon.
    So on Linux this addon can't be used to stream FLAC as MPD stream.
    I tested it with Linux on Ubuntu and with LibreELEC on x86_64 and Raspberry Pi 4, but the addon couldn't play MPD everywhere.
    On other platforms like Windows, macOS and Android the MPD demuxer is working with the inputstream.ffmpegdirect addon.

To play TIDAL MPD streams with my TIDAL2 addon I'm using both inputstream addons which I added to the dependencies, so they will be installed automatically when you install/update TIDAL2.

Using a Linux platform for TIDAL2 can be a problem if you want to play FLAC lossless content (not MQA), because inputstream.adaptive has no FLAC decoder and inputstream.ffmpegdirect has no MPD demuxer.

To solve this problem I implemented a very simple "MPD-to-HLS" stream converter into the HTTP server of the TIDAL2 addon.
It converts the streaming URLs from the MPD manifest into an HLS playlist (m3u8 file).
Using this stream converter the Linux versions of Kodi can play HLS streams using the inputstream.ffmpegdirect addon and also completely without an inputstream addon, because Kodi can play HLS itself (Kodi >= 18).
The only disadvantage of the MPD-to-HLS converter is, that the fast-forward and rewind functions are not working.

The TIDAL2 addon uses the following method to select the inputstream addon for MPD playback:
  • AAC MPD streams are played using the inputstream.adaptive addon, because it's available for Kodi >= 18.
  • FLAC MPD streams are played using the inputstream.ffmpegdirect addon.
    On Linux platforms the internal MPD-to-HLS converter is activated.
  • If the inputstream.ffmpegdirect addon is not installed (Kodi 18) the MPD-to-HLS converter is activated and Kodi plays the HLS stream itself.

The use of the inputstream addons can also be configured in the TIDAL2 addon settings:
  • The playback mode for AAC MPD streams can be set to "Play as HLS", "Use inputstream.adaptive" or "Use inputstream.ffmpegdirect"
  • The Playback mode for FLAC MPD streams can be set to "Play as HLS" or "Use inputstream.ffmpegdirect"
  • The setting "inputstream.ffmpegdirect plays MPD" should be disabled if the MPD demuxer is not working with this addon.
    Then the internal MPD-to-HLS converter is used.
  • The setting "Use inputstream.ffmpegdirect as default player" can be set if HTTP streams should also be played with this addon.
    This setting is enabled by default on Windows and Android platforms because HTTP streaming is buggy on these platforms (very long loading times).

Other changes:
  • There is a new quality mode "Audio only" for videos (useful for headless Kodi boxes).
  • Now there are two "country codes" in the settings. One for browsing the TIDAL content and the other for the user subscription.
  • There is a new colored label extension for "Sony 360 Real Audio" tracks (shown as 360RA)
  • Skipping playback for Sony 360 Real Audio and Dolby AC-4 tracks, because Kodi can't play them. Otherwise Kodi will crash.
  • Added a callable search function: plugin://plugin.audio.tidal2/search/<field>?query=<text>
    (To use from other plugins like the "Arctic Horizon 2" skin, where TIDAL2 can be integrated as a "search provider")

You can download the new version here: plugin.audio.tidal2-2.1.1.zip
For the Kodi Leia versions you have to look into the "until-leia" branch
Or if you use my TIDAL2 repository addon repository.tidal2-0.2.1.zip you will get the update automatically.

The TIDAL2 addon is still compatible with Kodi Krypton 17.6. Because this version has no inputstream addons and
also has no HLS playback functionality, it is impossible to play MPD with Kodi Krypton.

If you plan to use TIDAL2 with Krypton or only want to use HTTP streaming, you must select an "Automotive" device type as they use HTTP streaming for everything.

To get MPD streams you have to use a device types for "Tv" or "Fire Tv" (with or without Dolby Atmos) because they use the "Code-Link" login method.
All other "Default" and "Clear" device types use a different authentication method and can't be used for login (but maybe in the next version ;-)

This is a long text for a "small" release but I want to describe all the changes I made Wink

Have a lot of fun with TIDAL2 !

arneson
I have noticed since updating to the latest version that music will stop when my nvidia shield screen saver starts.  This didn't happen before.  Running Kodi 19.4 on Nvidia Shield Pro Android 9.  I can work around it (easiest way would be to disable screen saver when listening) but thought it worth mentioning at least.
(2022-09-10, 17:00)streamloader Wrote: [ -> ]I have noticed since updating to the latest version that music will stop when my nvidia shield screen saver starts.  This didn't happen before.  Running Kodi 19.4 on Nvidia Shield Pro Android 9.  I can work around it (easiest way would be to disable screen saver when listening) but thought it worth mentioning at least.
Try to deactivate the setting "Use inputstream.ffmpegdirect as default player". Then the playback mode should be as before.
(2022-09-10, 18:06)arneson Wrote: [ -> ]
(2022-09-10, 17:00)streamloader Wrote: [ -> ]I have noticed since updating to the latest version that music will stop when my nvidia shield screen saver starts.  This didn't happen before.  Running Kodi 19.4 on Nvidia Shield Pro Android 9.  I can work around it (easiest way would be to disable screen saver when listening) but thought it worth mentioning at least.
Try to deactivate the setting "Use inputstream.ffmpegdirect as default player". Then the playback mode should be as before.
Thanks - this does indeed resolve it Smile
Hey there,

Been using the addon for some time now, and had HiFi subscription, which i recently upgraded to HiFi Plus but cant seem to get it recognized by the addon. In "session Info" it still shows as just HiFi.
I tried logging out and then redid the device selection(TV Dolby Atmos) and the loging in, but looks like no cookie for me. Cant see any dolby atmos section in "explore", though if i add a dolby atmos album to favorites through my phone it will play just fine through Tidal2 addon.
Is this the intended behaviour, or am i missing some additional step that i need to take to make things right?
(2022-10-02, 20:52)ReaLx3m Wrote: [ -> ]Hey there,

Been using the addon for some time now, and had HiFi subscription, which i recently upgraded to HiFi Plus but cant seem to get it recognized by the addon. In "session Info" it still shows as just HiFi.
I tried logging out and then redid the device selection(TV Dolby Atmos) and the loging in, but looks like no cookie for me. Cant see any dolby atmos section in "explore", though if i add a dolby atmos album to favorites through my phone it will play just fine through Tidal2 addon.
Is this the intended behaviour, or am i missing some additional step that i need to take to make things right?
The page for Dolby Atmos is not in the content of the "explore" page if it is called from the TIDAL2 addon.

But you can add it manually as well as the "Masters" and "360" pages.
Open the main.py file in the TIDAL2 sources and add this 4 lines before the last line in the "page" function:

python:

@plugin.route('/page/<page_url>')
def page(page_url):
    json = session._map_request(path=unquote_plus(page_url), params={'locale': settings.locale, 'deviceType': 'BROWSER'}, ret='json')
    items = []
    for row in json['rows']:
        for m in row['modules']:
            if m['type'] == 'PAGE_LINKS':
                for p in m['pagedList']['items']:
                    items.append(DirectoryItem(p['title'], plugin.url_for(page, quote_plus(p['apiPath']))))
            elif m.get('pagedList', {}).get('dataApiPath', None):
                items.append(DirectoryItem(m['title'], plugin.url_for(page_data, quote_plus(m['pagedList']['dataApiPath']), m['type'])))
            elif m.get('showMore', None):
                items.append(DirectoryItem(m['title'], plugin.url_for(page, quote_plus(m['showMore']['apiPath']))))
            elif not m['type'] in ['TEXT_BLOCK', 'EXTURL']:
                if m['title']:
                    items.append(DirectoryItem(m['title'], plugin.url_for(module, page_url, quote_plus(repr(m['title'])), quote_plus(m['type']))))
                elif 'items' in m:
                    items += get_module_items(m)
                else:
                    items.append(DirectoryItem(m['type'], plugin.url_for(module_type, page_url, quote_plus(m['type']))))

    if page_url == quote_plus('pages/explore'):
        add_directory('Dolby Atmos', plugin.url_for(page, quote_plus('pages/dolby_atmos')))
        add_directory('Masters (MQA)', plugin.url_for(page, quote_plus('pages/masters')))
        add_directory('360', plugin.url_for(page, quote_plus('pages/360')))
    session.add_list_items(items, end=True)

Then you wll have access to this content.
I add this in the next version of TIDAL2.

arneson