Паксоблог

31 липня 2006

Мои скрипты: renbycue.py

Разрежем большой MP3, протегируем малые по CUE-файлу.
Скачал я альбом с помощью осла - VA_-_Safi_Connection_The_Remixes
А он весь одним большим mp3 (118Mb), решил порезать, благо прилагался cue-файл следующего содержания:

PERFORMER "VA"
TITLE "Safi Connection The Remixes"
FILE "01-va_-_safi_connection_the_remixes-upe.mp3" MP3
TRACK 01 AUDIO
TITLE "Hello Houston Spiritual Enhancer Rmx"
PERFORMER "Safi Connection"
FLAGS DCP
INDEX 01 00:00:00

...

TRACK 10 AUDIO
TITLE "Fullon String Elec 3 Rmx"
PERFORMER "Safi Connection"
FLAGS DCP
INDEX 00 67:05:01
INDEX 01 67:07:01


Дядька Curt сказал что нарезает в WaveLab , я и последовал его рекомендации. Нашел этот инструмент на Wzor'е и у китайцев.
Для упрощения "нарезки", написал следующий сценарий на python:

"cue info - print info from *.cue"

#cuei.py
#rev. 0.2
#dron@amerigo 200607311244

import sys
from datetime import timedelta
from ID3 import *

all = open(sys.argv[1]).read()
tracks = [el.split("\n") for el in all.split("TRACK")]
label = tracks[0][0].replace("PERFORMER","").strip()[1:-1]
album = tracks[0][1].replace("TITLE","").strip()[1:-1]

starts = []
tracklist = []

for i in range(1, len(tracks)):
title = tracks[i][1].replace("TITLE","").strip()[1:-1]
artist = tracks[i][2].replace("PERFORMER","").strip()[1:-1]
if tracks[i][3].strip().startswith("FLAGS"):
startfrom = tracks[i][4].strip()[-8:]
else:
startfrom = tracks[i][3].strip()[-8:]

(h,m,s) = startfrom.split(":")
t = timedelta(
hours=int(h),
minutes=int(m),
seconds=int(s))

starts.append(t)
tracklist.append("%d: %s - %s, from: %s," %
(i, artist, title, startfrom))

lengths = []
for i in range(len(starts)-1, 0, -1):
lengths.append(str(starts[i] - starts[i-1]))

lengths.reverse()
lengths.append("??:??:??")

for i in range(0, len(tracklist)):
print tracklist[i], lengths[i]

Он парсит *.cue и вычисляет длину треков(длины часто не совпадают с заявленными в cue).
Вот его результат его работы:

C:\mp3>python cuei.py 01-va_-_safi_connection_the_remixes-upe.cue
1: Safi Connection - Hello Houston Spiritual Enhancer Rmx, from: 00:00:00, 7:09:
2: Elec 3 feat. Anna K. - Define Yourself Safi Connection Rmx, from: 07:09:48, 7
3: Safi Connection And Saly D - Humna Lights Smhug Rmx, from: 14:17:37, 8:25:12
4: Smhug - Decode Safi Connection Rmx, from: 22:42:49, 7:25:15
5: Safi Connection - Solaric Seeds Life Style Rmx, from: 30:07:64, 6:53:39
6: Safi Connection - Froze Uriya Rmx, from: 37:01:43, 7:01:11
7: Safi Connection - Tarazan And JD-J Burn In Noise Rmx, from: 44:02:54, 7:12:10
8: Lemurians - Systematic Waves Safi Connection Rmx, from: 51:15:04, 7:03:18
9: Safi Connection - Figga Nigga Parrket Rmx, from: 58:18:22, 8:46:39
10: Safi Connection - Fullon String Elec 3 Rmx, from: 67:05:01, ??:??:??

Далее "нарезал" 10 mp3-файлов, сохраняя каждый под его порядковым номером:


А вот скрипт, который все переименует и расставит mp3-тэги(точнее id3-тэги):

"Renames and tags \d+.mp3 in './' by cue-file"

#renbycue.py
#rev. 0.3
#dron@amerigo 200607311241

import os, sys
from ID3 import *

all = open(sys.argv[1]).read()
tracks = [el.split("\n") for el in all.split("TRACK")]


perf = tracks[0][0].replace("PERFORMER","").strip()[1:-1]
album = tracks[0][1].replace("TITLE","").strip()[1:-1]


print album, perf

for i in range(1, len(tracks)):
title = tracks[i][1].replace("TITLE","").strip()[1:-1]
artist = tracks[i][2].replace("PERFORMER","").strip()[1:-1]

if tracks[i][3].strip().startswith("FLAGS"): #pass FLAGS
startfrom = tracks[i][4].strip()[-8:]
else:
startfrom = tracks[i][3].strip()[-8:]

print "%s - %s, %s" % (artist, title, startfrom)
mp3 = "%d.mp3" % i
try:
id3 = ID3(mp3)
id3.title = title
id3.artist = artist
id3.genre = id3.find_genre("psychadelic")
id3.track = i
id3.year = "2006"
id3.comment = "renbycue03.py"
id3.album = perf + " " + album

print id3

except InvalidTagError, message:
print "Invalid ID3 tag:", message

id3.write()
id3.file.close()
os.rename(mp3,"%02d-%s-%s.mp3" % (i, artist, title))

Использовал готовую библиотеку id3-py.
Запустим на выполнение сценарий:

C:\mp3>python renbycue.py 01-va_-_safi_connection_the_remixes-upe.cue
Album : VA Safi Connection The Remixes Track : 6 Year: 2006
Comment: renbycue03.py Genre : Psychadelic (67)
Safi Connection - Tarazan And JD-J Burn In Noise Rmx, 44:02:54
File : 7.mp3
Title : Tarazan And JD-J Burn In Noise Artist: Safi Connection
Album : VA Safi Connection The Remixes Track : 7 Year: 2006
Comment: renbycue03.py Genre : Psychadelic (67)
Lemurians - Systematic Waves Safi Connection Rmx, 51:15:04
File : 8.mp3
Title : Systematic Waves Safi Connecti Artist: Lemurians
Album : VA Safi Connection The Remixes Track : 8 Year: 2006
Comment: renbycue03.py Genre : Psychadelic (67)
Safi Connection - Figga Nigga Parrket Rmx, 58:18:22
File : 9.mp3
Title : Figga Nigga Parrket Rmx Artist: Safi Connection
Album : VA Safi Connection The Remixes Track : 9 Year: 2006
Comment: renbycue03.py Genre : Psychadelic (67)
Safi Connection - Fullon String Elec 3 Rmx, 67:05:01
File : 10.mp3
Title : Fullon String Elec 3 Rmx Artist: Safi Connection
Album : VA Safi Connection The Remixes Track : 10 Year: 2006
Comment: renbycue03.py Genre : Psychadelic (67)

В исходной папке вырисовывается следующее:

Проверим наличие id3-тэгов с помощью winamp(Alt+3):


Мои закладки по теме тут.



Technorati Tags: , , , , ,

Links to this post:

Створити посилання

3 Комментарии:

  • Hey! Very Nice! Check out this website I found where you can make extra cash.
    It's not available everywhere, so go to the site and see if you can find something. I found something and make
    and extra $900 a month!

    http://www.degree-programs-online.info/extramoney.htm

    By Anonymous Анонім, at 01 серпня, 2006 16:34  

  • http://zaxar.awardspace.co.uk/ [b]Проститутки Москвы и Питера, самые красивые девушки, элитные и дешевые,только реальное фото и видео[/b]



    девочки тут [url=http://lkjhhut.white.prohosting.com/ ]http://lkjhhut.white.prohosting.com/ [/url]

    By Anonymous Анонім, at 04 березня, 2007 12:32  

  • This comment has been removed because it linked to malicious content. Learn more.

    By Anonymous Анонім, at 29 березня, 2007 16:06  

Дописати коментар

<< Home