funkwhale merge requestshttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests2024-03-27T11:07:48Zhttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2773draft : multi-artist-backend-support2024-03-27T11:07:48Zpetitminiondraft : multi-artist-backend-supportCloses #1568Closes #1568https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2710backend of "III-5 Quality filter for content"2024-02-29T13:14:46Zpetitminionbackend of "III-5 Quality filter for content"Related #1469Related #14691.5.0https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2705Draft : Quality filters backend2024-01-30T18:55:02ZpetitminionDraft : Quality filters backendCloses #2275Closes #2275https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2658implement listening and favorite sync with listenbrainz2024-02-15T17:24:10Zpetitminionimplement listening and favorite sync with listenbrainzCloses #2079Closes #2079https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2651Add cli command to prune non mbid content from db (#2083)2024-02-06T11:52:33ZpetitminionAdd cli command to prune non mbid content from db (#2083)Closes #2083Closes #20831.5.0petitminionpetitminionhttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2641Update COC in nodeinfo spec2023-11-24T13:52:41ZCiarĂ¡n Ainsworthsporiff@funkwhale.audioUpdate COC in nodeinfo specRelated to #2085Related to #20851.4.0Georg KrauseMargeGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2607Only allow MusicBrainz tagged file on a pod (#2083)2023-11-19T14:37:55ZpetitminionOnly allow MusicBrainz tagged file on a pod (#2083)Closes #2083Closes #20831.4.0petitminionMargepetitminionhttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2604Resolve "IV - 5 New version of the nodeinfo endpoint (nodeinfo 2.1)"2023-11-23T10:57:51ZGeorg KrauseResolve "IV - 5 New version of the nodeinfo endpoint (nodeinfo 2.1)"Closes #2085Closes #20851.4.0Georg KrauseMargeGeorg Krausehttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2528Draft add backend support for Third Party Stream2023-12-12T13:34:27ZpetitminionDraft add backend support for Third Party Streampart of #639
is dependent of https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2425part of #639
is dependent of https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2425https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2425Create a testing environment in production for ListenBrainz recommendation en...2023-09-12T16:09:38ZpetitminionCreate a testing environment in production for ListenBrainz recommendation engine (troi-recommendation-playground)There is various commits implementing various things :
- a task to match fw tracks to mb
- a new radio system for troi patches (base on the config attribute of the radio model, and following the logic of the radios filters)
- a modific...There is various commits implementing various things :
- a task to match fw tracks to mb
- a new radio system for troi patches (base on the config attribute of the radio model, and following the logic of the radios filters)
- a modification of the lb pluging to allow to add a user name. A way to retreive the user name for the radio generation
- cache the queryset in redis. (if this proove efficient I will implement this for all radio by changing direction the SessionRadio class
- use https://github.com/metabrainz/listenbrainz-matching-tools for better matching (see https://forum.funkwhale.audio/d/286-troi-recommendation-system/69 )
Note : The goal of this mr is to implement only the backend solution of this implementation to be able to test if this work with the music tracks of the fw network or not.
To test :
`curl --user y:y -H "Content-Type: application/json" -X POST "https://node1.funkwhale.test/api/v1/radios/sessions" -d '{"radio_type":"troi_multiple", "config":"{ \"patch\":\"new_jams\", \"user_name\":\"lb_user_name\"}"}'`
`curl --user y:y -H "Content-Type: application/json" -X POST "https://node1.funkwhale.test/api/v1/radios/tracks" -d '{"session": $session_number}'`
note :
the user_name can be set in the listenbrainz pluging. If set in pluging, priority is given to the it and not to the http request
part of #1861API v2petitminionpetitminionhttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1806Draft: Allowing to follow entire instances / domains2024-01-23T14:15:50ZpetitminionDraft: Allowing to follow entire instances / domainsThis is ready for review before launching tests on the real internet between devs.
This need API V2
To test :
```
curl --user y:y -H "Content-Type: application/json" -X POST "https://node1.funkwhale.test/api/v1/federation/follows/do...This is ready for review before launching tests on the real internet between devs.
This need API V2
To test :
```
curl --user y:y -H "Content-Type: application/json" -X POST "https://node1.funkwhale.test/api/v1/federation/follows/domain" -d '{"target":"node2.funkwhale.test"}'
UUID=$(curl --user y:y -H "Content-Type: application/json" "https://node1.funkwhale.test/api/v1/federation/follows/domain" | jq -r '.results[0].uuid')
curl --user y:y -H "Content-Type: application/json" -X DELETE "https://node1.funkwhale.test/api/v1/federation/follows/domain/$UUID"
```
part of funkwhale&7
close #1809
## Technical description
I added a new DomainFollow model and the associated views. It store a relation to an actor and a domain.
I created activities : when a DomainFollow is created, the actor associated will follow all the public remote libraries. If a DomainFollow is deleted, all the libraryFollow associated with this follow will be deleted. This relation is created thanks to the new `context_follow` attribute of the `LibraryFollow` model. If it's set to `Domain` then the library follow is related to the domaiFollow and its delete with the DomainFollow deletion.
to do :
- [x] api_serializer.DomainFollowSerializer and federation.DomainFollow
- [x] api_views.DomainFollowViewSet
- [x] bulk follow libraries
- [x] create routes and activities to follow a domain
- [x] create routes and activities to inform followers when a new library is created
- [x] delete DomainFollow
- [x] tests
- [x] dispatch activities for libraries update to the domain followers, without creating libraries follows in remote host
- [x] if library is updated from private to public, activity need to be send to domain follow
- [ ] if library is update from public to private, content is still available in remote instance.. (probably not related to this mr)
- [ ] add test to check if remote instance has its api open. If not cancel the domain follow request
- [x] Filter discovery and domain follows to funkwhale instance only ! (127 fw instances discovered out of 1030 fediverses instances bang bang o/)
- [ ] add test for discover and follow all domain tasks
front ( to do in another mr ? ) :
- [ ] reject / accept domain follow manually ? Actually can be done through mrf policies? Need to be done in the frontend ? post to domainfollow will trigger update_follow. If its not implemented in the front we can delete accpet and reject methods of domainfollow view.
- [ ] Check if update_follow is Triggered when the mrf policies change : new test ?
- [ ] Check the button Domain follow. I only pasted the libray follow button and changed libray to domain ^^'
- [ ] for an actor, if the library is followed after the domain is follow, an error will occur (already folowed) -> Allow the frontend to update the follow to change `follow_context` from `Domain` to `Library`
Questions :
- "Users could choose a new privacy setting for Libraries: "Share on everyone on this instance, and accept to be shared by the Instance"" do we want this from #762
- For now every actor can follow a domain : limit to moderators ?
- implement a domain scan like LibraryScan ? Can be usefull if we do not receive an activity from remote.petitminionpetitminion