Code Monkey home page Code Monkey logo

mp3-report's People

Contributors

kaethorn avatar

Stargazers

 avatar

Watchers

 avatar  avatar

mp3-report's Issues

Check white spaces

New checks:

  • Trailing or leading spaces
  • Any non-space white spaces
  • Multiple consecutive spaces

They should apply to title, album, artist & albumartist.

Distinct track numbers

Mutli disc albums should be flat and track numbers and totals should be across all discs. Disc numbers can still be set.

Handle same album names by different artists

Artist A - My Album

and

Arist B - My Album

will hash to the same album and produce incomplete_album errors.

Either hash by directory instead of album or hash by a pair of album and artist (which will probably interfere with various artist handling).

More flexible disc collection checks

Enhance disc collection validation (e.g. the structure and sequence of the disc tag).

Allow:

  • 1/3
  • 04/12
  • 10/12

Disallow:

  • 02/04 (superflous padding)
  • 100/200 (there is no such thing)
  • 1/02 (inconsistent padding)
  • 2/12 (inconsistent padding)
  • 02/4 (inconsistent padding)

Cover image

Make sure each folder has one properly names cover image

File names

Make sure file names adhere to a convention

Incomplete track/disc sequences for mixed artist albums

Probably need to refactor meta data collection first in order to solve this.

So, here's an attempt to plan required structures:

Groups of checks

Tag information

Genres

Checks the relation between artists and their genre

GenreArtist

  1. multiple_artist_genres: not more than one genre per artist

Albums

Checks all files in relation to their album

AlbumFile

  1. Track inconsistencies incomplete_album
  2. Multi-disc inconsistencies incomplete_collection
  3. ID3v1 to ID3v2 truncation truncation_warning
  4. Inconsistent year
  5. Inconsistent album art (compare checksums)

Files

Errors for a particular File are assigned to its Album or Directory.

FileFrame

  1. Missing frames missing_*
  2. Invalid encoding mp3_invalid_encoding
  3. Obsolete frame version (ID3v1 or ID3v2.3) mp3_id3v1, mp3_id3v2_obsolete
  4. Invalid art type/size/count mp3_invalid_art_type, mp3_invalid_art_size, mp3_multiple_art
  5. Invalid format (regex for track/disc frames) mp3_invalid_track, mp3_invalid_disc

File system

Each Album belongs to a Directory.

AlbumDirectory

  1. Make sure a directory containing an album also contains cover art fs_missing_cover
  2. Albums should be in exactly one directory fs_multiple_album_directories
  3. Parent directories of album directories must resemble the album-artist frame fs_invalid_artist_directory

Collection of required information

File-System

  1. Find a media file and store in a map: DirectoryFile.
  2. For each Directory, look for file system cover art fs_missing_cover
  3. Read tag information for each Files in 1. and attach a map: DirectoryFileTag
  4. Missing frames missing_*
  5. Invalid encoding mp3_invalid_encoding
  6. Obsolete frame version (ID3v1 or ID3v2.3) mp3_id3v1, mp3_id3v2_obsolete
  7. Invalid art type/size/count mp3_invalid_art_type, mp3_invalid_art_size, mp3_multiple_art
  8. Invalid format (regex for track/disc frames) mp3_invalid_track, mp3_invalid_disc

Tag-Tree

  1. Map GenreArtist
  2. Map GenreArtistAlbum
  3. Map GenreArtistAlbumSong
  4. Map GenreArtistAlbumSongTag

Simplification

GenreArtistAlbumSongTag
|
DirectoryFile

or better:

GenreArtistAlbum/DirectorySong/FileTag

Requirements

Each report must at least specify the directory so the user knows where to look for the error.

  • Errors found while populating File-System either have Directory or File, so those are covered.
  • Errors between Genre and Artist can occur across multiple Album/Directorys and need to report using the first encountered.
  • Errors between Album and Song each have a corresponding file system node attached (Directory and File).

Various artists

The following relation does not hold:

ArtistAlbum/Directory

because

Album/DirectoryArtist

Solution

So we actually need two trees forming a single one:

Album/DirectorySong/FileTag
Album/DirectoryGenreArtist

This way the corresponding Directory is always accessible. The two branches do not share checks.

Detect albums/directory inconsistencies

Detect multiple albums per directory or multiple directories per album.

Use a map and report an error when adding a different value to the same key or an existing value to a different key. An album must belong to one directory and a directory must belong to one album.

Discnumber

Make sure discnumbers are in format <num>/<total> or empty.

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.