Загрузка похожих файлов

Автор V0lt, 05 декабря 2015, 17:25:15

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

V0lt

Предлагаю обсуждать здесь работу опции "Добавить в плейлист похожие файлы".

Критерии правильности работы опции:
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

Я не понимаю что обсуждать-то, все сделано, кроме пункта 3.

По пункту 3 - я против, мне удобно из проводника.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

Может я чего-то не понимаю, но какой тогда смысл в данной фиче, если у нас всего только один критерий отличия - это цифры, порядковые номера?

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

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

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

Свой пример я уже приводил. Но я-то, в отличие от многих пользователей, знаю по какому критерию работает наш алгоритм, наша фича. А вот у других могут возникнуть вопросы по поводу ее работы.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Вот все такие "умные" - только и можем что воздух сотрясать.

Если уж умничать - то во взрослому, предлагайте свой алгоритм, в виде кода на 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]
"похожие".

Давай те - пишите, выкладывайте ...
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Цитата: Aleksoid1978По пункту 3 - я против, мне удобно из проводника.
Поясни подробнее. Каким именно образом из проводника? Двойной клик, драг-энд-дроп или используя расширение оболочки.

Aleksoid1978

Цитата: V0lt
Цитата: Aleksoid1978По пункту 3 - я против, мне удобно из проводника.
Поясни подробнее. Каким именно образом из проводника? Двойной клик, драг-энд-дроп или используя расширение оболочки.
Да как угодно - главное условие что передается на открытие один файл.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

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

Aleksoid1978

Все верно,  так и задумывалась. Именно для этого все и делалось.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

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

Aleksoid1978

Это все хорошо :) А теперь свяжи свою регулярку с ЛЮБЫМ открываемым файлом.

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

Нам же не в списке файлов найти попадающие под шаблон - а найти похожие ДЛЯ ОТКРЫВАЕМОГО ФАЙЛА.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Цитата: Aleksoid1978А теперь свяжи свою регулярку с ЛЮБЫМ открываемым файлом.
См. картинку в предыдущем сообщении.
Сверху регулярное выражение. Ниже имена файлов сериала. Еще ниже строка замены. В самом низу маски похожих файлов для функции поиска.
Имхо, все нужные данные на картинке присутствуют.

Aleksoid1978

Не подходит такой вариант:
1 - там где цифры сезона/серии может быть больше 2-х цифр. Да и вообще - пусть грузиться не только текущий сезон, но и следующие тоже.
2 - оставлять шаблон 1080p*.mkv нельзя, т.к. если я открываю LostFilm - то другие не нужны :) Да и вообще - а если 1080p будет в начале файла, что тогда получиться - 1080p*.mkv ??

Так что предлагаю ни регулярки тут кидать - а предлагать свои варианты кода, так более практичнее ...
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

С любым конечно не получиться. Я специально пункт 4 написал.

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

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

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

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

V0lt

Вот что у меня сегодня получается.

Спойлер
Регулярное выражение:
(.+)([\\. _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

Повторюсь - не надо привязываться к сезону( может и 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]

Предлагаю прекратить увеличивать размер текста на форуме. Есть идеи/мысли - пишем код и выкладываем тестовые билды + патч(для кода). Будем смотреть и думать.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215