Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New "Genre" column + "Export playlist per each genre" #32

Open
porg opened this issue Jun 23, 2024 · 3 comments
Open

New "Genre" column + "Export playlist per each genre" #32

porg opened this issue Jun 23, 2024 · 3 comments

Comments

@porg
Copy link

porg commented Jun 23, 2024

Feature request

General idea

  • You can assign one or multiple genres per each game, e.g. "Shooter" and "Aircraft".
  • When exporting the app creates one playlist per each genre, which contains all the matching games. So in our example a playlist "Shooter" and a playlist "Aircraft" and if you choose the combined export option "Genre - Subgenre" too, then also a playlist "Shooter - Aircraft".

Possibilities in detail

  • You manage a single master playlist (inventory) and per each game can define "Genre(s)" in a new column.
  • You either use that master playlist once or you save it locally and at a later time reload it into the editor, then complete/refine, and then re-export the genre playlists from it.
    • Even if filepaths change, you can easily changed them in batch later.
  • From this single master playlist you can export various combinations of "genre / subgenre / platform" combinations/permutations to satisfy various playlist curation needs.
    • Be it simply "Main Genre" or "Main Genre - Subgenre" or even "System - Main Genre" or "Main Genre - System".

Proposal: Layout change

  • The main editor UI gets a new column "Genre(s)".
  • By default this column remains empty.
    • Behavior for users not interacting with this column will stay exactly as-is.
    • But pro users get a new capability when editing the genre values.
  • It behaves for editing like all other columns, so when selecting a single or multiple items and you click "Edit content" the "editing dialog" opens and there you have a "Genre(s)" field, which you can edit individually or in batch for a multi selection.
  • Its values are TAB or comma separated (I prefer TAB as the macOS Finder copies its tags as a TAB separated list, handy for copy/paste)

User Story + App behavior and interactions

  1. The user drag'n'drops games from platform "smd" onto the editor:
Name Filename Core Genre(s) CRC
A a.zip ✔︎
B b.zip ✔︎
  1. The user selects all "SMD" games and then in batch changes their common root filepath:
Name Filename Core Genre(s) CRC
A /roms/smd/a.zip ✔︎
B /roms/smd/b.zip ✔︎
  1. The user has drag'n'dropped multiple "SNES" games and then assigned them their common root filepath:
Name Filename Core Genre(s) CRC
A /roms/smd/a.zip ✔︎
B /roms/smd/b.zip ✔︎
C /roms/snes/c.zip ✔︎
D /roms/snes/d.zip ✔︎
  1. The user has assigned genres to all games:
Name Filename Core Genre(s) CRC
A /roms/smd/a.zip Puzzle ✔︎
B /roms/smd/b.zip Jump'n'Run, Multiplayer-2 ✔︎
C /roms/snes/c.zip Shooter, Aircraft ✔︎
D /roms/snes/d.zip Jump'n'Run, Adult ✔︎
  • The tab or comma separated values within the "Genre(s)" column preserve their tag order ("weighted" from most to least significant one). Tag order preservation is crucial for certain export patterns like "Main Genre - Sub Genre".
  1. The user clicks the command Export playlist(s).
  • As long as the column "Genre(s)" was empty that command is shown in singular only Export playlist and behaves as-is.
  • As soon as the column "Genre(s)" is filled somewhere, then that command label has changed to Export playlist(s) to indicate the extra functionality, and the following export dialog differs in scope accordingly.
  1. The "export dialog" for Export playlist(s) looks a follows:
  Name of main playlist:
    AAA - All Games.lpl

  Core Path: [ Windows RetroArch within LaunchBox ▾ ]
    C:\\LaunchBox\\…

☐ Export playlist variants / combos:
   [ Main Genre  ▾ ]

   Resulting playlist(s): 3 in total
     Games  Playlist-Name ▾
         2  Jump'n'Run
         1  Puzzle
         1  Shooter

Explanations / Remarks on the dialog

  • Name of main playlist:
    • AAA - All Games.lpl by default if playlist was freshly generated,
    • or the existing filename if an .LDL file was opened/imported in the editor.
  • ☐ Export playlist variants / combos — By default is off
    • The playlist pattern selector (dropdown menu) is visible but greyed out.
    • The Resulting playlist(s) section is also greyed out but nevertheless generated according to the default pattern, to convey the idea of that optional feature to the user.
  • When enabling ☑︎ Export playlist variants / combos is activated, the pattern selector gets activated…
    • … offering these choices:
      • Genre — Creates a playlist per each encountered genre, no matter of its position/depth in the assignment.
      • Main Genre
      • Main Genre - Sub Genre
      • Main Genre with as many sub genres as there are
      • Main Genre - System Longname
      • Main Genre - SYS
      • System Longname - Main Genre
      • SYS - Main Genre
    • … and section Resulting playlist(s) updates accordingly.
      • The preview is a simple sort-able table with the columns Playlist-Name (by default sorted alphabetically) and Games (count of games in that playlist, click into the column header to sort by this to observe which playlists are smaller/larger). That table is scrollable and has a max-height of 4.5 lines (cutoff to indicate "scrollable content" to the user).
      • If the choice yields a high number of playlists, then the user may be careful.
      • The app may add a limit, e.g. 220 in total — ❗️ Export limited to 25 playlists! Choose a playlist name pattern which results in fewer playlists or reduce the number of entries in the "Genre(s)" column.
  • Download/Delivery: When clicking "Export playlists" in that dialog, if downloading multiple .LPL files consecutively is not feasible instead pack them into All-Playlists.zip and download this archive which contain all the playlists. Many browsers anyhow automatically decompress ZIP archives (e.g. Safari).
@porg
Copy link
Author

porg commented Jun 30, 2024

@marcrobledo how do you like my proposal?

@marcrobledo
Copy link
Owner

While they are good ideas, I'm afraid I have no time currently to work on this project :-(

@porg
Copy link
Author

porg commented Jul 6, 2024

Well, what about a MVP of the idea?

  • Only a Genre column (= singular = only 1 genre per item) + a button Export genre playlists into ZIP.
  • Everything which is complex is left out: Handling of multiple genres in the Genre(s) column, the various new UI controls, the different genre/system export formats.
  • This would already help big time!

Changes to be done

  • Add "Genre" column to UI which has string editing like "Path" column (no new functionality needed!)
  • If "Genre" column is not entirely empty offer button "Export genre playlists into ZIP" in UI.
  • Export loop:
    • Built list/array from the "Genre" column values, sort alphabetically (like Unix sort), filter out duplicates (like Unix uniq) → We now have all genres that exist in that table.
    • Export one Playlist per genre (hardcoded to $current-genre-name.lpl)
    • Pack into playlists.zip and download

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants