Снова рейтинг (статистика)

Список разделов Аудиоплеер foobar2000 Есть вопрос!

Описание: У вас проблемы с foobar2000 и вам необходима помощь? Спрашивайте здесь!
Правила раздела: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть. Подробно описывайте проблему. Не забывайте указать версию плеера, название сборки, по возможности добавить скриншоты проблемы.

Сообщение #1 MeinHerz » 27.04.2018, 12:13

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

Вопрос, поднимаемый ранее решён с помощью компонента foo_texttools.
В нем составляю запрос в виде шаблона CSV-файла:
Код: Выделить всё
"%artist%","%date%","%album%","%tracknumber%","%title%","%length_seconds%",["%rating%"],["%play_count%"]
Выделяю все треки в плейлисте и копирую статистику в буфер обмена через контекстное меню плейлиста. Сохраняю в файл csv. Обрабатываю в powershell:
Спойлер
Код: Выделить всё
param ($file)

$csv = import-csv -path $file -delimiter ',' -encoding default -header 'ARTIST','YEAR','ALBUM','#','TITLE','LENGTH','RATING','COUNT'

$groups = $csv | group-object 'YEAR','ALBUM'

$report = 0..($groups.count - 1) | foreach {

    foreach ($track in $groups[$_].group)
    {

        $artist       = $track.artist
        $year         = $track.year
        $album        = $track.album
        $albumlength += [int] $track.length
        $albumrating += [int] $track.rating
   
    }

    [pscustomobject] @{

        ARTIST = $artist
        YEAR   = $year
        ALBUM  = $album
        TRACKS = $groups[$_].group.count
        RATING = $(if ($albumrating) { '{0:N}' -f  ($albumrating / $groups[$_].group.count) })
        LENGHT = (new-timespan -seconds $albumlength).tostring()

    }

    $albumlength = $albumrating = $null

}

$report | format-table
Получаю статистику, где средний рейтинг альбома и его продолжительность, вида:
Код: Выделить всё
ARTIST                            YEAR ALBUM                               TRACKS RATING LENGHT
------                            ---- -----                               ------ ------ ------
Бригадный Подряд                  2014 Сомнамбула (Переиздание)                12 4,17   00:32:48
Бригадный Подряд                  2015 Новый Сезон                             10 3,50   00:27:16
MeinHerz
Автор темы, Бывалый
Репутация: 8
С нами: 5 месяцев 5 дней

Сообщение #2 George Smith » 27.04.2018, 15:50

MeinHerz, если Вы знаете SQL, то для foobar2000 есть плагины, которые позволяют делать выборку из библиотеки или плейлистов с помощью SQL-запросов.
http://www.foobar2000.org/components/view/foo_uie_sql_tree
http://www.foobar2000.org/components/view/foo_sqlite
George Smith
Бывалый
Репутация: 42
С нами: 4 года 7 месяцев

Сообщение #3 MeinHerz » 27.04.2018, 22:34

К сожалению не знаю достаточно для того, чтобы делать грамотные запросы. Спасибо за вариант.
MeinHerz
Автор темы, Бывалый
Репутация: 8
С нами: 5 месяцев 5 дней


Вернуться в Есть вопрос!