#metabrainz

/

      • ruaok
        we will need to find a way to inform the user that their daily-jams for this week is playlist mbid XXX.
      • 2020-11-20 32507, 2020

      • alastairp
        so, we need a way of saying that a user is a bot (and therefore they can create playlists on behalf of someone else)
      • 2020-11-20 32520, 2020

      • ruaok
        or, we have a field that says "generated for user X" and then we can query that.
      • 2020-11-20 32541, 2020

      • ruaok
        yes, but I suspect that that is beyond the scope of this weekend.
      • 2020-11-20 32544, 2020

      • alastairp
        so the owner (db column) of a bot playlist would be the bot?
      • 2020-11-20 32502, 2020

      • ruaok
        yes
      • 2020-11-20 32513, 2020

      • alastairp
        I would say db column owner -> user it was made for; column `bot_data` -> jsonb of interesting information about the bot
      • 2020-11-20 32525, 2020

      • ruaok
        what do you think about the "created_for" field in the playlist?
      • 2020-11-20 32543, 2020

      • alastairp
        if you want owner to be the bot, then we definitely need created_for
      • 2020-11-20 32512, 2020

      • ruaok
        my reservation here is that I feel that bots should never meddle with users' playlists.
      • 2020-11-20 32517, 2020

      • ruaok
        there be dragons.
      • 2020-11-20 32535, 2020

      • alastairp
        mm, right. I see the problems there
      • 2020-11-20 32557, 2020

      • ruaok
        so I would prefer a created_for field in the playlist table.
      • 2020-11-20 32505, 2020

      • alastairp
        yeah, one thing that we didn't really consider is subscribing to a "playlist concept"
      • 2020-11-20 32533, 2020

      • alastairp
        I mean, as a user you want to say "I want to see a thing called daily jams, which updates each day"
      • 2020-11-20 32535, 2020

      • ruaok
        I was kinda working on the the concept that generated playlists are treated as immutable.
      • 2020-11-20 32549, 2020

      • alastairp
        yeah, agreed. so it's kind of like a view
      • 2020-11-20 32506, 2020

      • ruaok
        and that if we had a created_for field then we can query for the playlists that are available for the user currently.
      • 2020-11-20 32540, 2020

      • ruaok
        but I think that there is space for a "follow this playlist" concept -- likely more for user generated playlists that may evolve over time.
      • 2020-11-20 32552, 2020

      • ruaok
        but I feel that we're getting in the weeds on this for the hackday.
      • 2020-11-20 32501, 2020

      • ruaok
        not a core function needed right away.
      • 2020-11-20 32555, 2020

      • ruaok
        alastairp: > Should we allow items in the playlist to be identified by external ids (e.g. spotify) or only MBIDs? If only mbid, we’ll need to map the ids
      • 2020-11-20 32502, 2020

      • ruaok
        this is a big question.
      • 2020-11-20 32511, 2020

      • ruaok
        I am leaning towards playlists only with mbids.
      • 2020-11-20 32538, 2020

      • ruaok
        and I am saying this because the acrp nee arcm nee MB Mapping is something we need.
      • 2020-11-20 32548, 2020

      • ruaok
        and I am committed to working on it.
      • 2020-11-20 32532, 2020

      • ruaok
        and I'll finish debugging the typesense demo tonight so we can use it tomorrow.
      • 2020-11-20 32549, 2020

      • alastairp
        so that means that round-trip spotify->lb->spotify _may_ be buggy for some time
      • 2020-11-20 32537, 2020

      • ruaok
        well, given that we have no mb<->spotify mapping to use instead means yes, it may be buggy.
      • 2020-11-20 32503, 2020

      • ruaok
        after the MB mapping is a done project, I want to start mining spotify ids from our own DB>
      • 2020-11-20 32545, 2020

      • ruaok
        also, everything gets much more complicated if we allow other IDs.
      • 2020-11-20 32516, 2020

      • ruaok
        I feel that if that is a use case we need to support, it will become clear later to us. for right now I would like to leave it off.
      • 2020-11-20 32503, 2020

      • ruaok
        Mr_Monkey: you have "Implement JSPF parser"
      • 2020-11-20 32507, 2020

      • ruaok
        is that really needed?
      • 2020-11-20 32520, 2020

      • ruaok
        I was hoping the the python layer could do that.
      • 2020-11-20 32556, 2020

      • Mr_Monkey
        Parser might not be the right word, but we need to be aware of JSPF format
      • 2020-11-20 32503, 2020

      • _lucifer
        whilr we are it what about some integration with mb collections
      • 2020-11-20 32533, 2020

      • Mr_Monkey
        That'll be for a later date, but surely something we'll wanna do
      • 2020-11-20 32540, 2020

      • ruaok
        _lucifer: lets leave that for now. we have a lot on our plate for this weekend.
      • 2020-11-20 32501, 2020

      • ruaok
        alastairp: Mr_Monkey and I will be at the office tomorrow.
      • 2020-11-20 32509, 2020

      • ruaok
        I'll turn up here at 11ish, is my guess.
      • 2020-11-20 32522, 2020

      • alastairp
        OK, great, Mr_Monkey was mentioning that as an option
      • 2020-11-20 32537, 2020

      • ruaok
        it would be nice to have you hear for initial discussion. I have thousand question for you right now, but IRC makes things slower.
      • 2020-11-20 32506, 2020

      • alastairp
        yeah, I can definitely plan to be there 11ish
      • 2020-11-20 32510, 2020

      • ruaok
        great.
      • 2020-11-20 32537, 2020

      • ruaok
        I plan to make a prioritized list of python tasks and whenever someone needs a new task, pick from near the top and go.
      • 2020-11-20 32507, 2020

      • ruaok
        lets try and minimize jumping around from contexts, but I want to avoid one person getting stuck with a load of stuff that they may not finish.
      • 2020-11-20 32502, 2020

      • ruaok
        alastairp: spotify's API has a separate endpoint for get playlist and get playlist items.
      • 2020-11-20 32525, 2020

      • alastairp
        I was just looking at their endpoints for create too, you don't specify items
      • 2020-11-20 32541, 2020

      • alastairp
        are we setting a max number of items in a playlist?
      • 2020-11-20 32551, 2020

      • alastairp
        remember the whole ?inc vs browse thing in ws2
      • 2020-11-20 32503, 2020

      • ruaok
        I think we should set a max, yes.
      • 2020-11-20 32531, 2020

      • ruaok
        our APi is looking to be more fine-grained, which I am ok with. this translates to simple steps that should be easy to push via webscockets.
      • 2020-11-20 32517, 2020

      • ruaok
        alastairp: > (do we include the artist/release/recording name as it was at add stage, or do we lookup in musicbrainz when we need it?)
      • 2020-11-20 32528, 2020

      • ruaok
        I think we should only store MBIDs.
      • 2020-11-20 32523, 2020

      • alastairp
        ok. and will the endpoints also return just mbids?
      • 2020-11-20 32536, 2020

      • alastairp
        up to the displayer to resolve them
      • 2020-11-20 32549, 2020

      • ruaok
        for now, yes, I think.
      • 2020-11-20 32533, 2020

      • alastairp
        I guess we have our mbid lookuper in the ds hoster for this
      • 2020-11-20 32544, 2020

      • ruaok
        and the normal API too.
      • 2020-11-20 32511, 2020

      • alastairp
        we ran into this in the AB dataset editor
      • 2020-11-20 32518, 2020

      • alastairp
        it takes _ages_ to resolve a large list
      • 2020-11-20 32550, 2020

      • ruaok
        which is why I constructed the bono recording_mbid lookup as I did.
      • 2020-11-20 32508, 2020

      • ruaok
        hopefully playlists are going to be smaller than ML datasets.
      • 2020-11-20 32515, 2020

      • alastairp
        hopefully
      • 2020-11-20 32516, 2020

      • ruaok
        and resolvable in one call.
      • 2020-11-20 32544, 2020

      • alastairp
        for collaborative lists: should we say who added an item?
      • 2020-11-20 32558, 2020

      • ruaok
        Probably a good idea.
      • 2020-11-20 32505, 2020

      • ruaok
        git playlist blame ?
      • 2020-11-20 32515, 2020

      • ruaok
        heh, yes, please.
      • 2020-11-20 32539, 2020

      • ruaok
        "who's the fuck who added the HIV song after each legit song in this playlist?"
      • 2020-11-20 32542, 2020

      • ruaok
        should we be able to specify the playlist collaborators as part of the create call?
      • 2020-11-20 32512, 2020

      • ruaok
        that means either HTTP args or we extend the JSPF again.
      • 2020-11-20 32539, 2020

      • ruaok
        I would be more inclined to have an endpoint: "Set playlist collaborators: [user1, user2, ... ]
      • 2020-11-20 32542, 2020

      • ruaok
        +"
      • 2020-11-20 32510, 2020

      • ruaok
        alastairp: I'd be in favor of an additional endpoint /edit
      • 2020-11-20 32547, 2020

      • alastairp
        yeah, I'm just wondering about rest-pureness here
      • 2020-11-20 32552, 2020

      • alastairp
        /edit is fine by me
      • 2020-11-20 32553, 2020

      • zas
        ES on prince has expired licence
      • 2020-11-20 32512, 2020

      • zas
      • 2020-11-20 32516, 2020

      • zas
        normal?
      • 2020-11-20 32529, 2020

      • Mr_Monkey
        Hrm. Not normal.
      • 2020-11-20 32544, 2020

      • zas
        apparently stoppped functionning, got alerts
      • 2020-11-20 32548, 2020

      • Mr_Monkey
        Hang on, we never added a license that I can remember. I'll look into it
      • 2020-11-20 32549, 2020

      • alastairp
        ruaok: how rest-y do you want to be?
      • 2020-11-20 32503, 2020

      • alastairp
        POST /{id}/delete, or DELETE /{id} ?
      • 2020-11-20 32522, 2020

      • alastairp
        note that we're currently conflicted with "delete playlist" and "delete item" endpoints
      • 2020-11-20 32535, 2020

      • Mr_Monkey
        Looks like search is working on bookbrainz and test.bookbrainz
      • 2020-11-20 32544, 2020

      • ruaok
        alastairp: ah, good catch.
      • 2020-11-20 32556, 2020

      • ruaok
        Not super RESTy. I can skip using DELETE.
      • 2020-11-20 32500, 2020

      • ruaok
        but I don't feel strongly.
      • 2020-11-20 32507, 2020

      • alastairp
        fine by me
      • 2020-11-20 32512, 2020

      • zas
        it might be a false alrt
      • 2020-11-20 32515, 2020

      • Mr_Monkey
        What alerts are you getting zas ?
      • 2020-11-20 32518, 2020

      • ruaok
        I'm happy to change the delete playlist item delete endpoint.
      • 2020-11-20 32543, 2020

      • alastairp
        /1/playlist/{id}/{offset}/delete for delete track?
      • 2020-11-20 32504, 2020

      • ruaok
        I wonder if we should have a clear indication for the playlist item endpoints.
      • 2020-11-20 32522, 2020

      • ruaok
        /1/playlist/{id}/item/{offset}/delete
      • 2020-11-20 32523, 2020

      • ruaok
        ?
      • 2020-11-20 32554, 2020

      • ruaok
        /1/playlist/{id}/item/{offset}/move
      • 2020-11-20 32539, 2020

      • ruaok
        I'm more or less ambivalent about the DELETE thing. if you want to do it, fine.
      • 2020-11-20 32554, 2020

      • alastairp
        sorry, I was just pointing out that they do it too
      • 2020-11-20 32512, 2020

      • alastairp
        have /tracks/ to separate the playlist id and the track action
      • 2020-11-20 32524, 2020

      • ruaok
        sure on /tracks/
      • 2020-11-20 32533, 2020

      • ruaok
        track?
      • 2020-11-20 32535, 2020

      • ruaok
        singular?
      • 2020-11-20 32543, 2020

      • alastairp
        whereas you suggested /item/, which is fine too
      • 2020-11-20 32556, 2020

      • ruaok
        well, track is bad for us. we're adding recordings.
      • 2020-11-20 32508, 2020

      • alastairp
        I'm just thinking about bulk editing. if you want to delete 10 items, is that 10 requests?
      • 2020-11-20 32511, 2020

      • ruaok
        and recordings is too long, so item might be a decent compromise.
      • 2020-11-20 32524, 2020

      • alastairp
        spotify has a delete endpoint,and you specify items in the request body
      • 2020-11-20 32537, 2020

      • ruaok
        that's probably better.
      • 2020-11-20 32511, 2020

      • ruaok
        how do we deal with conflicts in a batch delete?
      • 2020-11-20 32559, 2020

      • ruaok
        if we are specifying index, mbid as a key for deletion, what if you ask to remove 5 tracks and one is no longer in the list or at the index passed in the call?
      • 2020-11-20 32544, 2020

      • alastairp
        with spotify you have to specify (id, offset) pairs
      • 2020-11-20 32559, 2020

      • ruaok
        I'm suggesting we do that same.
      • 2020-11-20 32502, 2020

      • alastairp
        then you can just 412 Precondition Failed
      • 2020-11-20 32521, 2020

      • ruaok
        do you fail all edits then if even one precondition is failed?
      • 2020-11-20 32527, 2020

      • alastairp
        yes
      • 2020-11-20 32532, 2020

      • ruaok
        make sense.
      • 2020-11-20 32506, 2020

      • ruaok
        should move get the same treatment as delete, in that we pass a list of (source mbid, index, destination index)?
      • 2020-11-20 32513, 2020

      • alastairp
        I think that makes sense
      • 2020-11-20 32532, 2020

      • alastairp
        though keep in mind what we were discussing about insertion in collaborative playlists
      • 2020-11-20 32545, 2020

      • alastairp
        and we kind of decided to just "do what they say" and hope for the best
      • 2020-11-20 32506, 2020

      • alastairp
        what about moving or deleteing in a collaborative list? should we have these precondition checks?
      • 2020-11-20 32541, 2020

      • ruaok
        good point. the 412 is in direct conflict with that.
      • 2020-11-20 32507, 2020

      • ruaok
        what if we soften it up and say "carry out what you can, but report failures"?
      • 2020-11-20 32555, 2020

      • ruaok
        202 Accepted? its not quite what we want, but may be ok.
      • 2020-11-20 32512, 2020

      • ruaok
        200 if it was perfect, 202 is some parts failed. 400 is all parts failed?
      • 2020-11-20 32518, 2020

      • alastairp
        mmm, that's a good question
      • 2020-11-20 32539, 2020

      • alastairp
        I guess we could just do 200 anyway, maybe report statues in the response?
      • 2020-11-20 32547, 2020

      • alastairp
        > In a POST request, the response will contain an entity describing or containing the result of the action.
      • 2020-11-20 32515, 2020

      • ruaok
        "Move one or more recordings in the playlist, specifying mbids and indices to indicate the recordings to move, and indices where to move the recordings. If some parts of the request were successful return 200 and if some parts where unsuccessful, report the unsuccessful moves in the error message."
      • 2020-11-20 32550, 2020

      • ruaok
        ok, item move/delete updated. heading home, but will be back online in less than an hour.
      • 2020-11-20 32501, 2020

      • sumedh has quit
      • 2020-11-20 32551, 2020

      • BrainzGit
        [musicbrainz-server] mwiencek opened pull request #1803 (master…mbs-11241): MBS-11241: Seed annotation, edit_note with textarea https://github.com/metabrainz/musicbrainz-server/…
      • 2020-11-20 32542, 2020

      • ruaok
        on a modern linux system, how does one add domains to the DNS search path? It used to be laughably simple, but now? And the correct answer seems to change every two week. halp?
      • 2020-11-20 32551, 2020

      • ruaok
        zas: you must know....
      • 2020-11-20 32510, 2020

      • zas
        well, it depends ;)
      • 2020-11-20 32516, 2020

      • ruaok
        shit.
      • 2020-11-20 32559, 2020

      • zas
      • 2020-11-20 32508, 2020

      • zas
        look for Domains=
      • 2020-11-20 32511, 2020

      • zas
        service systemd-resolved restart is likely needed after change
      • 2020-11-20 32547, 2020

      • zas
        now it depends about system and recent....
      • 2020-11-20 32522, 2020

      • zas
        network-wise things are changing a lot between Ubuntu-based main versions
      • 2020-11-20 32510, 2020

      • ruaok
        wooo -- that was easy. why was that not googleable?
      • 2020-11-20 32519, 2020

      • ruaok
        thanksfully it was zasable. <3
      • 2020-11-20 32549, 2020

      • zas
        ;)
      • 2020-11-20 32533, 2020

      • outsidecontext
        The listenbrainz plugin for Funkwhale has been merged :)
      • 2020-11-20 32557, 2020

      • ruaok
        that was fast. sweet!