GithubHelp home page GithubHelp logo

locutus's People

Contributors

canidae avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

klette

locutus's Issues

support more file formats

currently we only support some few formats (mp3, ogg, flac, mpc), but taglib got support for several more formats.
we also need a better way to detect the format than just looking at extension

fix for files matched to tracks that disappear from musicbrainz

musicbrainz occasionally remove albums (ie. merging two albums makes one disappear along with the unique musicbrainz ids), which leaves us with a sorted file that got no valid link to a track in the musicbrainz database.
most likely this is just to remove the musicbrainz ids (only from the database, not the file) and do a metadata search which hopefully should come up with a valid match.

impossible to correct wrongly matched file

currently it's not possible from the user interface to correct a file that's wrongly matched.
this is because of "track_id" not being set to null when we change eg. musicbrainz ids.

"no group duplicates" acts funny when manually matching

when we manually match tracks, but don't "force save" them they will disappear from the "matching" page and they will not be sorted.
this is probably a problem when we got "only save complete albums" and manually match every track in an incomplete album too.
this could be solved by "where file.filename like '<input_directory>%', but we'd still have problems with files in the output_directory that somehow lost their sortedness (album deleted from musicbrainz for some reason, or user moved file to output_directory manually)

support for sqlite

some people may prefer just a simple database instead of setting up postgres

use metatrack_cache_lifetime

currently we check every file every time, that's quite an overkill. we're not using metatrack_cache_lifetime, and the idea behind that was to not check files which haven't been changed in x months...
probably need to think a bit around how to solve this

java ui

while web gui is good for samfundet, it's not so good for average joe (come on, set up apache, perl, template toolkit, etc for a simple gui?).
let's throw together something in java that can be used on any computer!

improve webservice queries

in the tracknum field, only use numbers, text is useless there.
when fetching data from filename, exclude input/output/duplicate directory and the extension, but use the rest. currently we only use the filename, we may lose a great deal of information here

show unmatched files in output directory

a file may lose connection to a track (ie. file was merged/deleted in musicbrainz). when that happens it'll remain in the output directory and the user probably want to know about it

replace commoncpp with tinyxml and libcurl

tinyxml probably gives most of what i need for parsing xml. libcurl should give me what i need for communicating with the servers. tinyxml got zlib license, libcurl got mit license.

support multiple "tags" as genre

currently we only use the most popular tag as genre. we should make this user customizable, for example two new settings:

  • best tags
  • all tags above

make locutus a daemon

it's about time we make locutus run on its own. we must however get the bug with lookups timing out fixed first.
other things that can be fixed in the meantime:

  • signals, we need to shut it down when it's signaled to do so.
  • force run, it should be possible for the user to set a variable in database that cause locutus to run immediately.

simplify

we need to simplify this code. there's a lot of legacy code that serves no purpose other than confusing the reader.
several classes can probably be simplified too, ie. Track, Artist, Album, Comparison, etc (no need for a cpp-file)

don't combine when we don't demand complete albums

it is pointless combining groups if we don't demand complete albums, because all files will be looked up anyways. the problem here is that the class that combines groups (Locutus) doesn't know whether we demand complete albums or not. possible solutions:

  • document that it's pointless and let the user sort it out
  • make the variable that denotes whether we demand complete albums public in Matcher or make a getter
  • fetch the setting in Locutus as well as Matcher

we might want to look more into this. currently we won't lookup files if we've compared the file with an album and the score is high enough when we demand complete albums. if we don't demand complete albums then we'll always look up the file.
is this sane? i think it is, the "only save complete albums" thingy sort of is the difference between "album matching" and "single file matching". it's possible this should be documented well somehow.

set a max size for groups

we should add a user-customizable "max_group_size" setting that simply ignores groups that are too large.
too large groups cause heavy memory and cpu usage (think of a group with 500 files from 500 different albums. it may load 500 albums (or lots more) which it needs to fuzzy match every file in the group with).
set the default value to 250 should be fairly safe. after all, we've been working on groups with more than 1000 random files.

fix views

sigh

the views are messy. first of all, there's a bunch of them, second their names are not very helpful and last, they pull out much more information than necessary.

sane default settings

the settings page is fairly difficult for the average user, and currently the settings is somewhere in the middle of "good for album based music archive" and "good for single track based archive". i think it's much better adjusting the settings to an album based archive. this is what most people got (or should have).

constants for settings

currently we're using the name of the keys multiple times in Settings.java, this should rather be some public static final Strings

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.