python + FreeDB = sant

Eftersom jag aldrig lyckats hitta någon CD-ripper som jag varit nöjd med (undantaget EAC, på den tiden jag körde proprietärt), rippar jag väldigt old-school. Jag är å andra sidan snart 40, så jag kanske är förlåten.

Rippa gör jag med cdparanoia och kodar gör jag med lame i konsollen. Det jobbiga har varit att skriva in låttitlarna på mp3-filerna, för det har jag gjort helt och hållet för hand.

Häromdagen kom jag på att jag skulle testa om det gick att använda python för att hämta album-data från CDDB/FreeDB. Och visst gick det. Genom att installera python-cddb får man tillgång till alla de klasser man behöver för att hämta data för ett album. Tack vare README och det här exemplet snodde jag ihop ett litet script som hämtar data från FreeDB:

import CDDB, DiscID

def print_disc(read_info, tracks):
    print "\n%s\n" % read_info['DTITLE']
    for i in range(tracks):
        print "%0.2d - %s" % (i + 1, read_info['TTITLE' + `i`])
    return

cdrom = DiscID.open("/dev/cdrom3")

disc_id = DiscID.disc_id(cdrom)

(query_status, query_info) = CDDB.query(disc_id)

if type(query_info).__name__ == 'list':
    for x in range(len(query_info)):
        (read_status, read_info) = CDDB.read(query_info[x]['category'],query_info[x]['disc_id'])
        print_disc(read_info, disc_id[1])
        print '------------------------------------------'

else:
    (read_status, read_info) = CDDB.read(query_info['category'],query_info['disc_id'])
    print_disc(read_info, disc_id[1])

Scriptet slår upp diskens id och skriver ut alla låtar på de skivor som matchar (ibland är det inte bara en träff). Allt detta med några få kodrader. Jag minns med fasa när jag gjorde samma sak i VB (usch och fy)! Imponerande måste jag säga.

Innehållet på skivan skrivs alltså ut i konsollen. Där kopierar jag texten och klistrar in i en ny emacs-buffer. Då kan jag också göra ev. ändringar i texten. Sedan sparar jag det hela i en ny fil, ex. titles.txt.

Och slutligen användare jag wavren för att döpa om filerna enligt vad som står i filen titles.txt.

Old school – visst, men med full kontroll!

About these ads

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s


Följ

Få meddelanden om nya inlägg via e-post.

%d bloggers like this: