hlep: a text search and rename question
James Stroud
jstroud at mbi.ucla.edu
Mon Jan 12 06:13:25 EST 2009
sensen wrote:
> matter description:
>
> when a use an tools to do the ape to flac convert, i can use the cue
> file attached with ape, but the problem is the converted flac file
> don't name by the title in the cue file but like Track_1.flac,
> Track_2.flac ... , so i want to write a script to do this work, system
> is xp sp2, the python is 2.44, i have a plone site in this computer,
> that is why i want to use python to do this work.
>
> so simplify and example
>
> CDImage.cue, Track_1.flac, Track_2.flac, Track_3.flac, Track_4.flac
> all above files in the same folder.
>
> the cue file is just a text file like bellow:
>
>
> PERFORMER "Dido"
> TITLE "Life For Rent"
> FILE "Dido - Life for Rent.ape" WAVE
> TRACK 01 AUDIO
> TITLE "White Flag"
> PERFORMER "Dido"
> INDEX 01 00:00:00
> TRACK 02 AUDIO
> TITLE "Stoned"
> PERFORMER "Dido"
> INDEX 00 04:00:03
> INDEX 01 04:01:45
> TRACK 03 AUDIO
> TITLE "Life For Rent"
> PERFORMER "Dido"
> INDEX 00 09:56:47
> INDEX 01 09:56:53
> TRACK 04 AUDIO
> TITLE "Mary's In India"
> PERFORMER "Dido"
> INDEX 01 13:37:57
>
> the things i want to do
>
> 1. search the current folder cue file (only one cue file) contents.
> find the TITLE "White Flag" and get the White Flag and maybe we
> can save it to a var.
> 2. then rename the Track_1.flac to the White Flag.flac
> 3. search the next title TITLE "Stoned" and save ti to var.
> 4. then rename the Track_2.flac to the Stoned.flac.
> 5. do the same things to the end title.
>
> someone can give some outline, or code is more wonderful. thanks in
> advance.
This isn't much work in python:
import os, glob, re
cue = iter(open('CDImage.cue').readlines())
titles = []
for line in cue:
if line.strip().startswith('FILE'):
break
for line in cue:
if line.strip().startswith('TITLE'):
titles.append(line.split('"')[-2])
flacs = glob.glob('*.flac')
flacs.sort(key=lambda f: int(re.search(r'\d+', f).group(0)))
for old, new in zip(flacs, titles):
os.rename(old, new)
There is no error checking for properly formatted cue file, etc.
James
--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095
http://www.jamesstroud.com
More information about the Python-list
mailing list