Предлагаю радикально переработать истории открытых файлов/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. Сделать диалог для просмотра и удаления записей истории.
Главный вопрос - для чего все это, что сейчас не устраивает ??
Добавил.
Всячески поддерживаю. На самом деле достаточно удобно, особенно пункты "5. Номер выбранной аудио-дорожки (если более одной)." и "6. Номер выбранных субтитров (если имеются)."
Кстати все это есть в линуксовом mpv, он хранит историю в виде пачки файлов в подпапке своих настроек. Он даже размеры окошка и т.п. запоминает :).
Ну вообще то номер аудио дорожки и субтитров и так уже запоминается ))
Семеееен-семеныч... ^_^. Но все равно идея неплохая, стоит делать переработку истории.
Цитата: V0ltPS: Формат JSON выбран по причине наличия в нашем проекте библиотеки RapidJSON. Можно сохранять историю в формате INI, но тогда придеться добавлять библиотеку simpleini, т.к. системные фичи ужасны и самому изобретать велосипед не хочется.
а рассматривалась ли идея хранения настроек портативной версии плеера в формате json?
Цитата: z_mashineа рассматривалась ли идея хранения настроек портативной версии плеера в формате json?
Можно сказать что нет, т.к. смысла никакого.
Цитата: V0ltМожно сказать что нет, т.к. смысла никакого.
ну так а историю пихать в json есть же смысл?
Я вот как-то тоже против придумывания новых файлов. Есть либо реестр либо .ini файл с настройками, там все храниться. Пусть так все и останется.
Цитата: z_mashineну так а историю пихать в json есть же смысл?
Смыла в JSON для истории тоже особо нет, просто есть парсер-ридер готовый. Сейчас Я больше склоняюсь к записи в стиле INI.
Подниму тему.
Начал делать отдельный от настроек файл со списком последних файлов.
1. Файл будет располагаться там же, где сейчас лежит Default.mpcpl. Т.е. либо в профиле, либо в папке плеера (согласно соответствующей настройке).
2. Будет общая история для файлов, URL и DVD (сейчас у DVD свой список).
3. Список сможет хранить до 100 записей. Опция "количество последних файлов" не будет влиять на размер списка. Она будет использоваться при отображении в меню плеера и Windows.
4. Структура файла подобная INI.
5. Начальное количество полей будет минимальным, в будущем можно будет легко добавить.
Первый блин - mpc-be_6030_history_file_1
Для стандартных настроек файл history искать тут:
%APPDATA%\MPC-BE\
Ну вроде как работает :)
Есть одно предложение - для онлайн-ссылок, ну как минимум для youtube, хранить и отображать название. Отображать можно примерно так - Имя_клипа(url). Было бы очень информативно, а то сейчас в истории смотришь когда на ссылки youtube - и не понимаешь ху из ху :)
Это можно сделать.
Но сейчас и без этого куча работы, т.к. придется многое переписать и вспомнить кучу нюансов.
Например, нюансы идентификации медиа:
1. Простые файлы. С ними все понятно, идентификатором является полный путь к файлу (включает имя файла).
2. DVD-Video. Тут используется специальный идентификатор выдаваемый DVD-навигатором. Путь не годиться, т.к. для разных дисков вставленных в один привод он будет одинаковым.
3. Образ диска ISO. Если смонтированный образ диска откроется как диск в плеере, то идентификатором будет полный путь к файлу ISO.
4. Ссылка на страницу ролика в YouTube. Идентификатором будет исходная ссылка, а не ссылки на потоки.
5. ...
Про DVD - хранить тоже самое что и сейчас. Путь это понятно - ну и все остальное что надо. Я бы не стал заморачиватся и чисто по пути запоминал.
ISO - просто полный путь.
Понятно что придется кое-что переделать для этого.
Youtube - так же исходная ссылка.
mpc-be_6212_history_file_2
Адаптировал исходники февральского билда к текущему коду с небольшими правками.
Некоторые фичи, завязанные на историю отключены.
Путь к файлу истории: %APPDATA%\MPC-BE\history
Напоминаю, билд тестовый. За реплики "Все пропало!" бан на сутки.
mpc-be_6228_history_file_4 (https://disk.yandex.ru/d/vYeV_1HoRZccaQ?w=1)
Исправил сохранение истории DVD.
Опции "Запоминать позицию..." могут работать некорректно. Я хотел их сделать с другой логикой, но еще думаю.
Вопросы:
Правильно ли нумеровать номера аудио и субтитров начиная с нуля?
Нужно ли запоминание отключения субтитров?
mpc-be_6246_history_file_5
Различные исправления по применению опций.
Исправлено восстановление позиции DVD-Video.
Вопрос о нумерации дорожек начиная с 1 все еще открытый.
Нумерация с 0 удобна на текущем этапе. Но если в будущем захочется сделать "пустые субтитры", то нумеровать дорожки лучше с 1, а 0 оставить для пустышки. Определиться надо до того, как код пойдет в основную ветку.
-1 - значит ничего, и все.
Поясню подробнее, т.к. "-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).
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", которая используется в диалоге открытия файлов.
Другие мелкие исправления.
А у меня есть предложения для любых онлайн ссылок если есть название - выводить "<имя_сайта> - <название>", как пример для Youtube - "youtube - <Название>".
Aleksoid1978
Идея хорошая, но Я так не делаю, потому что в некоторых случаях название может быть менее информативным, чем URL .
У Ютуба URL - это машиный хеш. Что находится по ссылке можно понять только по названию. Возможно стоит еще добавлять название канала.
А бывает всякие радио-трансляции, у который в названии текущий трек, что бесполезно для идентификации. Тут URL может оказаться более информативным.
В общем, давайте примеры ссылок. Я буду смотреть, что там получается, как лучше разрулить и постепенно получим оптимальный результат.
mpc-be_6255_history_file_8
Добавлена запись заголовка в историю для разных случаев.
Для DVD-Video запущенного из VIDEO_TS находящегося в корне диска показываем метку диска в списке "последних файлов".
Напомню, внедрения файла истории в основную ветку еще не произошло. Идет этап тестирования. Проверяется корректность хранения истории в отдельном файле по сравнением с тем, что сейчас имеется, не отвались ли что-нибудь важное.
Эх ещё бы механизм для миграции, я щас не хочу терять историю - поэтому не тестю
Мне непонятно, что у людей в истории плеера, которую жалко потерять ради новых фич?
Утилиту можно написать, но это после того, когда зафиксируются формат и имя файла истории.
Ну вот у меня там щас файлы с разных сериалов да еще и с запоминанием позиций. Потом опять искать какой же последний файл смотрел - ну пока что-то не охота все это терять :)
mpc-be_6259_history_file_9
Исправлена запись последних файлов для ярлыка в панели задач.
Возвращена запись позиции в файле только при просмотре более 30 секунд.
mpc-be_6259_history_file_10
Добавлена замена URL-ов начинающиеся на "https://youtu.be/" на "YouTube - <Название>" в списке последних файлов.
Устранен случайный откат изменения r6238.
MPC-BE_History_test5 - показ текущей истории из реестра и экпериментальной истории из файла.
Добавлена автоматическая фильтрация дублей.
Добавлена нумерация записей.
Добавлена возможность импортировать историю из реестра в файл.
Прошу совета. Нужно придумать название файла истории.
Варианты:
Playback.mpc_history
History.mpc_history
History.mpc_list
...
Playback.mpc_history - норм?
Да просто history или mpc-be.history
Без расширения неудобно пользоваться.
Второй вариант мне не нравиться по разным причинам. Например, расширение не всегда видно и придется его отличать от других mpc-be.*.
Текущий кандидат: history.mpc_lst или history.mpc_list
Могу расписать почему он хорош, если надо.
Добавлено:
Небольшой TODO:
1. Сделать проверку изменения файла по времени изменения. Это уменьшит количество обращений к диску.
2. Сделать распознавание текущих внешних аудиодорожки и субтитров, и записывать путь к ним в историю.
3. Добавить, переименовать, доработать опции по хранению и использовании истории.
4. Подумать о создании временного файла при сохранении истории.
5. Сделать диалог для просмотра и удаления записей истории.
Не понятно чем без расширения не удобно.
По поводу внешних аудио - сейчас они не запоминаются, если открыть через диалог и указать как dub ?
Цитата: Aleksoid1978 от 06 июня 2021, 11:03:30
Не понятно чем без расширения не удобно.
Каждое открытие файла без расширения в проводнике будет сопровождаться выбором приложения. И "открыть с помощью" тут не поможет.
ЦитироватьПо поводу внешних аудио - сейчас они не запоминаются, если открыть через диалог и указать как dub ?
Как в текущей r6264 не знаю. В тестовых сборках - не запоминается.
Да внешняя звуковая дорожка запоминается. Как-то отдельно в Recent Dub List, но при открытии файла она подтягивается - надо такое поведение оставить, желательно до внедрения нового функционала.
P.S. Вру - это запоминается в плейлисте, и при открытии того же файла подтягивается, так что все норм.
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).
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 релиза.