Говорят, что создание сайта - очень длительный и трудоемкий процесс. Мы скажем - НЕТ! Ведь с новыми технологиями, такими как HTML5, CSS3, PHP и MySql можно быстро и легко научиться создавать сайты любой сложности.
Два сумасшедших веб-мастера покажут где что лежит и как этим пользоваться.
Авторизация
Новый
Забыл
Пожалуйста, заполните поля выше. Это нужно сделать обязательно, иначе ничего не получится.
PHP Статейки /

Манипуляция с тегами MP3 файла в PHP

  • Пятница, 29 июля 2012, 14:44 |
  • Автор: fiamma |
  • Просмотров: 2917 |
  • Комментарии: 0 |
  • В закладки:
Манипуляция с тегами MP3 файла в PHPНаверное ты знаешь, что практически все MP3 файлы (да и вообще все музыкальные файлы) содержат специализированный раздел, куда записываются такие данные как название трэка, название альбома, год выхода альбома, жанр трэка и т.д.

Для решения поставленной задачи (а именно: достать все метатеги и загнать их в базу данных) мы использовали пакет Pear MP3_Id. Вообще существует достаточно большое количество библиотек для манипуляции с тегами MP3 файла, но это был тот вариант, на котором мы остановились.

Сл. примеры показывают, как использовать данный пакет.

Хочу напомнить, что рекламным партнером этого урока является сайт www.cs-servs.ru, на своих страницах он рассказывает о том, как быстро и легко заработать денежные знаки в Интернет пространстве, может кому-то из читателей покажется эта информация интересной.
Итак, собственно урок:


Установка MP3_Id:
Для установки данного пакета необходимо воспользоваться инсталятором Pear. Ну или ты можешь скачать пакет с официального сайта.
pear install MP3_Id-1.2.1

Чтение MP3 тегов:
Функция описанная далее читает все mp3 файлы в заданной директории и возвращает массив с метаданными.
<?php

require_once("MP3/Id.php");

function read_mp3_tags($dir)
{
    static $result = array();
    static $i = 0;

    $tag_string = "";

    $mp3 = &new MP3_Id();

    // Tags supported by the MP3_Id class
    $tags = array(
                  "name", "artists", "album",
                  "year", "comment", "track",
                  "genre", "genreno"
                  );


    // Read the current directory
    $d = dir($dir);

    // Loop through all the files in the current directory:
    while (false !== ($file = $d->read()))
    {
        // Skip '.' and '..'
        if (($file == '.') || ($file == '..'))
        {
            continue;
        }

        // If this is a directory, then recursively call it
        if (is_dir("{$dir}/{$file}"))
        {
            read_mp3_tags("{$dir}/{$file}");
        }
        else
        {
            // It's a mp3 file so read the tags
            if(strtolower(substr($file, strlen($file) - 3, 3)) == "mp3")
            {
                $data = $mp3->read("{$dir}/{$file}");

                // OOPs, some error occured, just save the filename
                if (PEAR::isError($data))
                {
                    $result[$i]['filename'] = $file;
                    $result[$i]['directory'] = $dir;
                }
                else
                {
                    $result[$i]['filename'] = $file;
                    $result[$i]['directory'] = $dir;

                    // Read all the tags of the particular file
                    foreach($tags as $tag)
                    {
                        $result[$i][$tag] = $mp3->getTag($tag);
                    }
                }
                $i++;
            }
        }
    }

    return $result;
}


// Call the above function on your mp3 directory
$results = read_mp3_tags(PATH_TO_YOUR_MP3_DIRECTORY);
print_r($results);

?>


Изменение MP3 тегов:
После чтения метаданных вам может потребоваться изменить или добавить теги. Следующий пример показывает, как можно добавить название альбома с существующим ID3v1 данным.
<?php

require_once("MP3/Id.php");

$mp3 = &new MP3_Id();

// Read the MP3 file
$mp3->read("Tears For Fears - Shout.mp3");

// Add the album name to the 'album' tag
$mp3->setTag("album", "Songs from the Big Chair");

// This is essential. We need to write back the changes
$mp3->write();

?>

Если вы хотите скопировать теги одного mp3-файла в другой, то это делается так:
<?php

require_once("MP3/Id.php");

$mp3_1 = &new MP3_Id();
$mp3_2 = &new MP3_Id();

$mp3_1->read("Tears For Fears - Shout.mp3");
$mp3_2->read("Tears For Fears.mp3");

// Copy tags from 'Tears For Fears - Shout.mp3' to 'Tears For Fears.mp3'
$mp3_2->copy($mp3_1);
$mp3_2->write();

?>

А еще вы можете почитать статью: Создание постраничной навигации на PHP
Добавить комментарий