README
Patch 1.0.2 for otto
by Neil Verplank
Because I wanted a couple of new features, I wound up
making significant
and non backwards-compatible changes to otto and the
DB. I also tried to repair a
few things I found wrong. This patch is also not (as
far as I know) compatible
with the 1.0.1 patch. However, this patchs offers many
of the same fixes
and changes as that patch (but not all), as well as a
host of cool new
features (see below).
As far as I can tell, all of otto's original features
appear to be working
correctly, as do all of the new additions. I seriously
doubt it's bug free,
but it's working a-ok for me....
(see INSTALL for installation/upgrade instructions.)
New features in otto:
- default id3 support - otto now supports additional
id3 tags by default,
specifically genre, comment and year. also, loader
now attempts to
load all song info from id3 tags in the mp3 itself,
then merges the
results with the directory-based information,
choosing the longer
(and thus presumably better) information. if no
id3 tag found, otto
retrieves song info from directory structure as before.
- you can now associate a song with many artists
and/or many genres.
by default, songs are associated with the genre
specified in the id3 tag,
if any, and with the artist in the id3 tag, or
failing that, the artist
specified in the directory structure.
- you can now associate an album with many artists
and/or many genres.
by default, albums are associated with the genre
specified in the id3 tag,
if any, and with the artist in the id3 tag, or
failing that, the artist
specified in the directory structure.
- note that presently, *any* otto user has the
ability to edit
albums, songs, genres, and associations between
song/album and artist/genre
(and editing is on by defaul).
It would be fairly straightforward to limit access
to these pages using otto's
group feature, or by requiring a particular user
for those pages (say, admin).
- added ability to play randomly from single or
multiple genres; also ability to
exclude single or multiple genres.
- added ability to search by genre.
- added 'shuffle' button to album (random play whole
album).
- modified 'play all' to just play the album (no more
confirming).
- added 'pick 3', and 'shuffle' function to displayed
lists'.
- you can now play a list "in order," and rearrange
the order of songs
within the list.
- adding and removing a song from a list refreshes
the list (or album)
from the edit list frame, from the album frame, and
from the queue frame.
- you can now delete an entire list from the DB by
clicking on the trash
icon (if you own that list).
- modified random so that it favors songs it hasn't
played, then songs that
haven't played recently, then songs that get picked
a lot. generally, it
now tries to go through all the songs in the
selection list (using genres
if selected and the excludelist to determine
initial constraints).
you can select from 3 random modes, including the
original random method,
by changing $rndmMeth in ottojockeyd.
Web interface changes
- modified display of queued songs to use tables for
easier reading.
- modified all scripts and html to use a style sheet.
you can now modify
all otto pages with a single style sheet. Also,
'addnewuser' now creates
a style sheet for each user, allowing for each user
to have a different
interface!
- moved 'home' in the request menu to left.
- added 'help' to the requests menu.
- modified the 'images' page to be a help menu.
- added editing pages that allow user to add, modify
or delete albums, songs
- added pages that allow song and album to be
associated with multiple
artists, and / or multiple genres.
- added 'edit' button - provides edit menu and
instructions, and ability
to turn edit on and off.
- move X-list and new X-edit to end of menu
- added by genre/by artist to search options
Bug fixes:
- some html table formatting problems.
- removed ";" from queries in action.cgi and otto.cgi
- not needed, and can
cause problems.
- fixed some problems with slow queries (due to many
table joins) by using
separate queries.
- now, anyone can play a list, but only the owner has
the right to modify
or delete the list (all the little +'s and -'s only
show up under an
owner's list).
- changes in the various list frames now correctly
refresh all the other
frames. i think.
- no longer possible to insert a list with no name in
the DB.
- previously, if part of an album was inserted into
DB, then the rest later
(if you're uploading an album and running loader as
a cron job, for
instance), the artist's song, album and various
counts were incorrectly
updated. This has been fixed.
- when deleting a song that was part of a
compilation, the artist's
variouscount was not correctly updated. this has
been fixed.
Bug fixes to ~/bin/loader (works with new DB structure
only):
- modified sub unloadmissingsongs
When otto removed songs that have no corresponding
file, it did not
remove references to that song in the queue,
listelements, and
seealso lists.
This has been fixed.
- added sub unloademptyalbums
When you rearrange where your songs are, or the name
of the album or
artist, or delete songs, otto correctly loads new
songs and unloads
old ones from the song table, but leaves dangling
albums in the DB
(albums that have no songs).
This routine fixes that.
Note that of course the references to albums and
songs are removed from
the new tables as well.
- added support for id3 tags
note that this script is distinctly different from
the loader_id3 script,
that otto 1.0 comes with.
Changes to the DB (see tables.sq):
- added a 'genres' table for genre support.
- added a 'albumgenre' table to allow an album to be
associated with
multiple genres.
- added a 'songgenre' table to allow a song to be
associated with multiple
genres.
- added a 'album'artist table to allow an album to
be associated with
multiple artists instead of one. Removed the
'fileunder' column from
the 'albums' table as a result.
- added a 'songartist' table to allow a song to be
associated with multiple
multiple artists instead of one. Removed the
'fileunder' column from
the 'songs' table as a result.
- removed fileunderid from songs and albums as a
result of the above
(thus the lack of backwards compatibility).
- removed 'fileundercount' and 'albumcount' from
lists, as they do not
seem to be used.
- added 'playorder' to listelements so that a list
can be played
in order.
note that, in *theory*, since the www cgi is now
rewritten to search for
the artist in the relational tables (songartist /
albumartist), and NOT
under songs or albums, you could leave these fields
intact and *update*
your database. you'd have to hack the loader
script, but it *could*
work for the motivated <grin>.
- changed songs:xwhen to a datetime - timestamp is
updated every time
a song record is modified, and we want xwhen to be a
record of when
the song was instered into the DB.
- removed variouscount from fileunder, as this is
taken care of by
multiartist associations.
- added pwhen, picked and cancelled to the songs
table - used in
new randomization routine.
- added table queuegenre, allows users to
include/exclude specific
genres from random play.
~/bin/genreimport
a script that populates the genre table from the
file 'genres.txt'. This
file contains the 125 default genres specified in
the id3v2 spec.
(see http://www.id3.org/id3v2-00.txt\)
artists, and genres.
Patch for Otto 1.0