Как Синхронизировать фильмотеки на двух дисках

Описание: Вопросы, связанные с каталогизатором фильмов All My Movies
Модераторы: datasource, Автор

Demitreus
Пользователь
Demitreus
Пользователь
Репутация: 0
С нами: 12 лет 6 месяцев

Сообщение #1 Demitreus » Пт сентября 09, 2011 12:57 am

Сегодня стал лицензированным пользователем и сразу появились вопросы.
Задача такая. На одном компьютере есть фильмотека. База заполнена прямыми ссылками на файлы фильмов для просмотра "одним кликом". База постепенно пополняется.
На второй компьютер, не подключенный к интернету, будет периодически копироваться база фильмотеки с первого компьютера, и сами фильмы, но файлы фильмов могут лежать по другим путям и более того иметь другие имена. Одно точно, что содержимое файлов фильмов будет одинаковое.
В связи с этим вопрос или предложение для развития программы.
Возможно ли хранить не имя конкретного файла привязанного к карточке фильма в базе, а ХЭШ файла? Тогда проблемма с разными именами уйдёт.
И второе, если к карточке будет привязан ХЕШ, тогда можно будет сделать инструмент импортирования списка файлов в котором указывается папка где лежат фильмы и в базе обновятся пути файлов привязанные к ХЭШАМ файлов.
Что скажете по этому поводу?

rooten
Пользователь
rooten
Пользователь
Репутация: 0
С нами: 12 лет 6 месяцев
Откуда: Москва

Сообщение #2 rooten » Сб сентября 10, 2011 12:10 am

ВОт у меня друг недавно столкнулся примерно с такой же задачьЮ,но конкретнее сказать не могу
Знаю что до сих пор мучается
Беремся за ум, ищем работу в Одессе

Demitreus
Пользователь
Demitreus
Пользователь
Репутация: 0
С нами: 12 лет 6 месяцев

Сообщение #3 Demitreus » Сб сентября 10, 2011 2:53 pm

Да, наверняка многие сталкивались с такой проблеммкой.
Я уже даже подумываю написать утилитку, которая будет обновлять пути в базе по ХЭШАМ, благо база Access и можно покурочить там не нарушая работу All My Movies. Но это всё хакерство. Требуется добавить поле в таблицу "movies" типа FileHash рядом с LocalPath.
Хотелось бы чтоб в программе это было реализовано в виде плагина. Функция тО полезная. Тем более, что поиск файлов фильмов в программе есть.
Единственная загвоздка, что если файлов много, то расчёт ХЭШ файлов может занять много времени. Это можно обойти если считать ХЭШ не всего файла фильма, а первых нескольких килобайт + размер файла.

P.S. Кстати на форуме встречал предложение исключать из списка файлов (при добавлении фильмов из папки) те файлы, которые уже есть в базе. Добавление ХЭШ может решить и эту задачу. Представте как трудно найти один "пропущенный" фильм в папке с 200 фильмами!
А если решил упорядочить фильмы на диске - то туши свет! Опять всё по новой прописывать пути к файлам!

GhOsT_MZ2
Пользователь
GhOsT_MZ2
Пользователь
Репутация: 0
С нами: 14 лет 2 месяца

Сообщение #4 GhOsT_MZ2 » Пн сентября 12, 2011 10:40 am

Ээээ, что-то идея с поиском по хэш-сумме не ясна) Это как собственно?) Вместо пути к файлу вбиваем его хэш и благополучно ищем?О_о Если я верно понял, то этот поиск будет вечным... Да и по этому вопросу нужно обращаться уже не к автору этого софта, а напрямую к разработчику файловой системы NTFS (она же на данный момент самая популярная для винды, под которой работает данный софт), чтобы те сделали возможность хранить дополнительную информацию о файлах (не обязательно автоматом расчитывать хэш, а то это снизит производительность в 100500 раз).
А по делу, лично я использую следующую схему (не для этой базы, но суть баз схожая):
1. Расшариваю каталог, где лежат фильмы (в принципе не обязательно, административную шару никто не отменял);
2. Монтирую шару как диск;
3. Пути делаю относительно сетевого диска, что дает возможность легко перемещать всю папку с фильмами куда моей душе угодно и использовать ее совместно на нескольких компах, на которых нужно выполнить пункт №2;
4. PROFIT!!!

Demitreus
Пользователь
Demitreus
Пользователь
Репутация: 0
С нами: 12 лет 6 месяцев

Сообщение #5 Demitreus » Пн сентября 12, 2011 8:16 pm

GhOsT_MZ2, спасибо за вариант, действительно можно хранить относительные пути, если имена файлов не изменены или не изменён относительный путь.
Поясню идею. Вы настраиваете фильмотеку на своём компьютере. По вашему усмотрению выбирается имена файлов, допустим кто-то любит фильмы называть по русски, кто-то пишет русское название на латинице или оригинальное название, добавляет год, страну и т.п. в имя файла. Так же при упорядочивании файлов вы можете разместить файлы на жёстком диске по папкам жанров, дате добавления, как угодно. Также со временем вы можете захотеть перегруппировать файлы фильмов по папкам.
Так вот, после подобных манипуляций изменения имени или расположения фильма вы не сможете запустить его из программы All My Movies, пока не переопределите новое местоположение файла фильма вручную. И так для каждого фильма.
Как это можно автоматизировать? Чтобы несколькими действиями можно было бы перенастроить местоположение всех файлов сразу?

1. Добавить в базу данных поле, где храниться ХЭШ файла. т.е будет храниться и путь файла и ХЭШ. Конечно напрямую ХЭШ файла вместо пути файла использовать нельзя. Тут никакая ntfs не поможет.
2. Добавляется плагин поиска и обновления путей файлов. Функцией которого будет рекурсивный поиск всех видео файлов в указанной пользователем папке. После поиска, расчитываются ХЭШИ всех найденных файлов. Производится поиск по базе фильмов, пути которых нарушены (т.е по путям в базе фильм не находится) для каждого такого фильма вычитывается ХЭШ из базы и сравнивается с ХЭШами найденных фильмов в поиске. Если найдено соответсвие - путь в базе обновляется.
Вот!

GhOsT_MZ2
Пользователь
GhOsT_MZ2
Пользователь
Репутация: 0
С нами: 14 лет 2 месяца

Сообщение #6 GhOsT_MZ2 » Вт сентября 13, 2011 8:16 am

Зачем так сложно?) Такой поиск при наличии 1000 фильмов будет занимать далеко не один час, причем далеко не со слабым процессором. Есть более простой выход из положения - плагин или "вшитая" функция в программу, которая занимается переименованием файлов по заранее заданной маске. Это и быстрее, и пути обновляются в базе автоматически, вместе с переименованием файла. Как вариант, можно на MS Access организовать оболочку для базы, которая будет аналогичные вещи, но это на случай, если никто не захочет писать плагин, а знания дальше VBA нету.

Demitreus
Пользователь
Demitreus
Пользователь
Репутация: 0
С нами: 12 лет 6 месяцев

Сообщение #7 Demitreus » Вт сентября 13, 2011 9:45 pm

Это не сложно. А принятая практика. Все торенты, пир2пир, как eMule и подобные работают не с именами файлов а с Хэшами. Но у них действительно расчёт полного Хэша занимает много времени. StrongDC, например кидает xml файлик в папку с файлами и хеш повторно не расчитывается.
Я уже потихоньку пишу отдельную утилитку с прямым доступом к базе и применяю там Хэш sha1 первых 32Кб файла+размер, так расчёт занимает пару секунд на не быстрой машине в папке 200 фильмов. Это не Хэш в принятом виде, а просто идентификатор, достаточно уникальный по набору фильмов в коллекции.

С плагином возникли сложности на этапе стыкования C++. Пока отложил.


Вернуться в «All My Movies»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 84 гостя