Exploring the Resonate API with Django-Neomodel on Aura

Hey all,

I prepared this blog post about my use of the Resonate (v2) API to build “resotrack”.

It’s for a technical audience (specifically Django developers interested in using Neo4j) but if anyone has any red flags or wants me to add / remove anything, comments are open.

https://docs.google.com/document/d/16h729GxXvX3P5bRIwOb_IJsJYZ1OYbybqQHUT7a8WaQ/edit#

update: it’s published
update: someone else going through the resonate API (youtube)

4 Likes

@angus - for next steps on this I wanted to do playlist generation - like “< tag > across the globe” in which it would explore (for example) punk music from different countries.

Are there any dos and don’ts when approaching this? I don’t want to break anything.

From what I’ve figured out so far this is how playlist creation works:

  • user creates playlist with a title and cover image
  • user can edit the title, blurb, and privacy setting of playlist they own
  • user can add tracks to a playlist they own
  • user can remove tracks from a playlist they own
1 Like

Hi @boopboop.

Yes that looks good. Playlists may be private or published too.

@auggod designed and wrote the code around playlisting, based on the generic track_group and track_group_items stucture that is also used for releases. Here’s the structure (caution…may be out of date… check all this with @auggod and with @angus for plans and priorities.

track_groups

Field Type Null
id char(36) NO
cover char(36) YES
title varchar(255) NO
type enum(‘lp’,‘ep’,‘single’,‘playlist’,‘compilation’,‘collection’) YES
about text YES
private tinyint(1) NO
display_artist varchar(255) YES
creator_id int(11) YES
composers text YES
performers text YES
tags text YES
release_date date YES
download tinyint(1) YES
updated_at datetime NO
created_at datetime NO
featured tinyint(1) YES

track_group_items

Field Type Null
id char(36) NO
index int(11) NO
track_group_id char(36) YES
track_id int(11) YES
track_performers varchar(255) YES
track_composers varchar(255) YES
updated_at datetime NO
created_at datetime NO

I’m sure @angus and @auggod are better placed to discuss plans an priorities for playlisting / search APIs… see the current Swagger UI
…and https://github.com/resonatecoop/tracks-api/blob/main/src/schemas/trackgroup.js

BTW Do you think we should distinguish between ‘generated’ and ‘manually’ created playlists?

3 Likes

@boopboop Awesome work.

If I were to give any feedback, I’d say I’d love to hear more about your motivations for working on it and some of the process of building it, i.e. more of the “narrative” arround it.

Also, we’re thinking about launching a blog and this would be a good candidate for inclusion in some form (“syndicated” perhaps). I can’t make any promises on that front, but something to keep in mind (for both of us) for a few months down the track.

As @Nick_M mentions, I would defer to @auggod on the specific playlist logic.

3 Likes

update → it’s published

3 Likes

This is GREAT!! Thanks so much. Appreciate your thoughts on improving our track tagging?

2 Likes

not sure if this is a question, but if users could add / edit / delete the tags on their own playlists, and search playlists by tag it would be great.

1 Like

I was thinking of the inconsistency of track tagging by the artists rather than the tagging of playlists by playlist curators… Perhaps we could fill in some of the gaps by looking at the way the tracks have been tagged by the same artist on other platforms?

I think playlist tags can already be managed by the playlist owners?

How do I tag my playlist?

I thought there was a ‘tags’ attribute on track_group? … Sorry if that’s mistaken … or unused?

there is (this is how albums get their tags) but there’s no way in the UI for me to add / remove a tag from my playlists.

This work is amazing, @boopboop!

On the current version of stream.resonate.coop there is no way for a user to create genre tags for a playlist they have made.

However, since playlists are “trackgroups” in the same way that as releases are on the player, I imagine that giving a user the ability to add tags to their playlist would not involve many adjustments.

Currently a tag can only be added to a release by the release’s owner. This is done at dash.resonate.coop – at this point only by workers using admin accounts who upload releases on behalf of artists.

The reason why I think setting up this user playlist tagging feature should be straightforward is because dash.resonate.coop and stream.resonate.coop are already so interlinked.

For example, if I log in at dash.resonate.coop, I can use that interface to update the artwork for a playlist I’ve made – since the interface presents my playlist I made as an “album” owned by me.

The background code may be more complicated than I assume, but it at least appears that giving users the ability to tag a playlist they made is mostly about adjusting and extending out features that already exist on dash.resonate.coop to stream.resonate.coop, rather than having to build everything from scratch.

@boopboop We should meet up sometime and I can show you around dash.resonate.coop; it’s the other piece of this puzzle. The interface appears different depending on whether you have a listener account, admin account, or artist account. Last I checked, the site wasn’t usable for artist accounts, but if you log in with your listener account you may be able to mess around with your playlists in new ways (although I don’t think you can use that interface to add tags to playlists).

All of the playlists here with the same background (grass with red dress) were made by me via the API. Since there seemed to be no way to delete playlists and I didn’t want to break anything, I didn’t continue with trying to test (since I’d load up my account with fake playlists that I wouldn’t be able to get rid of).

I can log into dash.resonate.coop and edit my test playlists to add tags, check it out (edit: oops I deleted this trackgroup):

https://beta.stream.resonate.coop/u/17929/playlist/given-signs-2

Screen Shot 2021-08-13 at 9.00.52 PM

I can’t search by that tag I just added (I picked one unlikely to be used by any other trackgroup)

https://beta.stream.resonate.coop/tag?term=residential

@auggod would know the next steps from here to explore this. I think that if users had the ability to tag their own playlists, it would be great for music exploration on the player – especially plugged into what you’ve made with Resotrack!

@Hakanto playlist tagging is in the player (and tracks api) backlog, right?

update - someone else exploring the Resonate API (youtube)

3 Likes

I’ve long wished to be able to choose whose tags to follow.

Let everybody tag, but I control the filter so I can ignore people whose tagging doesn’t appeal to me.

By the way @boopboop congrats on the work. I’m seeing it blow up.

I’ve added playlist tagging to this user story: