CollectionManager icon indicating copy to clipboard operation
CollectionManager copied to clipboard

[FEATURE REQUEST] export collections to .osdb, merge collections with the same name via cli

Open Bestfast opened this issue 3 years ago • 6 comments

as title suggests, export collections to .osdb given set name (and if none are given, just export every collection in current working directory) and merge collections to existing osu!collection or output file (eg. collection.osdb)

The main focus of this request would be the one to share maps with ease using command line. Doing that people could share collections with the same name (eg. "DT.osdb") and merge it with other people collection in a community. The idea was:

  • People share their collection and send it to a webserver
  • Server receives the collections and merge it to the existing one
  • People can download the shared collection at any time from our webserver

I know this might be out of scope of the program, but it'd be very useful if it was possible to do so.

Bestfast avatar Jul 17 '22 22:07 Bestfast

just to clarify, there are 2 requests here?

  • exporting single collection from collection file(.db/.osdb) containing multiple collections inside to a separate file
  • merging of 2 collection files(.db/.osdb) and contacting maps contained if collection name conflicts occur

Piotrekol avatar Jul 18 '22 17:07 Piotrekol

Exactly, 2 requests. Both of them should be achievable by cli. Eg:

App.exe --input a.osdb b.osdb c.osdb --output merge.osdb

App.exe --input collections.osdb --extract

That's how ideally I'd like it to work, but you might have better ideas. Let me know if you need more infos, and obviously thanks in advance.

Bestfast avatar Jul 18 '22 18:07 Bestfast

also somewhat related are there any docs related to .osdb files? or any way to extract beatmap informations from a .osdb to an human readable text (be it database, plain text, json etc)?

Bestfast avatar Jul 18 '22 23:07 Bestfast

App.exe --input a.osdb b.osdb c.osdb --output merge.osdb

looks resoanable

App.exe --input collections.osdb --extract

not sure what this would end up doing? extracting all collections to separate .osdb files(or .db, depending on input)?

Instead, I would image something like App.exe --input collections.osdb --extract collectionName1 collectionName2 collectionName3 --output C:\someFolder and maybe another command that would just extract collection names from file App.exe --input collections.osdb --listNames, thoughts?


are there any docs related to .osdb files? or any way to extract beatmap informations from a .osdb to an human readable text (be it database, plain text, json etc)?

There are none at the moment. There's class responsible for reading and writing these if that helps - read method is a bit convoluted as it allows reading of pretty much all .osdb versions... as such if you end up analyzing it I'd suggest following WriteOsdb method for reading data.

Piotrekol avatar Jul 21 '22 18:07 Piotrekol

Instead, I would image something like App.exe --input collections.osdb --extract collectionName1 collectionName2 collectionName3 --output C:\someFolder and maybe another command that would just extract collection names from file App.exe --input collections.osdb --listNames, thoughts?

Yea this looks much better I'd say. I don't think an --extractAll is needed (and if it is, people can always process --listNames output with grep).

as such if you end up analyzing it I'd suggest following WriteOsdb method for reading data.

I see. I was thinking about processing .osdb files with Python (eg. extracting at least the beatmapID so that I can look it up on the website, and if possible more info like Title and diffname), but I guess I'll figure something out myself. I never worked with C#, so that will be a bit trivial. Thanks for the hint though!

Bestfast avatar Jul 21 '22 21:07 Bestfast

Exactly, 2 requests. Both of them should be achievable by cli. Eg:

App.exe --input a.osdb b.osdb c.osdb --output merge.osdb

App.exe --input collections.osdb --extract

That's how ideally I'd like it to work, but you might have better ideas. Let me know if you need more infos, and obviously thanks in advance.

On Mon, Jul 18, 2022, 7:46 PM Piotr Partyka @.***> wrote:

just to clarify, there are 2 requests here?

  • exporting single collection from collection file(.db/.osdb) containing multiple collections inside
  • merging of 2 collection files(.db/.osdb) and contacting maps contained if collection name conflicts occur

— Reply to this email directly, view it on GitHub https://github.com/Piotrekol/CollectionManager/issues/65#issuecomment-1187919989, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHN2X26IG4YIZBS7MPLUYODVUWJ65ANCNFSM532M37XQ . You are receiving this because you authored the thread.Message ID: @.***>

Bestfast avatar Oct 11 '22 09:10 Bestfast