pbm806 » 27.02.2010, 15:14
Плагин с условным названием выбрать аналог
Суть такая. Есть одна песня, но в разных вариантах - студийная, концертная, ремикс. Иногда хочу слушать концертную запись, иногда студийную но с разной частотой. Поэтому опираться на количество проигрываний не могу. А вот ремикс или, допустим, черновую запись хочу слушать ну ОЧЕНЬ редко, раз в 10-15 реже, чем студийный вариант.
Как может быть реализовано.
То, что песня одна и та же вычисляется по определенному ручками задаваемуму тегу, например, ID. То есть у трех предыдущих треков должен быть одинкаовый ID=12345, заносится руками. Далее по некоторым тегам с помощью TAGZ-функций вычисляется некоторое число "приоритета" для каждого найденного в локальной медиа базе данных трека с таким ID. Потом полученные значения сравниваются и выбирается самое большое. Если возвращается ноль (трек отсутствует в БД, или у трека нет ID, или еще какая ошибка), тогда выбора из БД не происходит и проигрывается именно тот трек, который стоит в плейлисте.
Скорее всего, вычисляться должо обязательно на основе рейтинга и даты последнего проигрывания. НО! Очень хочется иметь возможность задать свое выражение для вычисления "приоритета". Кроме варианта исполнения студия / концерт, может иметь значение, например, что этот трек битый или что песня в исполнении другого артиста, или дуэтом и т.д.
Где-то был плагин рандомного трека, для версии foobar 0.9.4.5 (последняя под Windows 2000), но там не было поддержки TAGZ, а только поиск по строке. И самое главное, что там нельзя было обновлять теги у случайно воспроизводимого файла, то есть с помощью того плагина нельзя даже посчитать число исполнений случайного трека. Трек-то играется, а вместо информации в тегах стоит запрос к БД.
Перемешивать список воспроизведения совершенно нельзя. shuffle тоже не решает задачи - основной порядок воспроизведения треков должен сохраняться, просто для некоторых треков будут проиграны их аналоги, но при этом не замещая их в списке воспроизведения.
Не знаю, можно ли проигрывать трек, который вообще отсутствует в списке воспроизведения. Судя по тому, что исполняемый в данный момент трек легко удаляется из списка - можно. Возможно ли НАЧАТЬ проигрывать файл, которого вообще нету в списке затрудняюсь гадать. Если нельзя, тогда выбранную из БД песню можно временно воткнуть в плейлись по месту расположения курсора, но после исполнения трек нужно автоматом удалять.