bash, perl, python и прочие интерпретируемые скрипты
Модератор: Gen1us2k
-
Gen1us2k
- Модератор
- Сообщения: 771
- Зарегистрирован: 02 мар 2010, 16:13
Сообщение
Gen1us2k » 22 фев 2012, 11:59
Дело было так. Я собрал кучу песенок в папочку. Наименования были разные, потому что были вырваны из разных мест.
Захотел я чуваку скинуть то, что я собрал в виде Артист - Название.
Сгенерил плейлист клементина, он в xml, думал, что распарсю, но не. не было всех треков в нем. Решил забирать по ID3. вывод получил, допилил функционал переименования файлов.
в общем-то так.
[python]#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, re
from optparse import OptionParser
def getMusic(path):
import os
musicFiles = []
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".mp3"):
musicFiles.append(file)
musicFiles.sort()
return musicFiles
def main():
usage = "Usage: %prog -d SOURCE_DIR"
parser = OptionParser(usage=usage)
parser.add_option("-d", "--dir", dest="dir", help="dir, where mp3 files stored")
(options, args) = parser.parse_args()
if not options.dir:
parser.error("You must specify Source dir")
musicDir = options.dir
musicFiles = getMusic(musicDir)
os.chdir(musicDir)
for musicFile in musicFiles:
track = getID3Tag(musicFile)
filename = str(track) + ".mp3"
print filename
os.rename(musicFile, track + ".mp3")
def clean_name(name):
try:
match = re.search(ur"([a-zA-Z0-9\.\'\ \!\-])+", name)
return match.group()
except:
return ""
def getID3Tag(mp3):
fp = open(mp3)
fp.seek(-128,2)
fp.read(3)
title = clean_name(fp.read(30))
artist = clean_name(fp.read(30))
album = clean_name(fp.read(30))
anno = fp.read(4)
comment = fp.read(28)
return artist.strip() + ' - ' + title.strip()
if __name__=='__main__':
main()
[/python]
mp3_renamer -d /путь/до/папки/с/кучей/mp3шек
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
Gen1us2k
-
Infernal Flame
- Злой Модер
- Сообщения: 1796
- Зарегистрирован: 03 мар 2010, 11:25
- ОС: Centos 7
-
Контактная информация:
Сообщение
Infernal Flame » 22 фев 2012, 16:08
Gen1us2k
а с рекурсией возможно?
чтобы типа каталог /home/my/Mysic в котором дофига всякого с вложениями отпарсить и по-пацански переименовать?
Work: Centos 7 х 'all Servers'
Infernal Flame
-
Raven
- Бородатый сис
- Сообщения: 2800
- Зарегистрирован: 03 мар 2010, 15:12
- ОС: RHEL 8
- Откуда: Из серверной
Сообщение
Raven » 23 фев 2012, 20:06
Infernal Flame
Gen1us2k писал(а):mp3_renamer -d /путь/до/папки/с/кучей/mp3шек
Думаю it's by default
Я не злопамятный, я просто часто ковыряю логи
Raven
-
Gen1us2k
- Модератор
- Сообщения: 771
- Зарегистрирован: 02 мар 2010, 16:13
Сообщение
Gen1us2k » 24 фев 2012, 10:41
Infernal Flame
Надо будет попробовать. проблема в том, чтобы были id3 теги.
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
Gen1us2k
-
Infernal Flame
- Злой Модер
- Сообщения: 1796
- Зарегистрирован: 03 мар 2010, 11:25
- ОС: Centos 7
-
Контактная информация:
Сообщение
Infernal Flame » 24 фев 2012, 12:21
Gen1us2k
ну теги - моя забота уже
просто таким образом мог бы свою коллекцию привести к стандартному виду
Work: Centos 7 х 'all Servers'
Infernal Flame