aveyda7
@aveyda7
Photoshop

Как сделать нормальный вывод что сейчас в эфире?

Сделал такой алгоритм.
Программа генерирует каждые 15 минут один и тот же файл, внутри которого 2 строчки: в первой строке имя артиста и название песни текущего трека, во второй соответственно что будет дальше.

Все это дело, через утилиту xStarter загружается каждые 10 секунд на фтп, где уже обрабатывается php скриптом..

Если название текущей композиции из базы данных, не совпадает с названием композиции из текстового файла, то название из базы данных пишем в предыдущую композицию.

Сам файл запускается Cron'om каждую минуту.

Зацените скрипт, может у кого есть другие примеры реализации вывода?

<?php
// Запрет на кеширование
nocache_headers();
// Устанавливаем время раьоты скрипта в 1 минуту
ini_set("max_execution_time", 60);
// Устанавливаем счетчик на 0
$x = 0;
// Запускаем цикл в 19 раз
while ($x < 19) {
    clearstatcache();
//укажем путь к файлу с нащваниями песен и артистов
    $streamfile = '/var/www/****/public_html/***/stream/stream.txt';
    if (file_exists($streamfile)) {
        echo "Файл существует";

        $last_update = filemtime($streamfile);

// Время отлично подходит в качестве параметра для функции date()
        $date_last_update = date('Y-m-d H:i:s', $last_update); // 2011-10-09 23:39:27

// получим файл по адресу
        $streamfile = file_get_contents($streamfile);
// конвертируем колировку в ютф8
        $streamfile = mb_convert_encoding($streamfile, "utf-8", "windows-1251");
// разбиваем текст на две строки
        $stream_parts = explode(PHP_EOL, $streamfile);
// разбиваем вторую строку на артиста и название трека
        $current_parts = explode(' - ', $stream_parts[1]);

// разбиваем первую строку
        $next_parts = explode(' - ', $stream_parts[0]);

        echo '<h3>текущий трек</h3><br>';
        echo 'имя исполнителя:<br>';
        echo $current_parts[0];
        echo '<br>название трека:<br>';
        echo $current_parts[1];


        echo '<br><h3>следующий трек</h3><br>';
        echo 'имя исполнителя:<br>';
        echo $next_parts[0];
        echo '<br>название трека:<br>';
        echo $next_parts[1];

        $get_current_song = get_field('current_song', 1613);
        $get_current_artist = get_field('current_artist', 1613);

        echo '<br><h3>текущий трек из базы</h3><br>';
        echo 'имя исполнителя:<br>';
        echo $get_current_artist;
        echo '<br>название трека:<br>';
        echo $get_current_song;

        if ((string)$current_parts[0] == (string)$get_current_artist) {
// если название артиста из файла(играет сейчас) совпадает с запрошенным из базы данных
            echo '<p style="color:red;">имя артиста совпадает с именем из базы текущего трека.</p>';
        } elseif ((string)$current_parts[0] == 'Джингл') {
            echo '<p style="color:black;">джинг в настоящем обнаружен</p>';
        } elseif ((string)$next_parts[0] == 'Джингл') {
            echo '<p style="color:black;">джинг в новом обнаружен</p>';
        } else {
            //
            echo '<p style="color:green;">имя артиста не совпадает с именем из базы текущего трека.</p>';
            $get_current_song = get_field('current_song', 1613);
            $get_current_artist = get_field('current_artist', 1613);

            $get_logs = get_field('logs', 1613);
            $write = $current_parts[0] . " - " . $current_parts[1] . "\r\n";
            $uplogs = $get_logs . $write;
            update_field('logs', $uplogs, 1613);

            // обновляем артиста раньше
            update_field('prev_artist', $get_current_artist, 1613);
            // обновляем название трека раньше
            update_field('prev_song', $get_current_song, 1613);

            // обновляем артиста сейчас
            update_field('current_artist', $current_parts[0], 1613);
            // обновляем название трека сейчас
            update_field('current_song', $current_parts[1], 1613);


            // обновляем артиста следующий
            update_field('next_artist', $next_parts[0], 1613);
            // обновляем название трека следующий
            update_field('next_song', $next_parts[1], 1613);

        }


// получаем счетчик
        $count = get_field('count', 1613);
        // добавляем 1 к счетчику
        $count++;
        // обновляем счетчик
        update_field('count', $count, 1613);

    } else {
        echo "ошибка открытия файла";
    }


    $x++; // Увеличение счетчика
// спим 3 секунды
    sleep(3);
}
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
aveyda7
@aveyda7 Автор вопроса
Photoshop
Полностью переписал скрипт, завязан теперь на api radioboss
<?php
nocache_headers();
// Устанавливаем время раьоты скрипта в 1 минуту

ini_set("max_execution_time", 60);
// Устанавливаем счетчик на 0
$x = 0;
// Запускаем цикл в 19 раз
while ($x < 30) {
    clearstatcache();
// Укажем путь к файлу
    $streamfile = '/var/www/*******/public_html/****.online/stream/stream.txt';
// Получим время последнего изменения файла
    $last_update = filemtime($streamfile);
// Конвертируем время
    $date_last_update = date('Y-m-d H:i:s', $last_update); // 2011-10-09 23:39:27
// получим файл по адресу
    $streamfile = file_get_contents($streamfile);
// конвертируем кодировку в ютф8
    $streamfile = mb_convert_encoding($streamfile, "utf-8", "windows-1251");
// разбиваем текст на две строки
    $stream_parts = explode(PHP_EOL, $streamfile);
// разбиваем первую строку, детали будущей песни
    $next_parts = explode(' - ', $stream_parts[0]);


// обновляем артиста следующий
    update_field('next_artist', $next_parts[0], 1613);
// обновляем название трека следующий
    update_field('next_song', $next_parts[1], 1613);

// Запросим документ
    $recentwidgeturl = 'https://c28.radioboss.fm/w/recenttrackslist?u=47&*****';
    $recentfile = file_get_contents($recentwidgeturl);


    $recentdata = json_decode($recentfile);
    $recent_raw = $recentdata[1]->title;

    $recent_parts = explode(' - ', $recent_raw);

// обновляем артиста раньше
    update_field('prev_artist', $recent_parts[0], 1613);
// обновляем название трека раньше
    update_field('prev_song', $recent_parts[1], 1613);


    $now_raw = $recentdata[0]->title;

    $now_parts = explode(' - ', $now_raw);
// обновляем артиста сейчас
    update_field('current_artist', $now_parts[0], 1613);
// обновляем название трека сейчас
    update_field('current_song', $now_parts[1], 1613);


// получаем счетчик
    $count = get_field('count', 1613);
// добавляем 1 к счетчику
    $count++;
// обновляем счетчик
    update_field('count', $count, 1613);


    $x++; // Увеличение счетчика
// спим 3 секунды
    sleep(2);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы