Ideas dump
This issue is a dump of my ideas / recommendations with a hopefully extensive explanation.
Questions:
-
lib.taglib253: Why are we capping duration and bitrate? - rework Trackhash to only hash audio stream and not metadata. <- also removes multiples hashes on same file / remove filename parsing or go with strict naming convention <- first user defined format then static format
- refactor UserConfig for multiprocessing save
- Dev documentation
- job class Idea?
- salt and pepper to password hash.
- Should we really allow all-user to update songs on there own?
Pending:
remove filename extractions.
swingmusic currently parses filenames in any arbitrary format.
So different user could get different metadata from the same file.
This could cause high storage as every user has to maintain there own trackstore.
Additionally parsing metadata from filenames is highly error prone.
Most music players/server also do not support filename metadata because of its high error prone.
rework plugin support:
There are currently no user provided plugins.
Every plugin has to be hardcoded into swingmusic.
Which would actually make it into a feature more than a real plugin.
Proposal:
- enable namespace plugin support.
- enable used provided plugins.
Disadvantages:
- the code would need to be restructured quite a bit. This would also introduce new possibility of errors.
- Currently used plugins would also affected by this.
Advantages:
- user can provide plugins on there own.
- we can split development into smaller self contained chunks. With the advantage of splitting work
- User can provide feature until they are implemented
User could provide own get_lyrics plugins.
This would also enable that this project can be used as more that music.
My dream would be to have something like yt-dlp, mihon and mopidy where everyone has the base system and can install functions as wanted.
Use meta tags in lyrics to get artist, title, length:
Right now only the lyrics text lines get parsed and are used,
but we could also use the meta tag artist and track to obtain information about the track.
I already did a pull request #325 where I parse the meta tags.
We just need to use the information.
Split swingmusic server and UI version
Currently the server and web-UI have the same version number but they can/are independently used and develop. We could extend this to allow serving user provided web-UIs. Where every user can select the web-UI which suits him/her best.
transcode unsupported media:
Possible fix for #273 .
Possible command ffmpeg -n -i $INFILE -c:v copy -c:s copy -c:d copy -c:a libmp3lame -q:a 4 -map_metadata 0 -map_metadata 0:s:0 -id3v2_version 3 "$OUTFILE.mp3"
When a client reports that it cannot play a codec, request a transcoded version of the song.
This could happen on demand or automatically with known unsupported codecs.
support SubSonic:
3/5 media server provide a SubSonic api.
We could be one of them.
Is click still needed?
When we replace logging. We no longer need a cross-platform and unique way of informing the user.
we could replace it with argparse or anything else, which supports grouping args.
Support for SubSonic would be really nice 👍
Support for SubSonic would be really nice 👍
There is a compatibility layer which provides a SubSonic api. You can check it out here