Online video hd

Смотреть узбек видео

Официальный сайт goldsoftware 24/7/365

Смотреть видео бесплатно

masai 16.07.2009 03:08

Tips & tricksИнформация о медиафайлах

В недавнем посте об отображении тегов mp3-файлов рассказывалось об утилите mp3info. К сожалению, она обладает существенными недостатками: не понимает ID3v2 и работает, как следует из названия, только с mp3-файлам.



Однако, сама по себе утилитка довольно удобна. Поэтому я решил написать небольшой скрипт, предоставляющий похожий интерфейс, но понимающий большее количество медиаформатов.



Естественно, писал я его не на пустом месте. Для работы скрипта потребуется библиотека Kaa.Metadata:



1
sudo aptitude install python-kaa-metadata



Параметров у скрипта всего два (для простоты): форматная строка и файл (или несколько файлов через пробел):



1
mediainfo.py ФОРМАТ файл(ы)



При указании файла можно использовать стандартные шаблоны. Так что вполне допустимо имя вида «*.mp3». Можно использовать и более сложные шаблоны: «~/Музыка/*/*.mp3».



Скрипт не умеет рекурсивно обходить каталоги, но это ему и не нужно. Обход можно реализовать, например, средствами bash.



Подробнее о форматной строке. В ней можно использовать следующие шаблоны:

%t — название,

%a — исполнитель,

%r — частота дискретизации,

%l — продолжительность,

%m — продолжительность (только минуты),

%s — продолжительность (только секунды)

%c — кодек,

%b — битрейт,

%n — номер трека,

%A — альбом,

%g — жанр,

%% — символ %.



В ней также можно использовать обычные питоновские экранированные последовательности: \n, \t и т. д.



Вставлять \n в конце форматной строки не нужно, это делается автоматически. Кроме того, вывод скрипта автоматически переконвертируется в кодировку текущей локали.



Если теги файла записаны в однобайтовой кодировке и формат тегов не предусматривает указания кодировки, то скорее всего вместо ожидаемой cp1251 будет latin-1. Впрочем, ответственность за это лежит на библиотеке. Может, это можно настроить, я глубоко не вникал. Во всяком случае, это еще один повод перевести все теги в utf-8.



Утилиту можно использовать как саму по себе, так и в конвейере:



1
mediainfo.py '%l' ~/Музыка/*/* | awk '{s += $1} END {print "?",int(s/3600),"hour(s)"}'



А вот, собственно, исходный текст скрипта:



  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/usr/bin/env python

#-*- coding:utf-8 -*-



# Disable all warnings

import warnings

warnings.filterwarnings('ignore')



# Disable log messages

#import logging

#logger = logging.getLogger('metadata')

#logger.setLevel(logging.CRITICAL)



# Get locale encoding

import locale

encoding = locale.getdefaultlocale()<1>



import os

import sys

import glob

import string

import kaa.metadata



class MyTemplate(string.Template): delimiter = &#39;%'



def addItem(infolist, info):

item = {}

item<&#39;t'> = info.title # Title

item<&#39;a'> = info.artist # Artist

item<&#39;r'> = info.samplerate # Samplerate

item<&#39;l'> = int(info.length) # Length (seconds)

item<&#39;m'> = int(item<'l'> / 60) % 60 # Length (minutes only)

item<&#39;s'> = format(item<'l'> % 60, '02d') # Length (seconds only)

item<&#39;c'> = info.codec # Codec

item<&#39;b'> = info.bitrate # Bitrate

item<&#39;n'> = info.trackno # Track number

item<&#39;A'> = info.album # Album title

item<&#39;g'> = info.genre # Genre

infolist.append(item)



def process(path):

infolist =


path = os.path.normpath(path)

for f in glob.glob(os.path.expanduser(path)):

if os.path.isdir(f):

continue

try:

info = kaa.metadata.parse(f)

except:

info = None

if info != None:

addItem(infolist, info)

return infolist



if len(sys.argv) &lt; 3:

print &#39;Usage:'

print os.path.split(sys.argv<0>)<1>, &#39;FORMAT file(s)'

exit(0)

for f in sys.argv<2:>:

infolist = process(f)

for item in infolist:

sys.stdout.write(MyTemplate(sys.argv<1>).safe_substitute(item).encode(encoding) + &#39;\n')





Не забываем разрешить его выполнение:



1
chmod +x mediainfo.py



Кросспост


Тэги: python мультимедиа теги
+ 7 -
Похожие Поделиться

masai 16.07.2009 03:21 #
+ 1 -
Кстати, рекомендую ещё посмотреть на dnuos.
Minoru 16.07.2009 12:50 #
+ 0 -
Любопытно, жаль, потестить не могу сейчас.
allive 16.07.2009 17:41 #
+ 1 -
не работает скриптик ;(
вообще никакой реакции, ни тебе ошибок, ничего...
masai 16.07.2009 22:00 #
+ 0 -
Совсем-совсем ничего не выводится? Возможно, он просто не нашел ни одного медиафайла.
allive 16.07.2009 22:10 #
+ 1 -
хм, я уж и так пыталсяя (*.mp3) и эдак (конкретно имя файла давал)
masai 16.07.2009 22:11 #
+ 0 -
Да, сейчас глянул, там действительно ошибка. Вставил не тот файлик. :) Сейчас исправлю.
masai 16.07.2009 22:14 #
+ 0 -
Готово!

Вот, сейчас еще раз проверил:

$mediainfo '%a (%A) - %n - %t' ~/Музыка/Герой/*.mp3
Скомороший бунт (Герой) - 01 - Наигрыш
Скомороший бунт (Герой) - 02 - Герой
Скомороший бунт (Герой) - 03 - Небылицы (инструментальная)
Скомороший бунт (Герой) - 04 - Русская народная
Скомороший бунт (Герой) - 05 - Меленка (инструментальная)
Скомороший бунт (Герой) - 06 - Полюшко-поле
Скомороший бунт (Герой) - 07 - Наигрыш 2
Скомороший бунт (Герой) - 08 - Ехали герои
Скомороший бунт (Герой) - 09 - Грустная (инструментальная)
Скомороший бунт (Герой) - 10 - Колыбельная
Скомороший бунт (Герой) - 11 - Герой (инструментальная)
masai 16.07.2009 22:17 #
+ 0 -
Видимо, оттого, что всё ночью выкладывал, не тот вариант вставил (или забыл правильный сохранить). В старой версии не только ошибка (недописанный кусок кода), но и отладочный print проскользнул.

Спасибо за багрепорт! Надеюсь, всё заработает теперь.
allive 16.07.2009 22:19 #
+ 0 -
ага, подтверждаю работает
Спасибо
masai 16.07.2009 22:21 #
+ 0 -
На здоровье!

Утилитку я для себя сделал, чтоб торрентовские раздачи оформлять. Но если кому-то каких-то функций не хватает, буду рад добавить.

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн