Banner showing base of Eiffel tower

Github

Download version 1.4.8: Windows or Linux

Example: Rhythmbox MP3 Collection Manager

This project has 104 classes.

ECF: manage-mp3.ecf

Source code: directory list

This is a full-blown MP3 collection manager that is designed to work in conjunction with the Rhythmbox media player and has a number of features of particular interest to Tango DJs.

Manger Syntax

el_rhythmbox -manager -config <task-configuration>.pyx

Features

<genre>/<artist-name>/<song-title>.<unique id>.mp3

Manual

For details on how to use, read the source documentation notes in class RHYTHMBOX_MUSIC_MANAGER_APP.

Download

Download the latest executable for Ubuntu 14.04 or Linux Mint 17.x at the bottom of this page. You also need the following command line tools to be installed: sox, swgen, avconv, lame, gvfs-mount.

Warning: Use at your own risk. It is recommended that you have a backup of your MP3 collection and rhythmbox configuration files (Usually in $HOME/.local/share/rhythmbox). The developer does not take any responsibility for any data loss that may occur as a result of using el_rhythmbox.

Directory: example/manage-mp3/source

[ . ]

. /apps

. /command

. /command/support

. /rhythmbox/constants

. /rhythmbox/database

. /rhythmbox/database/entry

. /rhythmbox/device

. /rhythmbox/device/sync

. /rhythmbox/manager

. /rhythmbox/manager/config

. /rhythmbox/manager/task

. /rhythmbox/manager/task/ID3/edit

. /rhythmbox/manager/task/ID3/query

. /rhythmbox/manager/task/export

. /rhythmbox/manager/task/import

. /rhythmbox/manager/task/manage

. /rhythmbox/manager/task/playlist

. /rhythmbox/manager/task/tango

. /rhythmbox/playlist

. /rhythmbox/publish

. /rhythmbox/support

. /rhythmbox/tool

. /test-set

. /test-set/support

[ . ]

APPLICATION_ROOT

Application root

BUILD_INFO

Build specification

Further Information

Click on class link to see notes.

apps

GENERATE_RBOX_DATABASE_FIELD_ENUM_APP

Sub-application to generate class RBOX_DATABASE_FIELD_ENUM from C source file rhythmdb.c

Further Information

Click on class link to see notes.

ID3_EDITOR_APP

Id3 editor app

MP3_AUDIO_SIGNATURE_READER_APP

Mp3 audio signature reader app

RBOX_AUTOTEST_APP

Finalized executable test sets

Further Information

Click on class link to see notes.

RHYTHMBOX_MUSIC_MANAGER_APP

MP3 manager for the Rhythmbox media player. The manager executes tasks defined by task configuration written in Pyxis format (an XML analog). See example/manage-mp3/doc/tasks for configuration examples.

See the class hierarchy with RBOX_MANAGEMENT_TASK as it's root.

Usage:

el_rhythmbox -manager -config <task-configuration>

The -manager switch is needed to select a sub application from the main application. See class APPLICATION_ROOT.

Further Information

Click on class link to see warning and instructions.

TANGO_MP3_FILE_COLLATOR_APP

Application to collate a Tango MP3 collection into a directory structure using any available ID3 tag information and renaming the file according to the title and a numeric id to distinguish duplicates.

<genre>/<artist>/<title>.<id>.mp3

command

DETECT_RHYTHMBOX_COMMAND

Detect rhythmbox command

ID3_EDITOR

ID3 editor

TANGO_MP3_FILE_COLLATOR

Tango mp3 file collator

command/support

ID3_TAG_INFO_ROUTINES

ID3 tag edits

rhythmbox/constants

APPLICATION_COMMAND_OPTIONS

Application command line options (copied from Matryoshka app)

M3U_PLAY_LIST_CONSTANTS

M3U play list constants

RBOX_DATABASE_FIELD_ENUM

Fields from rhythmdb.c for Rhythmbox version 3.0.1

Further Information

Click on class link to see notes.

RBOX_SHARED_DATABASE_FIELD_ENUM

Shared instance of RBOX_DATABASE_FIELD_ENUM

RHYTHMBOX_CONSTANTS

Rhythmbox constants

SHARED_APPLICATION_OPTION

Shared application option

rhythmbox/database

RBOX_DATABASE

Database of all Rhythmbox songs, playlists, radio entries and ignored entries. It is read from these files:

$HOME/.local/share/rhythmbox/rhythmdb.xml
$HOME/.local/share/rhythmbox/playlists.xml
$HOME/Music/Playlists/*.pyx

The *.pyx ones are playlists which have been saved using the update_dj_playlists task.

Note that this database save modifications to songs and playlists.

RBOX_PLAYLIST

Rhythmbox playlist

RBOX_PLAYLIST_ARRAY

Rhythmbox playlist array

SHARED_DATABASE

Shared access to instance of class conforming to RBOX_DATABASE

SONG_IN_PLAYLIST_QUERY_CONDITION

Song in playlist query condition

SONG_QUERY_CONDITIONS

Song query conditions for use with EL_CHAIN routines

query
query_if
inverse_query_if

Further Information

Click on class link to see descendants.

rhythmbox/database/entry

RBOX_CORTINA_SONG

Rbox cortina song

RBOX_IGNORED_ENTRY

Rhythmbox ignored file entry (used for Pyxis playlists)

RBOX_IRADIO_ENTRY

Rhythmbox radio station entry

RBOX_IRADIO_FIELDS

Fields mapping to Rhythmbox XML Internet Radio station data

Example

<entry type="iradio">
   <title>WSUM 91.7 FM (University of Wisconsin)</title>
   <genre>College Radio</genre>
   <artist></artist>
   <album></album>
   <location>http://vu.wsum.wisc.edu/wsumlive.m3u</location>
   <date>0</date>
   <media-type>application/octet-stream</media-type>
</entry>

RBOX_PLAYLIST_ENTRY

Entry indicating location of external playlist in Pyxis format

RBOX_SONG

Object representing Rhythmbox 3.0.1 song entry in rhythmdb.xml

See field enumeration class RBOX_DATABASE_FIELD_ENUM

RBOX_SONG_FIELDS

Fields mapping to Rhythmbox XML song data

Example

<entry type="song">
   <title>L'Autre Valse d'Am&#xE9;lie</title>
   <genre>Vals (Modern)</genre>
   <artist>Yann Tiersen</artist>
   <album>Le Fabuleux Destin d'Am&#xE9;lie Poulain</album>
   <comment>Composer: Yann Tiersen</comment>
   <album-artist>Composer: Yann Tiersen</album-artist>
   <track-number>6</track-number>
   <duration>93</duration>
   <file-size>2244105</file-size>
   <location>file://$MUSIC/Vals%20(Modern)/Yann%20Tiersen/L'Autre%20Valse%20d'Am%C3
                                                           %A9lie.02.mp3</location>
   <mtime>1335094508</mtime>
   <first-seen>1358180915</first-seen>
   <last-seen>1382259840</last-seen>
   <bitrate>192</bitrate>
   <date>730486</date>
   <media-type>audio/mpeg</media-type>
   <mb-trackid>CF22F4A6:D9D3:B4A6:674B:3866B6129A3C</mb-trackid>
   <mb-artistsortname>Tiersen, Yann</mb-artistsortname>
   <composer>Yann Tiersen</composer>
</entry>

rhythmbox/device

NOKIA_PHONE_DEVICE

Nokia have their own Windows style playlist format

SAMSUNG_TABLET_DEVICE

Samsung tablet device

STORAGE_DEVICE

Device to which to mp3 files can be exported

TEST_STORAGE_DEVICE

Test storage device

rhythmbox/device/sync

MEDIA_ITEM

Media item

MEDIA_ITEM_DEVICE_SYNC_TABLE

Media item device sync table

MEDIA_SYNC_ITEM

Media sync item

rhythmbox/manager

RBOX_MUSIC_MANAGER

Rhythmbox music manager

rhythmbox/manager/config

CORTINA_SET_INFO

Cortina set info

DJ_EVENT_INFO

Dj event info

PLAYLIST_EXPORT_INFO

Playlist export info

VOLUME_INFO

Volume info

rhythmbox/manager/task

DATABASE_UPDATE_TASK

Task that modifies the Rhythmbox database (including playlists)

DEFAULT_TASK

Default task

ID3_TASK

Task to query or edit ID3 tag information

RBOX_MANAGEMENT_TASK

Rhythmbox music manager task

Further Information

Click on class link to see descendants.

rhythmbox/manager/task/ID3/edit

ADD_ALBUM_ART_TASK

Add album art from folder album_art_dir and organized in sub-folders matching {TL_PICTURE_TYPE_ENUM}.name for all enumeration types.

Further Information

Click on class link to see notes.

DELETE_COMMENTS_TASK

Delete comments task

REMOVE_ALL_UFIDS_TASK

Remove all UFID's task

REMOVE_UNKNOWN_ALBUM_PICTURES_TASK

Remove unknown album pictures task

UPDATE_COMMENTS_WITH_ALBUM_ARTISTS_TASK

Update comments with album artists task

rhythmbox/manager/task/ID3/query

DISPLAY_INCOMPLETE_ID3_INFO_TASK

Display songs with incomplete TXXX ID3 tags

DISPLAY_MUSIC_BRAINZ_INFO_TASK

Display music brainz info task

NORMALIZE_COMMENTS_TASK

Rename 'Comment' comments as 'c0' This is an antidote to a bug in Rhythmbox version 2.97 where editions to 'c0' command are saved as 'Comment' and are no longer visible on reload.

PRINT_COMMENTS_TASK

Print ID3 comments task

rhythmbox/manager/task/export

EXPORT_MUSIC_TO_DEVICE_TASK

Export music to device task

EXPORT_PLAYLISTS_TO_DEVICE_TASK

Export playlists to device task

EXPORT_TO_DEVICE_TASK

Export to device task

LIST_VOLUMES_TASK

List export volumes

rhythmbox/manager/task/import

IMPORT_M3U_PLAYLISTS_TASK

M3U playlist import task

IMPORT_NEW_MP3_TASK

Import mp3 not currently in database and set artist and genre according to current location in

Music/<genre>/<artist/composer>

IMPORT_VIDEOS_TASK

Import videos task

IMPORT_YOUTUBE_M4A_TASK

Import M4A video stream from Youtube using youtube-dl

rhythmbox/manager/task/manage

ARCHIVE_SONGS_TASK

Archive songs task

COLLATE_SONGS_TASK

Collate songs task

REPLACE_SONGS_TASK

Replace songs task

rhythmbox/manager/task/playlist

RESTORE_PLAYLISTS_TASK

Restores playslist from /home/<user>/.local/share/rhythmbox/playlists.backup.xml

UPDATE_DJ_PLAYLISTS_TASK

Update DJ playlists tasks. Inserts an ignored entry into database indicating location of Pyxis playlist.

rhythmbox/manager/task/tango

PUBLISH_DJ_EVENTS_TASK

Publish dj events task

REPLACE_CORTINA_SET_TASK

Replace cortina set task

rhythmbox/playlist

CORTINA_SET

Cortina set

M3U_PLAYLIST

M3U playlist

M3U_PLAYLIST_READER

M3U playlist reader

NOKIA_PLAYLIST

Nokia playlist

PLAYLIST

Playlist

rhythmbox/publish

DJ_EVENTS_HTML_INDEX

Dj events html index

DJ_EVENTS_PUBLISHER

Dj events publisher

DJ_EVENT_HTML_PAGE

Dj event html page

DJ_EVENT_PLAYLIST

Playlist exported from Rhythmbox in Pyxis format with information about DJ gig.

DJ_EVENT_PUBLISHER_CONFIG

DJ event publisher config

HTML_SONG

Html song

rhythmbox/support

ENCODED_LOCATION

Encoded location

rhythmbox/tool

GENERATE_RBOX_DATABASE_FIELD_ENUM

Command to generate class RBOX_DATABASE_FIELD_ENUM from C source file rhythmdb.c

test-set

ADD_ALBUM_ART_TASK_TEST_SET

Test set for class ADD_ALBUM_ART_TASK

COLLATE_SONGS_TASK_TEST_SET

Test set for class COLLATE_SONGS_TASK

DISPLAY_MUSIC_BRAINZ_INFO_TASK_TEST_SET

Test set for class DISPLAY_MUSIC_BRAINZ_INFO_TASK

EXPORT_MUSIC_TO_DEVICE_TASK_TEST_SET

Test set for class EXPORT_MUSIC_TO_DEVICE

EXPORT_PLAYLISTS_TO_DEVICE_TASK_TEST_SET

Test set for class EXPORT_MUSIC_TO_DEVICE_TASK

IMPORT_M3U_PLAYLISTS_TASK_TEST_SET

Test set for class IMPORT_M3U_PLAYLISTS_TASK

IMPORT_NEW_MP3_TASK_TEST_SET

Test set for class IMPORT_NEW_MP3_TASK

IMPORT_VIDEOS_TASK_TEST_SET

Test set for class IMPORT_VIDEOS_TASK

PUBLISH_DJ_EVENTS_TASK_TEST_TASK

Test set for class PUBLISH_DJ_EVENTS_TASK

RBOX_MANAGEMENT_TASK_TEST_SET

Generic test set for tests conforming to RBOX_MANAGEMENT_TASK

REPLACE_CORTINA_SET_TASK_TEST_SET

Test set for class REPLACE_CORTINA_SET_TASK

REPLACE_SONGS_TASK_TEST_SET

Test set for class REPLACE_SONGS_TASK

TANGO_MP3_FILE_COLLATOR_TEST_SET

Test set for class TANGO_MP3_FILE_COLLATOR

Further Information

Click on class link to see notes.

UPDATE_DJ_PLAYLISTS_TASK_TEST_SET

Test set for class UPDATE_DJ_PLAYLISTS

test-set/support

IMPORT_VIDEOS_TEST_TASK

Import videos test task

RBOX_CORTINA_TEST_SONG

Rbox cortina test song

RBOX_TEST_DATABASE

Rbox test database

RBOX_TEST_SONG

Rbox test song

REPLACE_CORTINA_SET_TEST_TASK

Replace cortina set test task

REPLACE_SONGS_TEST_TASK

Replace songs test task