MPC-BE forum

MPC-BE => Обсуждение / Discussion => Тема начата: V0lt от 05 декабря 2015, 17:25:15

Название: Загрузка похожих файлов
Отправлено: V0lt от 05 декабря 2015, 17:25:15
Предлагаю обсуждать здесь работу опции "Добавить в плейлист похожие файлы".

Критерии правильности работы опции:
1. Загружать файлы по порядку начиная с текущего.
2. Различать разные группы одного и того же сериала. Если загружаем 720p, то 1080p не загружаем (Aleksoid1978 просил).
3. Использовать опцию только через "Быстро открыть файл...".
4. Лучше не загрузить правильное, чем загрузить лишнее. Поэтому всякие трудные нестандартные формы записи сразу идут лесом
5. ...

Наблюдения:
В начале идет название сериала и другая неменяющаяся информация.

Важным параметром причастности файла к сериалу является номер серии. Номер серии может быть в различных форматах:
*_s01e01_*
*.S05E01.*
* - 01 серия
* [S01E01-02] - *
* [S01E03] - *
* - 01 *

Часто за номером серии может идти "индикатор качества":
*_DVDRip_*
*.720p.HDTV.*
*.WEB-DL.1080p.*
* 1280x720 *

Все что идет после номера серии и индикатора качества можно смело исключать из обработки. Сюда попадают название серии, данные о кодеках, хэш-суммы и релизеры.

Как правило все серии сериала идут в одном формате (avi, mkv, mp4).

Дополнительные сложности:
Часто встречается пометка "END", которая изредка может находиться не в конце имени, а заменять пометку "RAW".
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 06 декабря 2015, 03:39:50
Я не понимаю что обсуждать-то, все сделано, кроме пункта 3.

По пункту 3 - я против, мне удобно из проводника.
Название: Загрузка похожих файлов
Отправлено: Evgeniy1990 от 06 декабря 2015, 05:26:35
Может я чего-то не понимаю, но какой тогда смысл в данной фиче, если у нас всего только один критерий отличия - это цифры, порядковые номера?

Пример: допустим у пользователя достаточно большое количество различных сериалов, содержащие различные имена в названиях файлов. Одни из них наиболее простые, другие - наиболее сложные. И получается так, что примерно половина сериалов с более простыми именами добавится в плейлист, другая - нет.

Т.е. мы имеем рабочую фичу, но не для всех случаев нахождения похожих по названию файлов.

С тем же успехом, можно фактически и не иметь данной фичи, или не включать ее, чем сбивать с толку пользователей, чтобы они сидели и гадали, почему у них файлы с похожими названиями не добавляются в плейлист, несмотря на то, что опция добавления в плейлист похожих файлов включена.

Свой пример я уже приводил. Но я-то, в отличие от многих пользователей, знаю по какому критерию работает наш алгоритм, наша фича. А вот у других могут возникнуть вопросы по поводу ее работы.
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 06 декабря 2015, 06:18:10
Вот все такие "умные" - только и можем что воздух сотрясать.

Если уж умничать - то во взрослому, предлагайте свой алгоритм, в виде кода на C++. Тогда будет конструктивный разговор.
[merge_posts_bbcode]Добавлено: 2015-12-06 13:18:10[/merge_posts_bbcode]

Вот мне интересно будет посмотреть на алгоритм для определения что файлы:
[Doremi-CureCom].Suite.PreCure!.34.[1280x720].[966DA995]
[Doremi-CureCom].Suite.PreCure!.35.[1280x720].[2773BB68]
[Doremi-CureCom].Suite.PreCure!.35.[1280x720].v2.[2773BB68]
"похожие".

Давай те - пишите, выкладывайте ...
Название: Загрузка похожих файлов
Отправлено: V0lt от 06 декабря 2015, 09:52:51
Цитата: Aleksoid1978По пункту 3 - я против, мне удобно из проводника.
Поясни подробнее. Каким именно образом из проводника? Двойной клик, драг-энд-дроп или используя расширение оболочки.
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 06 декабря 2015, 10:01:10
Цитата: V0lt
Цитата: Aleksoid1978По пункту 3 - я против, мне удобно из проводника.
Поясни подробнее. Каким именно образом из проводника? Двойной клик, драг-энд-дроп или используя расширение оболочки.
Да как угодно - главное условие что передается на открытие один файл.
Название: Загрузка похожих файлов
Отправлено: V0lt от 06 декабря 2015, 10:12:55
Цитата: Aleksoid1978Да как угодно - главное условие что передается на открытие один файл.
Если по твоему, то получается, что с включенной опцией сериальные файлы вообще нельзя будет открыть по одиночке. Это вроде и правильно, но будет создавать неудобства.
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 06 декабря 2015, 10:56:30
Все верно,  так и задумывалась. Именно для этого все и делалось.
Название: Загрузка похожих файлов
Отправлено: V0lt от 06 декабря 2015, 11:56:21
Цитата: Aleksoid1978Вот мне интересно будет посмотреть на алгоритм для определения что файлы:
[Doremi-CureCom].Suite.PreCure!.34.[1280x720].[966DA995]
[Doremi-CureCom].Suite.PreCure!.35.[1280x720].[2773BB68]
[Doremi-CureCom].Suite.PreCure!.35.[1280x720].v2.[2773BB68]
"похожие".
Вот мой первый набросок. Он еще не идеален, но эти файлы умеет.
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 06 декабря 2015, 12:22:50
Это все хорошо :) А теперь свяжи свою регулярку с ЛЮБЫМ открываемым файлом.

Я так понимаю - что никто не понимает логику работы. Надо отталкиваться от имени открываемого файла, и уже на основе его строить регулярку или шаблон для отбора файлов.

Нам же не в списке файлов найти попадающие под шаблон - а найти похожие ДЛЯ ОТКРЫВАЕМОГО ФАЙЛА.
Название: Загрузка похожих файлов
Отправлено: V0lt от 06 декабря 2015, 14:55:47
Цитата: Aleksoid1978А теперь свяжи свою регулярку с ЛЮБЫМ открываемым файлом.
См. картинку в предыдущем сообщении.
Сверху регулярное выражение. Ниже имена файлов сериала. Еще ниже строка замены. В самом низу маски похожих файлов для функции поиска.
Имхо, все нужные данные на картинке присутствуют.
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 06 декабря 2015, 15:08:48
Не подходит такой вариант:
1 - там где цифры сезона/серии может быть больше 2-х цифр. Да и вообще - пусть грузиться не только текущий сезон, но и следующие тоже.
2 - оставлять шаблон 1080p*.mkv нельзя, т.к. если я открываю LostFilm - то другие не нужны :) Да и вообще - а если 1080p будет в начале файла, что тогда получиться - 1080p*.mkv ??

Так что предлагаю ни регулярки тут кидать - а предлагать свои варианты кода, так более практичнее ...
Название: Загрузка похожих файлов
Отправлено: V0lt от 06 декабря 2015, 15:19:10
С любым конечно не получиться. Я специально пункт 4 написал.

Само регулярное выражение и замену необходимо конечно доработать, там есть ошибка. Еще возможна проблема из-за "индикатора качества", т.к. он может находиться после названия серии, такой случай намного сложнее.
[merge_posts_bbcode]Добавлено: 2015-12-06 15:19:10[/merge_posts_bbcode]

С сезоном вообще проблемы нет, т.к. два сезона за раз загружать не планируется.

1080p никто в начале не пишет. Если какой-нибудь мудак и написал, то см. пункт 4.

LostFilm и не LostFilm особой роли не играет, т.к. разные группы обычно делают разные названия. К тому же нет практического смысла запоминать все имена релизеров.
Название: Загрузка похожих файлов
Отправлено: V0lt от 06 декабря 2015, 16:23:56
Вот что у меня сегодня получается.

Спойлер
Регулярное выражение:
(.+)([\\. _e\\[])(\\d{2,3})(\\-\\d{2,3})?([\\. _\\]])(.*?)(720p|1080p|1280x720|DVDRip|576p)(.*)(\\.[\\w\\d]+)Строка замены: \\1\\2*\\5*\\7*\\9

Регулярка работает на следующих файлах:
[Doremi-CureCom].Suite.PreCure!.35.[1280x720].[2773BB68].mkv
[Doremi-CureCom].Suite.PreCure!.35.[1280x720].v2.[2773BB68].mkv
black_books_s01e01_DVDRip_NewStudio.TV.avi
Game.of.Thrones.S05E01.WEB-DL.1080p.LostFilm.[qqss44].mkv
Светлячок (Firefly) [S01E01-02] - Серенити (Serenity) [576p, 2002].mkv
Светлячок (Firefly) [S01E03] - Ограбление поезда (The Train Job) [576p, 2002].mkv
И выдает соответствующие маски для поиска:
[Doremi-CureCom].Suite.PreCure!.*.*1280x720*.mkv
[Doremi-CureCom].Suite.PreCure!.*.*1280x720*.mkv
black_books_s01e*_*DVDRip*.avi
Game.of.Thrones.S05E*.*1080p*.mkv
Светлячок (Firefly) [S01E*]*576p*.mkv
Светлячок (Firefly) [S01E*]*576p*.mkv
[свернуть]

Как я уже ранее говорил, основная проблема из-за того, что некоторые юзеры по непонятной причине кидают раздачи разного качества в одну папку. Поэтому приходиться проверять "индикатора качества". А с ним не все так просто. Придется разделить проверку имени на два этапа.
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 06 декабря 2015, 16:57:23
Повторюсь - не надо привязываться к сезону( может и 2 и 5 в одном месте лежать). Да и вообще - почему мы учитываем только \'e\' ??

Ну и вот сразу по поводу шаблона "Светлячок (Firefly) [S01E*]*.mkv" - нам попадают 2 файла:
"Светлячок (Firefly) [S01E01] многоголосовый перевод.mkv"
и
"Светлячок (Firefly) [S01E01] перевод Живова.mkv"
А это лишнее.
Хотя сейчас тоже что-то похожее, но попадут только если оригинал
"Светлячок (Firefly) [S01E01].mkv"
и еще есть
"Светлячок (Firefly) [S01E01] перевод Живова.mkv". Т.е. когда к имени основного файла(без расширения) может добавиться *.

А как же быть с "менты 2 сезон 25 серия.mkv", или "запись 1.mpg" - их тоже надо обрабатывать. Ну это я так, к примеру.
Те же записи с мобильных телефонов/фото-видео камер типа "IMG_xxxx.mov".

Почему если похожее - то все думают ТОЛЬКО про сериалы ?? Это далеко не так.
[merge_posts_bbcode]Добавлено: 2015-12-06 23:43:29[/merge_posts_bbcode]

Да и вот еще что, самое главное - выборка по такому шаблону не совсем верно
"Game.of.Thrones.S05E*.*1080p*.mkv" - Нам надо чтобы после S05E - был обязательно именно числа, а по такому шаблону попадает и строка "Game.of.Thrones.S05EERT.1231080p.mkv". Понятно что я утрирую - но факт остается фактов.

[merge_posts_bbcode]Добавлено: 2015-12-06 23:57:23[/merge_posts_bbcode]

Предлагаю прекратить увеличивать размер текста на форуме. Есть идеи/мысли - пишем код и выкладываем тестовые билды + патч(для кода). Будем смотреть и думать.
Название: Загрузка похожих файлов
Отправлено: V0lt от 06 декабря 2015, 18:09:34
Цитировать"Светлячок (Firefly) [S01E01] многоголосовый перевод.mkv"
и
"Светлячок (Firefly) [S01E01] перевод Живова.mkv"
А можно пример реальной раздачи или раздач, где именно такие похожие имена? :p

Цитировать"Game.of.Thrones.S05EERT.1231080p.mkv". Понятно что я утрирую - но факт остается фактов.
Я тоже могу утрировать и тоже всякую ерунду написать, твоя функция справиться?
Может будем приводить РЕАЛЬНЫЕ примеры?

И вообще. Ты сейчас хаешь регулярку написанную на коленке и с поиском по  стандартной файловой маске. А может в финале будет маска для swscanf?
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 07 декабря 2015, 01:22:48
Да я блин говорю что подход не верный, надо отталкиваться от самого имени файла а не придумывать регулярки.
Название: Загрузка похожих файлов
Отправлено: Leo от 08 декабря 2015, 07:56:08
Так не одна регулярка нужна, а несколько - в порядке убывания сложности. Начиная с тех, что буквально под конкретного релизера и заканчивая под "имя файла 1.avi". Не отработала сложная - отработала простая.

Цитата: Aleksoid1978Да я блин говорю что подход не верный, надо отталкиваться от самого имени файла а не придумывать регулярки.

Так ведь как ни крути и от чего не отталкивайся, такая задача - явные регулярки. Они же именно для этих целей.
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 08 декабря 2015, 08:50:48
Понятное дело что регулярки - но регулярка строится на имени файла. По другому - никак.
Название: Загрузка похожих файлов
Отправлено: Leo от 08 декабря 2015, 09:12:21
Цитата: Aleksoid1978Понятное дело что регулярки - но регулярка строится на имени файла. По другому - никак.
Так а разве кто-то против?
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 08 декабря 2015, 09:15:03
Ну так зачем то все пытаются просто написать шаблон регулярки(регулярок) не зная имени файла ...
Название: Загрузка похожих файлов
Отправлено: Leo от 08 декабря 2015, 09:35:37
Так мы и не знаем имени файла (на момент создания алгоритма, не на момент открытия). Смотри, у нас есть набор шаблонов, каким может быть имя/имена файлов. Сначала шаблоны, под которые подпадает малое количество файлов со сложной системой именования (типа тех, что Volt приводил). Они сработали - отлично, это предусмотренные заранее возможные имена тех же сериалов (с качеством, сезонами и т.п.). Нет срабатывания - применяем шаблон попроще. И так до тех пор, пока не сработает простейший шаблон или не сработает ни один. Вот этот набор шаблонов и будет алгоритмом поиска "похожести".
Если его вынести в доступ пользователю - все будут счастливы. Кого все устраивает - использует готовый набор, кого нет - дописывает свои условия. Причем имхо достаточно реестра/ини, незачем в интерфейс выносить.
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 08 декабря 2015, 09:43:59
Считаю это извратом :) Сейчас рабочий алгоритм подходит под 90% случаев, что плохого ???
Название: Загрузка похожих файлов
Отправлено: Leo от 08 декабря 2015, 10:02:46
Цитата: Aleksoid1978Считаю это извратом :) Сейчас рабочий алгоритм подходит под 90% случаев, что плохого ???
Да ну? Твой алгоритм по сути так же построен :). Тем более 90% - не 100%, всегда будет кто-то не доволен. Желателен аргумент - "поправь под себя в конфиге" ;).
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 08 декабря 2015, 10:14:02
Мой алгоритм не построен на заранее подготовленных регулярках/шаблонах. Он строится при открытии файла, исходя из имени файла.
Пример, имя файла:
serial.S01.E02.720p.mkv
для него строится регулярка
serial\\.S\\d+\\.E\\d+\\.720p\\.mkv

720p/1080p/1140p/2160p - игнорируются.

Будет файл с именем "1 серия.avi" или "MOV_0034.mp4" - и регулярка будет уже другая.
Название: Загрузка похожих файлов
Отправлено: Leo от 08 декабря 2015, 10:54:55
Так это и есть регулярка :). Ты ищешь цифры, дропая не подходящие под шаблон (720p, двд, BD) и получаешь конечную инкрементную регулярку. Не путай конечную регулярку для добавления в список имеющихся файлов и регулярку для поиска таких файлов.
Название: Загрузка похожих файлов
Отправлено: Aleksoid1978 от 08 декабря 2015, 10:57:47
Ну так вот - по этой регулярке и проверяются файлы в каталоге на совпадение. Никаких регулярок на поиск файлов в данный момент нет. И я как бы против того чтобы их вводить. Будет каша - совмещать и то и это ...