Как стать автором
Обновить

Комментарии 84

Как по мне, «Боже, Благослови Америку God Bless America (Боб Голдтуэйт Bobcat Goldthwait) (2011) США, триллер, чёрная комедия, криминал, HDTVRip-AVC.mkv» намного худший вариант имени файла, чем исходный
Вот был бы обратный скрипт — финальная версия в изначальную, латиницей, без пробелов — было бы замечательно.
Каждому своё, но мне лично нравится видеть то название, по которому я нашел закачку на сайте, на не некоторое кодовое название, или что еще хуже на транслите.
Если у вас библиотека скачанных фильмов насчитывает несколько терабайт и вы постоянно что-то докачиваете, причем не только для себя, то такое название просто отличное.

Автору огромное спасибо! ) У меня лежит куча фильмов со странными названиями (далеко не всегда их именуют правильно), содержание которых я ни за что не вспомню.
При нынешних скоростях интернета и возможностях современной техники не понимаю, зачем библиотеку собирать. Я быстрее найду и скачаю на торрентах, чем у себя на диске :)
Ну если все будут так размышлять, то у кого Вы в итоге качать будете?
Да и скорость закачки редких фильмов, из-за небольшого количества сидов, желает лучшего.
Про редкие фильмы соглашусь, но редкий фильм и посмотреть хочется редко, так что можно и потерпеть.
А вообще после скачивания не стираю фильмы, пока место есть на диске, так что проблемы с кого качать не вижу. Потом просто гигов 20-30 сразу освобождается и то смотрю в utorrent, что плохо разбирают, а что получше.
А как Вы прокоментируете список файлов, приведенный в Update1?
Получается же что после переименования utorrent не может найти исходный файл и уходит с раздачи.
можно симлинк создать, но новое имя файла ужасно!
Возможно оно и ужасно, но оно содержит гораздо больше информации чем изначальное и любая программа каталогизатор сможет по новому имени найти полное описание фильма в сети, к примеру на Kinopoisk.ru, чего она не сможет сделать по оригинальному, особенно если это русское имя на транслите.
если честно, я уже давно не понимаю тех людей что бэкапят торрент-трекеры,…
Скачал-пораздавал, посмотрел, удалил.

Ну, бывают такие фильмы, которые потом, может быть, уже не скачаешь. Аналогично, бывает такая музыка (попробуйте, к примеру, найти хотя бы 10 песен Джоно Бэкона, не считая сделанную мной веб-страницу — хотя, казалось бы, не такой уж и неизвестный человек). И вот на таких раздачах хочется оставаться месяцы и годы, потому что всегда есть некоторая вероятность, что после тебя уже никого на этой раздаче не будет.
Лично я храню только самые понравившиеся мне фильмы еще и для того, чтобы помнить их список, а то забывается что фильм хороший, может и посмотрел бы его, но сразу и не вспомнишь, а так все под рукой. Да и куда еще девать 2 терабайта дискового пространства :)
Эта проблема исправлена добавленной возможностью копирования или создания HardLink-ов для NTFS.
Смотрите Update2.
Я просто завел два каталога:
/somewere/deep/video/ — для закачек
/kino/ — для просмотра
первая директория периодически сканируется скриптом и создает симлинки во второй (если они там отсутствуют). После чего эти симлинки переименовываются как удобно, а оригинальный файл остается нетронутым, так что торрент-клиент спокойно продолжает его раздавать. Из плюсов подобной схемы можно отметить что доступ к фильмам есть у всех домашних, но меня не беспокоит возможность того, что они могут что-то удалить или переименовать.
Я добавил поддержку HardLink-ов для NTFS, смотрите Update2.
Теперь при помощи моего скрипта можно сделать схему, довольно похожую на Вашу.
Я так понимаю Вы работаете из под Linux, можете оценить, насколько реально портировать мой скрипит под Linux?
А как быть с раздачами с несколькими файлами? например 2cd или сериал какой-нибудь.
Скрипт переименует только корневой каталог закачки, внутри останутся оригинальные имена.
У меня такая проблема возникала, когда фильм идет с субтитрами, то есть есть каталог, а в нем фильм и субтитры. Приходится переименовывать вручную. Я подумывал над тем, чтобы скрипт залез внутрь каталога и переименовал файлы в нем, но руки так и не дошли.
Скрипт далеко не универсальный, да, но в полуавтоматическом режиме я поддерживаю свою коллекцию видео в приемлемом виде.
Пробовал программы каталогизаторы вроде movienizer — не прижились. Собственно скрипт появился уже после попыток использования программ-каталогизаторов видео.
>с именем «Боже, Благослови Америку God Bless America (Боб Голдтуэйт Bobcat Goldthwait) (2011) США, триллер, чёрная комедия, криминал, HDTVRip-AVC.mkv»

Кошмар какой -_- На Рутрекере конечно бывают файлы с какими-то дикими именами, но это точно не тот случай.
Идея в том, чтобы в имени файла было как можно больше информации, которая теряется, если файл уходит в коллекцию видео.
В конце концов если есть доступ к страничке описания файла, то от туда можно выковырять любую информацию, дело только в сложности парсинга html.
Мне оказалось достаточно тайтла странички, в основном потому, что это было проще всего сделать.
Я понимаю в чем ваша идея. Я ее просто не поддерживаю.

Имя файла «God.Bless.America.2011.HDTVRiP720.mkv» содержит всю необходимую информацию — название фильма, год выпуска(хотя это тоже спорно, если только нет нескольких фильмов с одним названием, но разного года выпуска), формат и само собой расширение. Если бы это был сериал, то там бы еще было S01E08 к примеру — т.е. 8й эпизод 1го сезона.

Я еще понимаю ваше желание иметь русское название фильма в названии, но зачем там вся остальная инфа — мне категорически непонятно.
А если не содержит? На трекерах в названиях файлов зачастую тот еще бардак (
1. Как правило по названию файлов мне трудно вспомнить что это за фильм.
Раньше мне часто приходилось производить поиск по имени файла в Google только для того, чтобы вспомнить что это за фильм такой у меня валяется, сейчас же я это делаю намного реже.

2. Я как-то занялся упорядочиванием моей коллекции фильмов при помощи кталогизатора AllMyMovies, а затем Movienizer и столкнулся с проблемой что эти программы не могли найти информацию в интернете для большинства моих файлов именно из-за того, что в названии файлов было недостаточно такой информации. Большинство этих файлов я скачал как-раз таки с рутрекера.

Сама идея в том чтобы не терять информацию, которая уже была доступна на момент загрузки файла.
В перспективе я хотел сохранять всю информацию со странички трекера в виде метаданных,
доступ к которым можно было бы получить нажав к примеру комбинацию клавиш или выбрав пункт контекстного меню, или как нибудь еще.
И накинулись на автора, что де у него файлы как-то криво названы. Нельзя критиковать стиль именования — это личное дело каждого! Нравится автору такой стиль — его право!
Давайте лучше обсудим актуальные достоинства и недостатки такого решения:
Pro:
1. Единообразие — это клево. Выбрать стиль и придерживаться его, гораздо важнее споров о преимуществах и недостках (тех же египетских скобок, например;) )
2. Автоматизация — это правильно
Contra:
1. Что делать с раздачами с других трекеров?
2. Переименование лучше заменить на создание симлинков — тогда можно оставаться на раздаче.
Спасибо.
Дело даже не в том что мне нравится или не нравится такой стиль именования, дело в том, что мне так было проще всего сделать, т.к. в оформлении описаний закачки нет единых правил и предусмотреть все варианты для парсинга странички довольно сложно.
Меня лично этот компромисс устраивает, кого не устраивает, тот пусть ищет другое решение.

>>1. Что делать с раздачами с других трекеров?
Можно добавлять парсера для других трекеров.

>>2. Переименование лучше заменить на создание симлинков — тогда можно оставаться на раздаче.
Хорошая идея, я тоже об этом думал.
Я выложил обновленный скрипт, где добавил возможность копирования и создания хард линков для NTFS, смотрите Update2
Конечно как именовать ваши файлы — Ваше дело, но…
Надо бы сделать страницу и назвать раздачу так: "☭ «Красная жара» ", чтобы вы поняли прелесть не-latin-1 символов в названиях файлов. На Windows (с ее windows-1251) это будет особенно болезненно. :)
На рутрекере существуют правила именования страниц, думаю такое название будет противоречить этим правилам.
И Windows отлично работает с юникодом, к вашему сведению.
Упс. Отсюда поподробнее. Не разу не видел юникод в файловой системе на Windows. Как достигается?
Нативно достигается, ещё со времён Win2k.
У Вас в криокамере какие-то проблемы с не-latin-1 символами на файловой системе? Может быть, ещё и в формат 8.3 на всякий случай укладываетесь?

Лично у меня вот даже папка для скачанных файлов называется ~/Downloads/µTorrent :) Именно так, µTorrent, а не uTorrent.
Не называю файлы/папки юникодом, т.к. не знаю какой системой придется когда-нибудь их открыть. В 8.3 конечно уложиться никогда не получается. Паттерн именования файлов такой [a-zA-Z0-9.-]*
Что, даже без пробелов и подчёркиваний? Тогда, действительно, «только 8.3, только хардкор!» А то вдруг придётся загружаться с досовской дискеты?
Мне не хочется вас расстраивать, но cp-1251 в именах файлов никогда не использовалась. Даже в FAT в качестве кодировки была принята UTF-16.
Тогда мне очень странно, что при копировании файлов из *nix с не latin-1 именами на раздел с FAT32 я их потом в win-XP прочесть не мог. все было типа ?????????.zip
Можно пруфлинк???
Пруф лежит в Википедии: http://ru.wikipedia.org/wiki/FAT#LFN-.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B8. Мне в одной книге попадался разбор формата FAT, оттуда и помню.
А то, что вы не могли из *nix записать на FAT что-то отличное от latin-1, то это вина исключительно вашей *nix системы. Возможно, разработчики драйвера забыли о существовании других кодировок. Возможно, разработчики дистрибутива не включили в поставку по умолчанию поддержку юникода. Ну и так далее.
Я вот помню, когда у меня был Windows в дуалбуте, то FAT-разделы для совместимости имён с кириллицей надо было монтировать вот так:

mount -t vfat -o codepage=866,iocharset=utf8 /dev/hda5 /mnt/windows_partition

И вот тогда всё отображалось нормально. Либо, как вариант, можно при компиляции ядра указать соответствующие опции:

Linux Kernel Configuration: FAT
File systems ->
  DOS/FAT/NT Filesystems ->
    (utf8) Default iocharset for FAT
    (866) Default codepage for FAT

(Не забыв при этом также про раздел Native Language Support.)

Но это CP866, то есть ни о каких символах кроме строго ограниченного набора речи не шло.
За вброс на нестандартный холивар и Идею для похожих решений плюсую!
У симлинков обнаружились проблемы в связке Win7+SMB+NMT. В свое время я сделал очень похоже, как у автора, с парой отличий: фреймворк от мозиллы с GUI; создавалась папка с новым «длинным именем», в которой лежал хардлинк файла с «коротким именем». Если в раздаче состояла папка, то использовался симлинк (Junction). Раздачи не обрывались.
Можно подробнее про возникшую у Вас проблемму?
Я добавил поддержку HardLink для NTFS, актуальна ли эта проблема и для моего скрипта?
Я ошибся, память подвела. Win7+SMB+NMT работает отлично с симлинками. Проблема была в uPnP-сервере myiHome. Теперь подробнее. Какой-то период времени на моем домашнем компьютере не работали Shared Folders. Они поломались, когда я делал из компьютера wi-fi точку доступа с помощью Kerio. Шары мне были не нужны по большому счету, но контент был доступен через утилиту myiHome, которая прилагалась к NMT — железному сетевому медиа-пригрывателю. Так вот, глючный и сырой myiHome считал, что у всех файлов-симлинков нулевой размер и не давал их проигрывать медиа-танку.
Таким образом, для папок делались симлинки, а для файлов хардлинки.
Насчет скрипта я бы проверил, как хардлинки работают для директорий — насколько я понял из MSDN, для директорий хардлинки использовать нельзя.
Я сделал так, что скрипт рекурсивно обходит каталоги и создает их в новом месте, а хардлинки делает только на сами файлы в созданных уже каталогах.
Действительно… Python и не мой язык :)
У вас очень странный способ написания кода на Python'е (мне потребовалось пару секунд, чтобы определить, что это Python). Это ведь Ваш не основной язык, скорее третий после Java'ы или C#?
Вы правы, мой основной язык C++
«На третий день индеец Зоркий Глаз заметил, что в камере отсутствует стена» (с)

??? :)

Автор прямо пишет: Так как Python это не мой основной язык, то буду рад советам опытных разработчиков.
Кстати, а что именно отличает мой код от кода опытного питониста?
Можно пример как бы Вы реализовали одну из функций, мне действительно интересно было бы посмотреть…
Отличная идея.
И если уж использовать симлинки то можно сделать так:
1. Оргинальный файл оставит там где он есть, чтобы не уходить с раздачи.
2.Симлинк на файл с именем: «God Bless America.mkv» (оставил бы в латиннице чтобы небыло проблем со всякими аппаратными плеерами, типа автомобильного) поместил бы в папки:
видео/жанры/триллер
видео/жанры/ чёрная комедия
видео/жанры/криминал
видео/актеры/Боб Голдтуэй
видео/актеры/
видео/год/2011
видео/страна/США
видео/непросмотренное
видео/качество/HDTVRip
Мне кажется это уж слишком запутанным
Например как в таком случае произвести удаление файла?

Я добавил поддержку хардлинков для NTFS, смотрите Update2
Да, удалять сложнее (можно поиском по имени).

Зато искать что тебе нужно — гораздо легче.
Хочешь все фильмы с Деппом — они все в одной папке лежат. Хочешь жутик — в другой.
Для этого можно воспользоваться тегами, они вроде уже поддерживаются в Windows 7 в библиотеках.
и их можно поставить скриптом автоматически?
я просто задаю нужное имя при добавлении закачки, если хочу
В вашей идее, конечно, что-то есть. Но думаю вариант по-умолчанию не для всех. А вообще, если хотите развивать идею, то сделайте еще файл конфига, в котором можно будет указывать параметры, например так:
filename = "%eng_title% %rus_title% %year% %genre% %encoder% %translate%"
Ну и таки сделайте и убедитесь, чтобы под Linux работало, не плохо так же сделать параметр с директорией куда будут создаваться симлинки(выше уже про это писали).
Думаю идею по дальнейшему развитию вы поняли, сделать конфиг и побольше параметров туда забить, чтобы каждый смог под себя настроить. Вот тогда будет зергуд.

И еще вопрос. Хоть вы и написали, что python не ваш основной язык, но почему версия 2.7? Ведь нужно можно было использовать 3 версию.
Чем больше мы пишем на 3 питоне, тем больше ускоряем процесс перехода на него(а этого очень хочется).
Я указал Python 2.7 потому, что я писал скрипт где-то год назад и не запускал его под 3-м питоном, думаю перейти на 3-ю версию не составит труда. Идея написать статью пришла мне в голову только сегодня утром, и по этому небыло времени что-то переделывать в коде.
Предлагаю вам развить идею и перейти на 3 питон).
Решил таки перейти на Python3 :)
Выложил обновленный скрипит, Смотрите Update2.
Софт: каталог фильмов — к ним цепляется торрент файл. Если хочешь посмотреть фильма, программа начинает стримить видео по p2p.
Есть ли такая программа? Позволила бы не хранить фильма на HDD
Плеер распознающий файл и ищущий по базе фильмов или dnla сервер делают жизнь лучше.
О! это какой например?
Plex, например
Как по мне, то можно глаза и голову сломать пока поймешь что за фильм скрывается за этими названиями.

Не, ваш список не такой уж и страшный…
Вот над какими именами у меня обычно голова болит:
m18teens.08.11.24.Aletta.inyf.wmv
pinkyjune-hardcoreriver.mp4
x-art_prague_bts_2011.flv
Zoe_Chocolate_Ice-cream_HD.mp4

Тут нужна интеграция с Евроиндексом :)
Загонять побольше информации в название файла — это конечно ход, но не выход. Я вот давно мечтаю о плеере (железном) который бы распознавал название файла (я согласен помочь ему и переименованием файла и в сложных случаях вручную) и привязывал бы к нему инфу из какого-нибудь интернет-источника. Это была бы действительно полная информация. Там можно было бы искать и годам и по актерам. Была бы нормальная фильмотека. Сам сижу до сих пор на первом попкорне и жду плеер-мечту. Тем временем на винте уже почти 2000 файлов, как просмотренных, так и в очереди и найти что-то все сложнее и сложнее. Может такая железка уже существует?
Raspberry Pi + Plex Media Server.
А что, если не сохранять эту информацию в имени файла (имя файла наоборот делать коротким и чётким), а записывать её в виде метаданных файла? Это позволяют делать многие контейнеры, например, MKV.
Это все в планах, но для начала эту информацию необходимо изъять из html странички в каком-то структурированном виде. Проблема в том, что странички описания создаются людьми и нет четких правил для создания этих самых страниц.
если меняешь сам файл — то не сможешь его раздавать, это немого эгоистично.
Если создавать жесткую ссылку на файл, то исходное имя не меняется и оба имени равноценны и указывают на одни и те-же данные. Единственное ограничение работает в пределах одного диска NTFS.
Вот статья на википедии: Жёсткая ссылка
это вы мне ответили? к чему?
Извините, я сразу не понял Ваш предыдущий комментарий. Я подумал, что Вы имеете в виду изменение имени файла.

Если по теме, то сохранять метаданные в файл можно не модифицируя основной поток данных.
На файловой системе NTFS есть возможность создания альтернативных потоков данных, можно воспользоваться этой возможностью.
Ну или в базу данных сохранять.
Если вы перенесете этот код в плагины для XBMC (там тоже питон), чтоб он переименовывал в %название на англ% %год% %расширение%, чтоб XBMC потом автоматически находил фильм на IMDB — было бы вообще отлично.

Хотя надо поискать, может что-то подобное уже есть…
Подобного нет, сам ищу уже достаточно долгое время!

А ведь это было бы чрезвычайно полезно для пользователей медиа систем типа XBMC и MediaPortal.

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

Если бы вы смогли как-то это реализовать, цены бы вам не было!
А не думали написать авторам каталогизаторов, чтобы они подобную фичу в свои программы встроили?
Первый поиск в гугле привёл на хабру!
Огромное спасибо за нужный скрипт
Автор, есть ли шанс увидет Вас на гитхабе? У меня есть подобный скрипт на php с поддержкой разных трекеров, хотелось бы приобщиться к python и поконтрибьютить :)
qBittorrent позволяет изменять имена файлов в раздаче без всяких ссылок. Думаю, это фича rasterbar-libtorrent, и любой производный от неё клиент можно этому обучить.
Так вопрос, как оно узнает во что переименовывать?
Проблема не в этом. qBittorrent переименовывает файл, но не уходит с раздачи, как uTorrent.
Вы о чем? Скрипт автоматизирует процесс переименования основываясь на данных торрента. qBittorent разве делает что-то подобное?
Если вы переименуете файл, то uTorrent не сможет больше раздавать его.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории