MPC-BE forum

MPC-BE => Обсуждение / Discussion => Тема начата: V0lt от 27 августа 2017, 09:29:11

Название: История
Отправлено: V0lt от 27 августа 2017, 09:29:11
Предлагаю радикально переработать истории открытых файлов/URL.

Ссылка на утилиту MPC-BE_History (https://disk.yandex.ru/d/6Totp54biNiZkQ)

Путь к файлу истории: %APPDATA%\MPC-BE\history.mpc_lst.
При хранении настроек в папке плеера history.mpc_lst будет там же.

Что не устраивает
1. Зависимость количества запомненных позиций от количества отображаемых в меню. Если нужна длинная история, то меню не вмещается в экран. Сделать длинную историю сейчас нельзя.
2. Не запоминается название для YouTube, видим лишь непонятный URL.
3. История пишется совместно с настройками (.INI) и с 2-3 секциях реестра.
4. Нет выборочного удаления из истории.

Идеи и наработки
1. Помнить единую историю для файлов, URL и DVD-Video. Количество записей от 100 до 999.
2. Опция "Количество последних файлов" будет влиять только на отображение меню последних файлов.
3. Историю хранить в отдельном файле history.mpc_lst рядом с файлом default.mpcpl.
4. Пишем и используем историю согласно настройкам. В планах доп. настройки.
5. Специальное окно для управления историей (выбор, удаление, фильтр и т.д). Не реализовано.

Структура history.mpc_lst (в разработке).
Для каждого пункта истории будет своя запись содержащая следующие поля:
1. Путь к файлу или URL. Для YouTube URL страницы ролика.
2. Название (при наличии).
3. Время открытия в формате UTC.
4. Позиция просмотра (если известна длительность). Для DVD свой формат записи.
5. Номер выбранной аудио-дорожки (если более одной) и номер выбранных субтитров (если имеются).
6. Путь к выбранной вненим аудио-дорожки или субтитрам. Не реализовано.

Закладки будут сохраняться в файле favorites.mpc_lst.

Наработки добавлены в MPC-BE 1.6.0.6304 alpha.


Небольшой TODO:
1. Попробовать сделать проверку изменения файла по времени изменения. Возможно это уменьшит количество обращений к диску.
2. Сделать распознавание текущих внешних аудиодорожки и субтитров, и записывать путь к ним в историю.
3. Добавить, переименовать, доработать опции по хранению и использовании истории.
4. Подумать о создании временного файла при сохранении истории.
5. Сделать диалог для просмотра и удаления записей истории.
Название: История
Отправлено: Aleksoid1978 от 28 августа 2017, 02:01:42
Главный вопрос - для чего все это, что сейчас не устраивает ??
Название: История
Отправлено: V0lt от 28 августа 2017, 06:29:11
Добавил.
Название: История
Отправлено: Leo от 28 августа 2017, 07:44:47
Всячески поддерживаю. На самом деле достаточно удобно, особенно пункты "5. Номер выбранной аудио-дорожки (если более одной)." и "6. Номер выбранных субтитров (если имеются)."
Кстати все это есть в линуксовом mpv, он хранит историю в виде пачки файлов в подпапке своих настроек. Он даже размеры окошка и т.п. запоминает :).
Название: История
Отправлено: Aleksoid1978 от 28 августа 2017, 09:45:26
Ну вообще то номер аудио дорожки и субтитров и так уже запоминается ))
Название: История
Отправлено: Leo от 28 августа 2017, 11:24:56
Семеееен-семеныч... ^_^. Но все равно идея неплохая, стоит делать переработку истории.
Название: История
Отправлено: z_mashine от 28 августа 2017, 13:37:52
Цитата: V0ltPS: Формат JSON выбран по причине наличия в нашем проекте библиотеки RapidJSON. Можно сохранять историю в формате INI, но тогда придеться добавлять библиотеку simpleini, т.к. системные фичи ужасны и самому изобретать велосипед не хочется.
а рассматривалась ли идея хранения настроек портативной версии плеера в формате json?
Название: История
Отправлено: V0lt от 28 августа 2017, 18:39:47
Цитата: z_mashineа рассматривалась ли идея хранения настроек портативной версии плеера в формате json?
Можно сказать что нет, т.к. смысла никакого.
Название: История
Отправлено: z_mashine от 28 августа 2017, 23:03:45
Цитата: V0ltМожно сказать что нет, т.к. смысла никакого.
ну так а историю пихать в json есть же смысл?
Название: История
Отправлено: Aleksoid1978 от 29 августа 2017, 02:08:15
Я вот как-то тоже против придумывания новых файлов. Есть либо реестр либо .ini файл с настройками, там все храниться. Пусть так все и останется.
Название: История
Отправлено: V0lt от 29 августа 2017, 06:09:24
Цитата: z_mashineну так а историю пихать в json есть же смысл?
Смыла в JSON для истории тоже особо нет, просто есть парсер-ридер готовый. Сейчас Я больше склоняюсь к записи в стиле INI.
Название: Re: История
Отправлено: V0lt от 14 февраля 2021, 21:35:16
Подниму тему.
Начал делать отдельный от настроек файл со списком последних файлов.

1. Файл будет располагаться там же, где сейчас лежит Default.mpcpl. Т.е. либо в профиле, либо в папке плеера (согласно соответствующей настройке).
2. Будет общая история для файлов, URL и DVD (сейчас у DVD свой список).
3. Список сможет хранить до 100 записей. Опция "количество последних файлов" не будет влиять на размер списка. Она будет использоваться при отображении в меню плеера и Windows.
4. Структура файла подобная INI.
5. Начальное количество полей будет минимальным, в будущем можно будет легко добавить.
Название: Re: История
Отправлено: V0lt от 20 февраля 2021, 07:02:25
Первый блин - mpc-be_6030_history_file_1

Для стандартных настроек файл history искать тут:
%APPDATA%\MPC-BE\
Название: Re: История
Отправлено: Aleksoid1978 от 20 февраля 2021, 07:24:16
Ну вроде как работает :)
Название: Re: История
Отправлено: Aleksoid1978 от 21 февраля 2021, 03:56:29
Есть одно предложение - для онлайн-ссылок, ну как минимум для youtube, хранить и отображать название. Отображать можно примерно так - Имя_клипа(url). Было бы очень информативно, а то сейчас в истории смотришь когда на ссылки youtube - и не понимаешь ху из ху :)
Название: Re: История
Отправлено: V0lt от 21 февраля 2021, 20:51:07
Это можно сделать.

Но сейчас и без этого куча работы, т.к. придется многое переписать и вспомнить кучу нюансов.

Например, нюансы идентификации медиа:
1. Простые файлы. С ними все понятно, идентификатором является полный путь к файлу (включает имя файла).
2. DVD-Video. Тут используется специальный идентификатор выдаваемый DVD-навигатором. Путь не годиться, т.к. для разных дисков вставленных в один привод он будет одинаковым.
3. Образ диска ISO. Если смонтированный образ диска откроется как диск в плеере, то идентификатором будет полный путь к файлу ISO.
4. Ссылка на страницу ролика в YouTube. Идентификатором будет исходная ссылка, а не ссылки на потоки.
5. ...
Название: Re: История
Отправлено: Aleksoid1978 от 22 февраля 2021, 03:30:15
Про DVD - хранить тоже самое что и сейчас. Путь это понятно - ну и все остальное что надо. Я бы не стал заморачиватся и чисто по пути запоминал.
ISO - просто полный путь.
Понятно что придется кое-что переделать для этого.

Youtube - так же исходная ссылка.
Название: Re: История
Отправлено: V0lt от 25 апреля 2021, 13:18:22
mpc-be_6212_history_file_2
Адаптировал исходники февральского билда к текущему коду с небольшими правками.
Некоторые фичи, завязанные на историю отключены.

Путь к файлу истории: %APPDATA%\MPC-BE\history

Напоминаю, билд тестовый. За реплики "Все пропало!" бан на сутки.
Название: Re: История
Отправлено: V0lt от 02 мая 2021, 21:19:41
mpc-be_6228_history_file_4 (https://disk.yandex.ru/d/vYeV_1HoRZccaQ?w=1)
Исправил сохранение истории DVD.
Опции "Запоминать позицию..." могут работать некорректно. Я хотел их сделать с другой логикой, но еще думаю.

Вопросы:
Правильно ли нумеровать номера аудио и субтитров начиная с нуля?
Нужно ли запоминание отключения субтитров?
Название: Re: История
Отправлено: V0lt от 22 мая 2021, 10:05:16
mpc-be_6246_history_file_5
Различные исправления по применению опций.
Исправлено восстановление позиции DVD-Video.

Вопрос о нумерации дорожек начиная с 1 все еще открытый.
Нумерация с 0 удобна на текущем этапе. Но если в будущем захочется сделать "пустые субтитры", то нумеровать дорожки лучше с 1, а 0 оставить для пустышки. Определиться надо до того, как код пойдет в основную ветку.
Название: Re: История
Отправлено: Aleksoid1978 от 22 мая 2021, 10:06:23
-1 - значит ничего, и все.
Название: Re: История
Отправлено: V0lt от 22 мая 2021, 12:11:38
Поясню подробнее, т.к. "-1" тут не причем.
Еще раз напомню, что речь о файле истории, а не внутреннем представлении индексов.

-1 - внутреннее значение в плеере, которое означает, что дорожка еще не выбрана или отсутствует. Это значение в файл истории не пишется и писаться не будет.

Сейчас номера дорожек в файл истории записываются с 0 значения согласно внутренним индексам.
1 дорожка - 0
2 дорожка - 1
3 дорожка - 2
и т.д.

Я предлагаю записывать номер выбранной дорожки в файл истории "по-человечески".
1 дорожка - 1
2 дорожка - 2
3 дорожка - 3
и т.д.

Зачем?
Речь о классическом выборе субтитров, когда чтобы выключить субтитры мы просто перебираем список субтитров до значения "без субтитров". Такое реализовано в железных плеерах (у меня так на ТВ) и некоторых программных (например, PotPlayer). В MPC-BE такого нет. Есть 2 выключателя, которые выключают субтитры глобально.

Значение "без субтитров" обычно идет первым в списке. Поэтому в будущем мой вариант записи в файл истории для субтитров будет выглядеть так:
"без субтитров" - 0
субтитры 1 - 1
субтитры 2 - 2
субтитры 2 - 3
и т.д.
На совместимость это совершенно не повлияет.

Тема про пункт "без субтитров" в плеере поднималась неоднократно. Последний раз 24-10-2020 (http://forum.ru-board.com/topic.cgi?forum=5&topic=50330&start=2880#11).
Название: Re: История
Отправлено: V0lt от 28 мая 2021, 07:20:24
mpc-be_6255_history_file_7 (https://disk.yandex.ru/d/vYeV_1HoRZccaQ?w=1)
Дорожки внутри файла истории нумеруются с 1.
URL-ы начинающиеся на "https://www.youtube.com/watch?" в списке последних файлов заменяются на "YouTube - <Название>".
Добавлена настройка L"LastOpenFile", которая используется в диалоге открытия файлов.
Другие мелкие исправления.
Название: Re: История
Отправлено: Aleksoid1978 от 29 мая 2021, 07:57:12
А у меня есть предложения для любых онлайн ссылок если есть название - выводить "<имя_сайта> - <название>", как пример для Youtube - "youtube - <Название>".
Название: Re: История
Отправлено: V0lt от 29 мая 2021, 10:07:09
Aleksoid1978
Идея хорошая, но Я так не делаю, потому что в некоторых случаях название может быть менее информативным, чем URL .
У Ютуба URL - это машиный хеш. Что находится по ссылке можно понять только по названию. Возможно стоит еще добавлять название канала.
А бывает всякие радио-трансляции, у который в названии текущий трек, что бесполезно для идентификации. Тут URL может оказаться более информативным.

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

mpc-be_6255_history_file_8
Добавлена запись заголовка в историю для разных случаев.
Для DVD-Video запущенного из VIDEO_TS находящегося в корне диска показываем метку диска в списке "последних файлов".

Напомню, внедрения файла истории в основную ветку еще не произошло. Идет этап тестирования. Проверяется корректность хранения истории в отдельном файле по сравнением с тем, что сейчас имеется, не отвались ли что-нибудь важное.
Название: Re: История
Отправлено: Aleksoid1978 от 29 мая 2021, 10:34:23
Эх ещё бы механизм для миграции, я щас не хочу терять историю - поэтому не тестю
Название: Re: История
Отправлено: V0lt от 29 мая 2021, 11:13:20
Мне непонятно, что у людей в истории плеера, которую жалко потерять ради новых фич?

Утилиту можно написать, но это после того, когда зафиксируются формат и имя файла истории.
Название: Re: История
Отправлено: Aleksoid1978 от 29 мая 2021, 14:18:58
Ну вот у меня там щас файлы с разных сериалов да еще и с запоминанием позиций. Потом опять искать какой же последний файл смотрел - ну пока что-то не охота все это терять :)
Название: Re: История
Отправлено: V0lt от 29 мая 2021, 21:10:38
mpc-be_6259_history_file_9
Исправлена запись последних файлов для ярлыка в панели задач.
Возвращена запись позиции в файле только при просмотре более 30 секунд.
Название: Re: История
Отправлено: V0lt от 02 июня 2021, 19:47:31
mpc-be_6259_history_file_10
Добавлена замена URL-ов начинающиеся на "https://youtu.be/" на "YouTube - <Название>" в списке последних файлов.
Устранен случайный откат изменения r6238.

MPC-BE_History_test5 - показ текущей истории из реестра и экпериментальной истории из файла.
Добавлена автоматическая фильтрация дублей.
Добавлена нумерация записей.
Добавлена возможность импортировать историю из реестра в файл.
Название: Re: История
Отправлено: V0lt от 06 июня 2021, 09:07:03
Прошу совета. Нужно придумать название файла истории.

Варианты:
Playback.mpc_history
History.mpc_history
History.mpc_list
...

Playback.mpc_history - норм?
Название: Re: История
Отправлено: Aleksoid1978 от 06 июня 2021, 09:10:04
Да просто history или mpc-be.history
Название: Re: История
Отправлено: V0lt от 06 июня 2021, 09:49:36
Без расширения неудобно пользоваться.
Второй вариант мне не нравиться по разным причинам. Например, расширение не всегда видно и придется его отличать от других mpc-be.*.

Текущий кандидат: history.mpc_lst или history.mpc_list
Могу расписать почему он хорош, если надо.

Добавлено:

Небольшой TODO:
1. Сделать проверку изменения файла по времени изменения. Это уменьшит количество обращений к диску.
2. Сделать распознавание текущих внешних аудиодорожки и субтитров, и записывать путь к ним в историю.
3. Добавить, переименовать, доработать опции по хранению и использовании истории.
4. Подумать о создании временного файла при сохранении истории.
5. Сделать диалог для просмотра и удаления записей истории.
Название: Re: История
Отправлено: Aleksoid1978 от 06 июня 2021, 11:03:30
Не понятно чем без расширения не удобно.
По поводу внешних аудио - сейчас они не запоминаются, если открыть через диалог и указать как dub ?
Название: Re: История
Отправлено: V0lt от 06 июня 2021, 13:05:53
Цитата: Aleksoid1978 от 06 июня 2021, 11:03:30
Не понятно чем без расширения не удобно.
Каждое открытие файла без расширения в проводнике будет сопровождаться выбором приложения. И "открыть с помощью" тут не поможет.

ЦитироватьПо поводу внешних аудио - сейчас они не запоминаются, если открыть через диалог и указать как dub ?
Как в текущей r6264 не знаю. В тестовых сборках - не запоминается.
Название: Re: История
Отправлено: Aleksoid1978 от 06 июня 2021, 15:50:06
Да внешняя звуковая дорожка запоминается. Как-то отдельно в Recent Dub List, но при открытии файла она подтягивается - надо такое поведение оставить, желательно до внедрения нового функционала.

P.S. Вру - это запоминается в плейлисте, и при открытии того же файла подтягивается, так что все норм.
Название: Re: История
Отправлено: V0lt от 12 июня 2021, 16:51:22
mpc-be_6276_history_file_11 и MPC-BE_History_test6 (https://disk.yandex.ru/d/vYeV_1HoRZccaQ?w=1)
Новое имя файла истории - history.mpc_lst

Кто ранее пользовался старыми сборками просто переименуйте history в history.mpc_lst.

Обновил информацию в первом сообщении темы (https://mpc-be.org/forum/index.php?topic=295.msg2813#msg2813).
Название: Re: История
Отправлено: V0lt от 17 июня 2021, 20:57:18
mpc-be_6283_history&favorites_files_14 (https://disk.yandex.ru/d/vYeV_1HoRZccaQ)
Изменено имя файла истории, новое имя - history.mpc_lst
Закладки теперь сохраняются в файле - favorites.mpc_lst
Оба файла штатно находятся в %APPDATA%\MPC-BE\

Утилита MPC-BE_History_test6 позволяет перенести историю из реестра в history.mpc_lst. Для закладок пока ничего такого нет.

Кто ранее пользовался старыми тестовыми сборками просто переименуйте history в history.mpc_lst.


Т.к. фича заметно влияет на совместимость, то добавление в основной код произойдет после следующего stable релиза.