Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Работа с Mp3 файлами

Ответить
Настройки темы
Разное - [решено] Работа с Mp3 файлами

Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vovchik1900
Дата: 08-05-2011
Здравствуйте.

Дело вот в чем:
допустим в папке лежат мп3 файлы. Их примерно 10-15 (может больше). В другой папке лежат картинки. Тоже 10-15 (может больше). *.jpg файлы, разные.
В чем задача:
Как сделать программу, чтобы она поочереди добавляла к мп3 файлам картинки. То есть прописывала в тег к мп3 файлу.
Алгоритм примерно такой: к первому мп3, первую картинку---положил в третью папку, ко второму мп3, вторую картинку---положил в третью папку и так далее до конца. Чтобы потом при воспроизведении можно было видеть эту картинку в плеере как обложку диска.

Я нашел команды на С++. Могу дать ссылки. Понимаю, что тут должен быть цикл, но сделать не могу. Вообще можно же такое не только на С++ написать? Помогите пожалуйста с кодом. Если не трудно.

Отправлено: 12:54, 08-05-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Vovchik1900, я попробую сравнить содержимое «C:\Python26» до и после установки «eyeD3» и отпишусь здесь.

читать дальше »
Данный текст:
╔════════════ C:\Python26\Lib\site-packages\eyeD3 ═══════╤═════╗
║и Имя │Размер│ Дата │Время║
имеет смысл заключать в тэг «code» для выравнивания:
Код: Выделить весь код
╔════════════ C:\Python26\Lib\site-packages\eyeD3 ═══════╤═════╗
║и                 Имя                   │Размер│  Дата  │Время║
║⌂..                                     │ Вверх│24.05.11│02:48║

Отправлено: 17:23, 29-05-2011 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
помучился и подключил eyeD3.
Код: Выделить весь код
C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image="C:\Мои проекты\Wallpapers\wallpaper_su.jpg"`FRONT_COVER "E:\Песочница\0056\ABBA (Eagle).mp3"
работает. но только 1 картинку к 1 файлу добавляет.

а как много картинок ко многим файлам добавить?

Последний раз редактировалось Vovchik1900, 30-05-2011 в 18:45.


Отправлено: 16:36, 30-05-2011 | #22


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Vovchik1900, заработало? Тогда по #21 я не экспериментирую и не отписываюсь. А в чём же там дело было? Отпишитесь, пожалуйста, на этот счёт.

Цитата:
а мне нада много картинок ко многим файлам добавить.
Будем делать. Только нужно более внятное разъяснение, нежели:
Цитата Vovchik1900:
допустим в папке лежат мп3 файлы. Их примерно 10-15 (может больше). В другой папке лежат картинки. Тоже 10-15 (может больше). *.jpg файлы, разные.
В чем задача:
Как сделать программу, чтобы она поочереди добавляла к мп3 файлам картинки. То есть прописывала в тег к мп3 файлу.
Алгоритм примерно такой: к первому мп3, первую картинку---положил в третью папку, ко второму мп3, вторую картинку---положил в третью папку и так далее до конца. »
В частности:
1. Речь идёт только о передней обложке альбома? То есть, как правило — будет одно изображение на группу файлов *.mp3, так?
2. Как соотносить, по каким правилам — какие изображения к каким файлам *.mp3 соответствуют?

Отправлено: 04:35, 31-05-2011 | #23


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,

в файле setup.py папки eyeD3 (она же eyeD3-0.6.17. просто переименовал) было написано
Код: Выделить весь код
package_dir={'eyeD3':'src\eyeD3'},
переделал на
Код: Выделить весь код
package_dir={'eyeD3':'C:\PyModules\eyeD3\src\eyeD3'},
Цитата Iska:
В частности:
1.
2. »
1. нет. у меня уже отсортировано все. например в папке C:\MUS\Audio\ лежит музыка: Treck1.mp3, Treck2.mp3....... а в папке C:\MUS\picture\ лежат картинки: Picture1.jpg, Picture2.jpg....... то есть 10 мп3 файлам (или даже более) соответствует 10 (или даже более) картинок. каждому мп3 своя картинка.
2. все картинки и мп3 пронумерованы. пусть соединяет 1й+1я, 2й+2я....... (мп3+картинка).

Отправлено: 05:27, 31-05-2011 | #24


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Ориентироваться будем на какую-то систему именования пар *.mp3/*.jpg или просто идти по порядку, независимо от имён?

Отправлено: 09:30, 31-05-2011 | #25


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,


на систему именования пар. например: Treck1 только к Picture1, Treck2 только к Picture2 и так далее до конца.

Последний раз редактировалось Vovchik1900, 01-06-2011 в 20:27.


Отправлено: 10:24, 31-05-2011 | #26


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Vovchik1900, тогда попробуем с помощью пакетного файла (правильнее и удобнее бы было на самом Python'е, но мой опыт работы с ним — от силы часов шесть, посему — не берусь), например:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFolderMP3=%~1
set sFolderImage=%~2

if defined sFolderMP3 (
	if defined sFolderImage (
		if exist "%sFolderMP3%" (
			if exist "%sFolderImage%" (
				call :ScanFolder "%sFolderMP3%" "%sFolderImage%"
				exit /b 0
			) else (
				echo Folder [%sFolderImage%] not found.
			)
		) else (
			echo Folder [%sFolderMP3%] not found.
		)
	) else (
		echo Need arguments.
	)
) else (
	rem echo Need arguments.
)

echo.
echo Usage: %~nx0 ^<Folder with *.mp3 files^> ^<Folder with *.jpg files^>
echo.
echo Use template ^<Track*.mp3^> for audio files. Example:
echo.
echo     Track1.mp3
echo     Track2.mp3
echo     ...
echo     TrackNNN.mp3
echo.
echo Use template ^<Picture*.jpg^> for image files. Example:
echo     Picture1.jpg
echo     Picture2.jpg
echo     ...
echo     PictureNNN.jpg

endlocal
exit /b 1

:ScanFolder "%sFolderMP3%" "%sFolderImage%"
	setlocal

	for /l %%i in (1, 1, 999) do (
		if exist "%sFolderMP3%\Track%%i.mp3" (
			if exist "%sFolderImage%\Picture%%i.jpg" (
				attrib.exe -r "%sFolderMP3%\Track%%i.mp3"
				echo Adding [%sFolderImage%\Picture%%i.jpg] to [%sFolderMP3%\Track%%i.mp3]

				C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image=""`FRONT_COVER "%sFolderMP3%\Track%%i.mp3"
				C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image="%sFolderImage%\Picture%%i.jpg"`FRONT_COVER "%sFolderMP3%\Track%%i.mp3"
			)
		)
	)

	endlocal
	exit /b
Пример вызова пакетного файла:
Код: Выделить весь код
0001.cmd "E:\Песочница\0056\mp3" "E:\Песочница\0056\jpg"
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:00, 05-06-2011 | #27


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,

работает. Спасибо большое))!!

А можно:

1. код подробней расписать. например не очень ясно echo Need arguments или rem echo Need arguments. Вы например
Цитата Iska:
C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image="C:\Мои проекты\Wallpapers\wallpaper_su.jpg"`FRONT_COVER "E:\Песочница\0056\ABBA (Eagle).mp3" »
расписали что я аж.... понял все))

2. если у меня треки имеют формат 1.Исполнитель-Название трека.mp3 и так до nnnn.Исполнитель-Название трека.mp3, а картинки тоже как-нибудь пронумерованы. Напрмер 1.Picture и так до nnnn.Picture. как тогда будет?
в принципе меня устраивает, то что есть..... любопытно все-таки.

Отправлено: 20:18, 05-06-2011 | #28


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Vovchik1900:
код подробней расписать. »
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

Присваиваем переменной окружения sFolderMP3 первый аргумент пакетного файла (без возможных кавычек)
set sFolderMP3=%~1
Присваиваем переменной окружения sFolderImage первый аргумент пакетного файла (без возможных кавычек)
set sFolderImage=%~2

Делаем проверки на то, что, как минимум задано два аргумента пакетного файла, и они обозначают объекты файловой системы:

Если переменная окружения sFolderMP3 определена (т.е., первый аргумент пакетного файла был задан), то…
if defined sFolderMP3 (
	Если переменная окружения sFolderImage определена (т.е., второй аргумент пакетного файла был задан), то…
	if defined sFolderImage (
		Если существует папка [или файл, здесь у меня, к сожалению, ошибка] %sFolderMP3%, то…
		if exist "%sFolderMP3%" (
			Если существует папка [или файл, и здесь у меня ошибка] %sFolderImage%, то…
			if exist "%sFolderImage%" (
				Сделав проверки, вызываем процедуру переименования
				call :ScanFolder "%sFolderMP3%" "%sFolderImage%"
				Выходим из пакетного файла без ошибки
				exit /b 0
			) else (
				Папка [или файл, здесь у меня ошибка] %sFolderImage% не существует — сообщаем об ошибке
				echo Folder [%sFolderImage%] not found.
			)
		) else (
			Папка [или файл, здесь у меня ошибка] %sFolderMP3% не существует — сообщаем об ошибке
			echo Folder [%sFolderMP3%] not found.
		)
	) else (
		Переменная окружения sFolderImage определена (т.е., второй аргумент пакетного файла не был задан) — сообщаем об ошибке
		echo Need arguments.
	)
) else (
	Переменная окружения sFolderMP3 не определена (т.е., вообще пакетный файл был вызван вовсе без аргументов, можно сообщать об ошибке, но я не стал, ибо далее всё одно будет выведено сообщение по использованию пакетного файла
	rem echo Need arguments.
)

Если дошли сюда — значит, чего-то не хватает. Выводим сообщение по использованию пакетного файла
echo.
echo Usage: %~nx0 ^<Folder with *.mp3 files^> ^<Folder with *.jpg files^>
echo.
echo Use template ^<Track*.mp3^> for audio files. Example:
echo.
echo     Track1.mp3
echo     Track2.mp3
echo     ...
echo     TrackNNN.mp3
echo.
echo Use template ^<Picture*.jpg^> for image files. Example:
echo     Picture1.jpg
echo     Picture2.jpg
echo     ...
echo     PictureNNN.jpg

endlocal
Выходим из пакетного файла с ошибкой
exit /b 1

Процедура переименования
:ScanFolder "%sFolderMP3%" "%sFolderImage%"
	setlocal

	Перебираем переменную «%%i» от 1 до 999 с шагом 1
	for /l %%i in (1, 1, 999) do (
		Если существует файл «%sFolderMP3%\Track%%i.mp3», то…
		if exist "%sFolderMP3%\Track%%i.mp3" (
			Если существует аналогичный ему файл «%sFolderImage%\Picture%%i.jpg», то…
			if exist "%sFolderImage%\Picture%%i.jpg" (
				Снимаем возможный атрибут Read-Only (что часто бывает при копировании *.mp3 с CD/DVD) у файла «%sFolderMP3%\Track%%i.mp3»
				attrib.exe -r "%sFolderMP3%\Track%%i.mp3"
				Выводим сообщение
				echo Adding [%sFolderImage%\Picture%%i.jpg] to [%sFolderMP3%\Track%%i.mp3]

				Сначала удаляем существующий FRONT_COVER. Для этого вызываем модуль Python eyeD3 с аргументами:
				--no-color — не добавлять в вывод цветовые Escape-последовательности
				-F `— использовать в качестве разделителя гравес «`» вместо умолчальных двойных кавычек (сие позволяет использовать двойные кавычки для указания полных путей к файлам)
				--v2 — будем работать со второй версией тэгов
				--to-v2.3 — преобразуем существующие тэги к к версии 2.3
				--add-image=""`FRONT_COVER — удаляем FRONT_COVER, если он есть, указав пустое имя файла
				"%sFolderMP3%\Track%%i.mp3" — имя файла, с которым работаем
				C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image=""`FRONT_COVER "%sFolderMP3%\Track%%i.mp3"
				Теперь добавляем новый FRONT_COVER. Для этого вызываем модуль Python eyeD3 теми же аргументами, за исключением:
				--add-image="%sFolderImage%\Picture%%i.jpg"`FRONT_COVER — добавляем FRONT_COVER, указывая имя файла «%sFolderImage%\Picture%%i.jpg»
				C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image="%sFolderImage%\Picture%%i.jpg"`FRONT_COVER "%sFolderMP3%\Track%%i.mp3"
			)
		)
	)

	endlocal
	exit /b
Для проверки существования папки правильно использовать ссылку именно на папку, как:
Код: Выделить весь код
if exist "%sFolderMP3%\." …
или просто:
Код: Выделить весь код
if exist "%sFolderMP3%\" …
а не:
Код: Выделить весь код
if exist "%sFolderMP3%" …
ибо последнее сработает также и для файла «%sFolderMP3%», что, конечно, не является правильным.

Цитата Vovchik1900:
2. если у меня треки имеют формат 1.Исполнитель-Название трека.mp3 и так до nnnn.Исполнитель-Название трека.mp3, а картинки тоже как-нибудь пронумерованы. »
Написать пакетный файл как-нибудь .
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:56, 06-06-2011 | #29


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,

Спасибо большое!!))

а теперь самый последний вопрос: вот этот код, который находит папку.... сшивает картинки и музыку...... это на каком языке программирования? на Python?
читать дальше »

Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

Присваиваем переменной окружения sFolderMP3 первый аргумент пакетного файла (без возможных кавычек)
set sFolderMP3=%~1
Присваиваем переменной окружения sFolderImage первый аргумент пакетного файла (без возможных кавычек)
set sFolderImage=%~2

Делаем проверки на то, что, как минимум задано два аргумента пакетного файла, и они обозначают объекты файловой системы:

Если переменная окружения sFolderMP3 определена (т.е., первый аргумент пакетного файла был задан), то…
if defined sFolderMP3 (
	Если переменная окружения sFolderImage определена (т.е., второй аргумент пакетного файла был задан), то…
	if defined sFolderImage (
		Если существует папка [или файл, здесь у меня, к сожалению, ошибка] %sFolderMP3%, то…
		if exist "%sFolderMP3%" (
			Если существует папка [или файл, и здесь у меня ошибка] %sFolderImage%, то…
			if exist "%sFolderImage%" (
				Сделав проверки, вызываем процедуру переименования
				call :ScanFolder "%sFolderMP3%" "%sFolderImage%"
				Выходим из пакетного файла без ошибки
				exit /b 0
			) else (
				Папка [или файл, здесь у меня ошибка] %sFolderImage% не существует — сообщаем об ошибке
				echo Folder [%sFolderImage%] not found.
			)
		) else (
			Папка [или файл, здесь у меня ошибка] %sFolderMP3% не существует — сообщаем об ошибке
			echo Folder [%sFolderMP3%] not found.
		)
	) else (
		Переменная окружения sFolderImage определена (т.е., второй аргумент пакетного файла не был задан) — сообщаем об ошибке
		echo Need arguments.
	)
) else (
	Переменная окружения sFolderMP3 не определена (т.е., вообще пакетный файл был вызван вовсе без аргументов, можно сообщать об ошибке, но я не стал, ибо далее всё одно будет выведено сообщение по использованию пакетного файла
	rem echo Need arguments.
)

Если дошли сюда — значит, чего-то не хватает. Выводим сообщение по использованию пакетного файла
echo.
echo Usage: %~nx0 ^<Folder with *.mp3 files^> ^<Folder with *.jpg files^>
echo.
echo Use template ^<Track*.mp3^> for audio files. Example:
echo.
echo     Track1.mp3
echo     Track2.mp3
echo     ...
echo     TrackNNN.mp3
echo.
echo Use template ^<Picture*.jpg^> for image files. Example:
echo     Picture1.jpg
echo     Picture2.jpg
echo     ...
echo     PictureNNN.jpg

endlocal
Выходим из пакетного файла с ошибкой
exit /b 1

Процедура переименования
:ScanFolder "%sFolderMP3%" "%sFolderImage%"
	setlocal

	Перебираем переменную «%%i» от 1 до 999 с шагом 1
	for /l %%i in (1, 1, 999) do (
		Если существует файл «%sFolderMP3%\Track%%i.mp3», то…
		if exist "%sFolderMP3%\Track%%i.mp3" (
			Если существует аналогичный ему файл «%sFolderImage%\Picture%%i.jpg», то…
			if exist "%sFolderImage%\Picture%%i.jpg" (
				Снимаем возможный атрибут Read-Only (что часто бывает при копировании *.mp3 с CD/DVD) у файла «%sFolderMP3%\Track%%i.mp3»
				attrib.exe -r "%sFolderMP3%\Track%%i.mp3"
				Выводим сообщение
				echo Adding [%sFolderImage%\Picture%%i.jpg] to [%sFolderMP3%\Track%%i.mp3]

				Сначала удаляем существующий FRONT_COVER. Для этого вызываем модуль Python eyeD3 с аргументами:
				--no-color — не добавлять в вывод цветовые Escape-последовательности
				-F `— использовать в качестве разделителя гравес «`» вместо умолчальных двойных кавычек (сие позволяет использовать двойные кавычки для указания полных путей к файлам)
				--v2 — будем работать со второй версией тэгов
				--to-v2.3 — преобразуем существующие тэги к к версии 2.3
				--add-image=""`FRONT_COVER — удаляем FRONT_COVER, если он есть, указав пустое имя файла
				"%sFolderMP3%\Track%%i.mp3" — имя файла, с которым работаем
				C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image=""`FRONT_COVER "%sFolderMP3%\Track%%i.mp3"
				Теперь добавляем новый FRONT_COVER. Для этого вызываем модуль Python eyeD3 теми же аргументами, за исключением:
				--add-image="%sFolderImage%\Picture%%i.jpg"`FRONT_COVER — добавляем FRONT_COVER, указывая имя файла «%sFolderImage%\Picture%%i.jpg»
				C:\Python26\python.exe C:\PyModules\eyeD3-0.6.17\bin\eyeD3 --no-color -F ` --to-v2.3 --v2 --add-image="%sFolderImage%\Picture%%i.jpg"`FRONT_COVER "%sFolderMP3%\Track%%i.mp3"
			)
		)
	)

	endlocal
	exit /b

Отправлено: 06:45, 06-06-2011 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Работа с Mp3 файлами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Работа с файлами D@n1k007 Программирование и базы данных 2 19-06-2010 16:06
Чудеса с mp3 файлами Antoniooo Лечение систем от вредоносных программ 7 10-04-2009 15:57
Работа с файлами ramo Программирование в *nix 5 23-04-2007 12:33
Работа с файлами в  Pascal paladin Программирование и базы данных 2 26-04-2004 11:31
Работа с *.lng файлами Artya Хочу все знать 2 18-03-2003 14:43




 
Переход