1

Тема: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Доброго времени суток!
Есть плагин вывода статистику icecast для CMS Joomla

мне не нравится что он выводит не сколько слушает, а пик слушателей.
И хотелось бы чтоб вместо ссылки на сайт радио выводилось название потока с icecast

Собствено сам мод: mod_icecast_v.2.0_hzs

Отредактировано Крик (22-06-2013 12:39:26)

2

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

выглядет так:
http://savepic.org/3671695.png

3

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Хм, возможно покажусь дебилом... А разве сейчас он делает не так? Там "стандартный" парсер с выводом всего необходимого.
Вот класс, отвечающий за вывод

if (strlen($current_song)<2)
        {
            $result->status = 1;
        }
        else
        {
            $result->status = 0;
            $result->mount     = $params->get('point');
            $result->listeners = $current_listeners + $params->get('fake');
            $result->listfake  = $current_listeners + $params->get('fake');
            $result->cur_song  = $current_song;

        }
        return $result;

А вот что он может выводить (кстати первый раз вижу чтобы из массива дергали (причем двумерного???) )

        if ($file = file_get_contents($addr))
        {
            preg_match_all('#(\<td class=\"streamdata\"[^\>]*\>).+?(\<\/td\>)#is',$file , $matches,PREG_PATTERN_ORDER );
            $stream_title = strip_tags("{$matches[0][0]}");
            $stream_description = strip_tags("{$matches[0][1]}");
            $content_type = strip_tags("{$matches[0][2]}") ;
            $mount_started = strip_tags("{$matches[0][3]}") ;
            $bitrate = strip_tags("{$matches[0][4]}") ;
            $current_listeners = strip_tags("{$matches[0][5]}") ;
            $peak_listeners = strip_tags("{$matches[0][6]}") ;
            $stream_genre = strip_tags("{$matches[0][7]}") ;
            $current_song = strip_tags("{$matches[0][8]}") ;
        }

Сам шаблон вывода записан в tmpl/default.php

Отредактировано DragonZX (20-06-2013 13:56:38)

4

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

на скрине выше видно надпись bla-bla! это я прописывал в настройках плагина в админке и по факту учитывает пик слушателей а не сколько сейчас слушает.
А я хочу чтоб вместо Bla-Bla! Выводился stream title ибо там обычто пишет свой ник Dj ну и интереснее видеть сколько щас слушает людей радио

5

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

пишет Крик:

на скрине выше видно надпись bla-bla! это я прописывал в настройках плагина в админке и по факту учитывает пик слушателей а не сколько сейчас слушает.
А я хочу чтоб вместо Bla-Bla! Выводился stream title ибо там обычто пишет свой ник Dj ну и интереснее видеть сколько щас слушает людей радио

Так и приводите default.php в соответствие желаемому

<div align = "center" class="icecast<?php echo $params->get('moduleclass_sfx'); ?>">
<script type="text/javascript">var siteroot = "<?php echo $baseurl ?>";</script> # Адрес радиостанции
<span class='icecast_title' style='display:none'><?php echo $module->id ?></span> 
<a href="<?php echo $host ?>" target="_blank"><b><?php echo $ice2_station ?></b></a><p>
<div class="icacast-song"><?php echo JText::_( 'PLAYING' );?> # Надпись сейчас играет
<p /><p class="icecast-song"><?php echo $item->cur_song?></div> # текущая песня
<?php echo JText::_( 'CLICK' );?>
<div class="icacast-play">
<a href="ht*tp://<?php echo $link?>">
<img src="<?php echo $baseurl?>/media/mod_icecast/play.png" title="<?php echo JText::_( 'ALT_IMG' );?>" alt="<?php echo JText::_( 'ALT_IMG' );?>"></a>
</div>
<div class="icacast-list"><?php echo JText::_( 'PEOPLE' );?> <b class="icecast-listeners"><?php echo $item->listfake ?></b></div> # Количество людей вместе с фейковыми
<div class="icacast-bitrate"><?php echo JText::_( 'BITRATE' );?> <b><?php echo $bitrate?></b> <?php echo JText::_( 'KBPS' );?></div>
</div>

То есть как-то так

<div align = "center" class="icecast<?php echo $params->get('moduleclass_sfx'); ?>">
<p class="icecast-song"><?php echo $item->stream_description?></div></p><p>
<div class="icacast-song"><?php echo JText::_( 'PLAYING' );?> # Надпись сейчас играет
<p /><p class="icecast-song"><?php echo $item->cur_song?></div> # текущая песня
<?php echo JText::_( 'CLICK' );?>
<div class="icacast-play">
<a href="ht*tp://<?php echo $link?>">
<img src="<?php echo $baseurl?>/media/mod_icecast/play.png" title="<?php echo JText::_( 'ALT_IMG' );?>" alt="<?php echo JText::_( 'ALT_IMG' );?>"></a>
</div>
<div class="icacast-list"><?php echo JText::_( 'PEOPLE' );?> <b class="icecast-listeners"><?php echo $item->listeners ?></b></div> # Количество людей вместе с фейковыми
<div class="icacast-bitrate"><?php echo JText::_( 'BITRATE' );?> <b><?php echo $bitrate?></b> <?php echo JText::_( 'KBPS' );?></div>
</div>

При этом в helper.php

if (strlen($current_song)<2)
        {
            $result->status = 1;
        }
        else
        {
            $result->status = 0;
            $result->mount     = $params->get('point');
            $result->listeners = $current_listeners;
            $result->listfake  = $current_listeners + $params->get('fake');
            $result->cur_song  = $current_song;
            $result->stream_description  = $stream_description;
        }
        return $result;

Могу конечно и ошибаться, но вот как-то так (убрать звездочку ht*tp)

Отредактировано DragonZX (20-06-2013 15:41:24)

6

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Не тогда после правки вобще работать перестаёт, вместе со статистикой исчезает и плеер и сколько людей на сайте

Отредактировано Крик (20-06-2013 16:22:38)

7

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Возможно где-то синтаксическая ошибка. Сейчас тестировать на сервере я не имею возможности. Поймите логику и попробуйте сами. И да, включите отображение ошибок php. Естественно в случае ошибки скрипт работать не будет.
upd: логично, точку с запятой пропустил, исправил)

Отредактировано DragonZX (20-06-2013 15:42:23)

8

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Всё я разобрался! DragonZX огромное тебе спасибо! Во век не забуду!

9

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Появилась небольшая проблема: статистика в плагине перестала обновляться сама по себе, вроде ни чего связаного с с обновлением скрипта не трогал, кто посмотрит?
Плагин с моими переделками -> mod_icecast_v.2.0_hzs_fix

10

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Разобрался сам, всё работает .

11

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

как говориться всё, да не всё. Вывести вывел, а вот с обновлением пока беда. именно с обновление Description. Я в принципе понимаю почему, потому что в update.js и ajax.php не задано соответствующего контента.
Файл update.js содиржимое:

IceCastUpdater = new Class({
    title: '',
    el: Class.empty,
    active: false,
    
    initialize: function(id, el) {
        this.id = id;
        this.el = el;
        this.update.periodical(5000, this);
    },

    update: function() {
        var t = this;
        if (this.active) return;
        this.active = true;
        var myAjax = new Ajax(siteroot + '/modules/mod_icecast/ajax.php?id=' + this.id + '&ts=' + $time(), {
            method: 'get',
            onComplete: function(response) {
                t.active = false;
                var result = Json.evaluate(response);

                $ES('.icecast-song', t.el).setText(result.title);
                $ES('.icecast-listeners', t.el).setText(result.listeners);
            }
        }).request();
    }
});
window.addEvent('domready', function() {
    $$('.icecast_title').each(function(el) {
        new IceCastUpdater(el.getText(), el.getParent());
    });
});

тут как я понял надо добавить строчку     $ES('.icecast-description', t.el).setText(result.description); после $ES('.icecast-listeners', t.el).setText(result.listeners);

и ajax.php

<?php
/**
 * ICECAST - A Joomla internet radio statistic module
 * @version 1.0.9
 * @package mod_icecast.zip
 * @copyright (C) 2010 by sli
 */

/*
 * Поскольку этот скрипт является отдельной точкой входа,
 * инициализируем фреймворк так же, как это сделано в /index.php
 */

define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(dirname(dirname(__FILE__))) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

// Подключаем хелпер
require_once(dirname(__FILE__).DS.'helper.php');
jimport('joomla.application.module.helper');

function paramsById($id)
{
    $db = JFactory::getDBO();
    $db->setQuery('SELECT params FROM #__modules WHERE id = '. $db->quote($id));
    return new JParameter($db->loadResult());
}

$data = ModHelperIceCast::getParams(paramsById(JRequest::getInt('id')));
if (!isset($data->listeners)) {
    $data->listeners = 0;
    $data->cur_song = 'n/a';
}
echo '{listeners: ', $data->listeners, ', title: "', str_replace('"', '\'\'', $data->cur_song), '"}';
?>

как я понял мне надо что-то дописать в этой части:

if (!isset($data->listeners)) {
    $data->listeners = 0;
    $data->cur_song = 'n/a';
}
echo '{listeners: ', $data->listeners, ', title: "', str_replace('"', '\'\'', $data->cur_song), '"}';

Вот только мой прежний метод эксперементов не помог, прошу вашей помощи.

12

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

незнаю про этот мод но тот что мы с tarasian666 доработали кажется получше будет. там 2 потока добавлено (разный битрейт), вывод аваторки и ник DJ, какой трек играет, и я ещё туда плеер запихал. если надо то залил на яндекс диск mod_icecast

И да поможет мне F1,
И да сохранит меня F6,
Во имя Ctr'а, Alt'a и святого Delit'а.
Enter...

13

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

можно с двух один собрать

И да поможет мне F1,
И да сохранит меня F6,
Во имя Ctr'а, Alt'a и святого Delit'а.
Enter...

14

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Спасибо! Скачал, поюзаю. Ну этот доработать всё же охото тут уже спортивный интерес!

15

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Кстати в моём случае за основу взят тот же мод.

16

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

блин, что помочь некому? всего лишь то надо подсказать чуть, чуть и готовый плагин!

17

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

http://savepic.org/3765477.png
Вот чего я добился благодоря подсказке DragonZX, единственный косяк на данный момент - это кто в эфире не обновляется само по себе.

18

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

с слушателями решил проблему тоже.

19

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Ну я не знаю здесь как он что обновляет, предполагаю что да
update.js

update: function() {
        var t = this;
        if (this.active) return;
        this.active = true;
        var myAjax = new Ajax(siteroot + '/modules/mod_icecast/ajax.php?id=' + this.id + '&ts=' + $time(), {
            method: 'get',
            onComplete: function(response) {
                t.active = false;
                var result = Json.evaluate(response);

                $ES('.icecast-song', t.el).setText(result.title);
                $ES('.icecast-listeners', t.el).setText(result.listeners);
                $ES('.icecast-description', t.el).setText(result.description);
            }

и ajax.php

if (!isset($data->listeners)) {
    $data->listeners = 0;
    $data->cur_song = 'n/a';
    $data->description = 'n/a';
}
echo '{listeners: ', $data->listeners, ', ''description: ', $data->description, ', title: "', str_replace('"', '\'\'', $data->cur_song), '"}';

Прошу проверить кавычки - мелко, не вижу.

Отредактировано DragonZX (24-06-2013 12:13:38)

20

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Кстати вот тут
https://github.com/DragonZX/streamingpl … aylist.php
у меня интересный скриптик  который тут пригодится wink

21

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Так перестаёт обновляться инфа sad

22

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Ну я же просил проверить кавычки wink
Исправил

23

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Для меня как раз ковычки это печаль smile, спасибо щас проверю!

24

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

Та же беда sad

25

Re: Плагин вывода статистики с Icecast2 в joomla нужна помощь

echo '{listeners: ', $data->listeners, ', description: ', $data->description, ', title: "', str_replace('"', '\'\'', $data->cur_song), '"}';