amarao (amarao_san) wrote,
amarao
amarao_san

Как пропатчить #anime под FreeBSD

Итак, вторая часть. Первая вот.

Как аниме хранится?

Как я уже сказал, для скачивания есть отдельный раздел - /srv/deluge. Для скачанного же, и многих терабайт неразобранного, есть раздел /srv/anime. Который представляет из себя LVM на 4 винта, с свободным хвостом (не выданным ни одному разделу) примерно в 200Гб (на этом же LVM у меня и /home, кстати, находится).

На каталог anime сделан линк из /pub. Все операции идут с /pub.

Итак, структура каталогов:

/pub/anime/in - сюда сваливается всё входящее из описанного ранее автоматического скачивания.
/pub/anime/ongoing - каталоги с онгоингом.
/pub/anime/stalled - онгоинг второй свежести.
/pub/anime/drop-samples - разные особо хорошо пахнущие отрывки даба, дропнутых (до состояния, когда их даже не холдят) вещей и т.д. Обычно оставляется 1-2 файла для примерного представления что это такое.
/pub/anime/uncomplete - неполные вещи (которые в природе есть комплитами).
/pub/anime/sort - сюда попадает то, что слишком долго лежит в in.
/pub/anime/sort_hard - сюда попадает то, что не удалось разобрать по названию. Например, овашки, слеенные в одну серию с непонятным годом выхода, или названия, которых не знает анидб и т.д.
/pub/anime/write - то, что ждёт записи на HDDLib.

Есть ещё пара служебных каталогов (типа, write-old-names для криво названных сериалов или openings для коллекции).

Основной принцип для каталогов ручной раскладки - это anidb titles. Т.е. в in он может называться как угодно - но как только он попадает в ongoing, то называется СТРОГО в соответствии с названием на anidb. Дополнительно могут дописываться опознавательные признаки (например, год, количество серий, иногда даже что-то вида [33 of 140] (число эпизодов)).

Для жуткой солянки (файлов разных сабберов) и длинных сериалов используется особая структура подкаталогов, например, вот так выглядит ванпис:

(001-266) One Piece [KF]
(266-293) One Piece [ADC-elites]
(294-331) One Piece [Vegapunk]
(332-336) One Piece [INP]
(337-340) One Piece [Vegapunk]
(341-374) One Piece [INP]
(375-393) One Piece [Nakama-Fansubs]
(394) One Piece [IMP]
(395-427) One Piece [yibis]
(428-429) One Piece [GLFS]
(430-439) One Piece [yibis]

Делается это для возможности быстрого нахождения серии по номеру и оценки того, "кого больше". Например, в вышеприведённом примере, 394ая серия от IMP'ов так и просится на замену. Так же как и 428-429 от GLFS.

Исторически, есть трудноразбираемые дебри, например, гандамы. Для них сделан каталог /pub/anime/collection. Там же, кстати, лежит Миядзаки, короткометражки от 4c и Лупан (пока я его не соберу целиком).

Ключевой же "фишкой" коллекции является HDDLib. О том, как он работает позже, а пока о том, как он индексируется. Это делает скрипт (напишу чуть позже), который в каталоге /pub/HDDLib делает каталоги с названиями томов и с полной копией файловой системы каждого тома. Но, с файлами нулевого размера.

Есть простенький скрипт, al, который делает find по каталогам /pub/anime и /pub/HDDLib.

Поиск тайтла обычно выглядит так:

al Sora

(после чего умираем в километрах найденного).

Так что реальный поиск выглядит так:

al Sora|grep -i kakeru

Благодаря явной структурированности, можно легко находить по критериям. Например

al Sora|grep -i kakeru |grep -v HDDLib|grep -v write

даст нам все файлы сериала, не находящиеся в упорядоченных комплитах.

А дальше, я уже писал чуть раньше, есть два простых алиаса:

alias xmv='xargs -d "\\n" mv -t'
alias xrm='xargs -d "\\n" rm -r'


Которые позволяют делать так:

al Sora|grep -i kakeru |grep -v HDDLib|grep -v write|xrm

(убивает все дапы, не находящиеся в комплитах)

Или вот так:

al Sora|grep -i woto|grep -v HDD|xmv /pub/anime/ongoing/Sora\ no\ Oto/


Вот в этом месте есть элемент несовершенства: выбирать автоматом файлы в получившихся 180 файлах компьютер не умеет (однако, у меня есть наброски, как это делать, см по тегу gattai).

Собственно, всё. Опыт показывает, что на разбор примерно 300Гб онгоинга уходит около получаса (это включает в себя поиск по тайтлу на анидб с выяснением "а что это такое, вообще, сколько было овашек этого и как они различаются?").

В следующей части: HDDLib под микроскопом.
Tags: anime, animelife, linux
Subscribe

  • ансибло-философия

    А вот я хочу продолжить думать умное про ансибл, ci/cd и прочую рабочую фигню между гитом и сервером. Классическое программирование стремится…

  • positive nagging

    Для повышения морали в коллективе было решено запретить токсичные и негативные сообщения в чате. Теперь все сообщения в чате выглядят так: Resolved…

  • Шли годы, а я учусь башу.

    Офигеть. Офигеть. echo <(echo hello) foobar /dev/fd/63 foobar Я этого честно не знал. Я знал, что в конце можно, а что можно в середине -…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments