|
|
||
Uploaded on Thu, 17 Jun 2010 01:07:24 +0400 by ZLRChecker.pl |
zlrchecker.pl — Скрипт для проверки обновлений на самиздате.
zlrchecker.pl [ --root | -R URL ] [ --author | -A author ] [ --publication | -P publication ] [ --url | -U URL ] [ --agent UA ] [ --user user ] [ --password password ] [ --prefercache | --no-prefercache ] [ --optdir | -o directory ] [ --watches | -w file ] [ --pdir | -p directory ] [ --acache | -a directory ] [ --verbose | -v ] [ --version ] [ --minescq float ] [ --dest | -O file ] [ --help | -h | -? ] [--] [ action [arguments] ] [; [ action ... ] ...]
Ключи:
Использовать в качестве корня URL вместо http://zhurnal.lib.ru.
Указывает, с каким разделом надо работать. Аргумент обязателен для большинства действий.
Указывает, с каким произведением надо работать.
Альтернативный способ указания корня, автора и произведение: вместо использования ключей --root, --author и --publication можно указать URL страницы автора или URL произведения.
Установить значение User-Agent (по умолчанию: Mozilla/5.0 (zlrchecker.pl, libwww-perl/#.###)). Необходимо отметить, что при некоторых значениях этого поля некоторые возможности будут недоступны.
Использовать пользователя user и пароль password для доступа к серверу. Запрашивает пароль в случае, если он не указан.
Использовать кэш, а не загружать информацию со страницы автора, если это возможно. Игнорируется, если задано действие «check».
Использовать каталог directory как каталог настроек (по умолчанию им является каталог ~/.zlrchecker).
Использовать файл file как файл с настройками и списком авторов (по умолчанию: optdir/watchauthors).
Загружать произведения в каталог diretory (указывается относительно optdir) (по умолчанию: optdir/publications).
Использовать каталог directory как каталог с базой данных предыдущих проверок (указывается относительно optdir) (по умолчанию: optdir/authors).
Указать файл, в который следует сохранять результаты.
Переопределяет настройку minescq. См. WATCHES FILE. По умолчанию переопределяется только настройка, соответствующая ключу «default options» в файле watchauthors. Для ключей --gethtml и --getfb2 переопределяются также настройки, специфичные для данного автора.
Действия:
Проверить обновления (действие по умолчанию).
Вывести указанное свойство на терминал. print %str
выводит результат
замены str в соответствии с PRINT FORMAT для указанного произведения (если
оно указано, если же нет, то будут определены только те флаги, которые не
зависят от произведения). print +str
и print 0str
выводит
результат замены str в соответствии с PRINT FORMAT для всех произведений,
каждый результат разделяется либо новой строкой, либо нулевым байтом
соответственно. Возможные свойства:
Список произведений автора (аналогично +%f
).
Список подписок на комментарии (доступен только тому, кто на них подписан).
Список дружеских разделов.
Оставить комментарий к произведению. Добавление '%' к имени свойства (или в конце имени файла, если используется сокращённая форма указания файла) заставляет программу использовать PRINT FORMAT для данного свойства. Возможные свойства:
Имя (по умолчанию: ZLRChecker.pl), электронный адрес и адрес домашней страницы (по умолчанию: «http://zlrchecker.sourceforge.net»). Значения по умолчанию как глобально, так и для каждого из авторов могут быть изменены в файле optdir/watchauthors, см. WATCHES FILE.
Получить текст комментария из указанного файла. Вместо имени файла можно указать «-», в этом случае будет использован стандартный ввод. Слово «file» может быть опущено, если данное свойство указано последним. Если используется форма file%, то PRINT FORMAT применяется к тексту файла, а не к его названию.
Текст комментария. Нельзя использовать совместно со свойством «file».
Поставить оценку mark.
Загрузить иллюстрацию к произведению из файла filename, указав description в качестве описания и author в качестве автора.
Изменить свойства раздела. Возможные свойства:
Пароль и секретный адрес электронной почты.
Автор, название раздела, аннотация к разделу, электронный адрес автора и адрес его домашней страницы.
Email для рассылки.
Подписаться на рассылку комментариев читателей.
Дата в формате день/месяц/год (пример: 01/01/1970). Если вместо даты указать «~», то будет использовано сегодняшнее число.
Разрешить (allow)/запретить(deny) общий доступ на чтение (read)/запись (write). allowread 1 эквивалентно denyread 0. allowwrite 2 означает «разрешить запись друзьям».
Разрешить (allowbooksread)/запретить (denybooksread) чтение книг из данного раздела (используется как значение по умолчанию при создании произведения, не влияет на уже созданные произведения).
Изменить место рождения.
Изменить дату рождения.
Список ссылок «начните знакомство с …».
Изменить список лучших. В отличие от остальных свойств, по умолчанию происходит добавление.
Изменить список разделов. В отличие от остальных свойств, по умолчанию происходит добавление.
Изменить подписку на комментарии. В отличие от остальных свойств, по умолчанию происходит добавление.
Изменить библиографию. В отличие от остальных свойств, по умолчанию происходит добавление. Здесь publication — уникальная часть названия произведения, а type — уникальная часть названия типа публикации. Другие свойства:
Название публикации.
Номер в серии.
Издательство.
Дата издания.
Тираж.
ISBN.
Ссылка «купить».
Изменить свойства произведения (set) или создать новое произведение с указанными
свойствами (add). Во втором случае в качестве filename необходимо указать имя
HTML-файла или же «-» для использования стандартного ввода. Также, add -
и add
эквивалентны, если за ними не следует никаких свойств. Возможные
свойства:
Заголовок произведения, автор, переводчик и аннотация.
Формат, жанры и доступ к комментариям. Жанры могут быть указаны через запятую. В качестве аргументов должны быть либо числа, либо уникальные части строки названия.
Дата изменения произведения. «~» означает «использовать текущую дату».
Разрешить (allow)/запретить(deny) общий доступ на чтение (read)/запись (write). allowread 1 эквивалентно denyread 0. allowwrite 2 означает «разрешить запись друзьям».
Включить (enable)/выключить (disable) возможность оставлять оценки. enablemarks 1 эквивалентно disablemarks 0.
Загрузить изображение из файла filename на сайт. Если файл не указан, то удалить соответствующее изображение. what означает цель загрузки:
Фотография автора, показываемая на первой странице.
Фотография, показываемая на странице «об авторе».
Изменить список дружеских разделов: +author и author добавляет автора к списку дружеских разделов, -author удаляет автора из списка дружеских разделов, а =author очищает список и добавляет в него автора. Вместо имени автора можно использовать символ тильды («~»), тогда будет использован список авторов из файла watchauthors. Указание «:subscribe» или «:unsubscribe» в качестве аргумента подписывает или отменяет подписку на список новинок соответственно.
Удалить произведение.
Загрузить произведение, оттипографировать и вывести на терминал (или в файл, указанный ключом --dest).
Загрузить произведение, конвертировать в FB2 и вывести на терминал. В случае, если указан ключ --dest, то сохранить в zip-архиве с указанным именем.
Получить все комментарии к произведению и вывести их на терминал (или в файл, указанный ключом --dest).
Сделать резервную копию авторского раздела. Копия будет сохранена в архив --dest. Настройки обрабатываются следующим образом: если в начале настройки находится знак «+» или не находится ничего, то данная настройка прибавляется к списку имеющихся настроек. Если в начале настройки находится знак «=», то список настроек очищается, затем данная настройка прибавляется к списку. Если же в начале настройки находится знак «-», то данная настройка удаляется из списка. Во всех случаях вместо одной настройки можно указывать список настроек, разделённых запятой. Возможные настройки (по умолчанию включены все, кроме «html» и «fb2»):
Сохранить оригинальный HTML код произведения (будет сохранено в t-filename.shtml).
Оттипографировать произведение и сохранить типографированный вариант (будет сохранено в t-filename.html).
Преобразовать произведение в fb2 и включить результат в архив (будет сохранено в t-filename.fb2).
Также сохранить комментарии (будет сохранено в c-filename.yaml).
Сохранить информацию о разделе и список произведений (будет сохранено в I-info.yaml).
Сохранить иллюстрации (будет сохранено в images/author/filename/imgname).
Сохранить список опубликованного (будет сохранено в I-bibliography.yaml).
Сохранить список лучших (будет сохранено в I-top.yaml).
Сохранить список разделов, объявленных дружескими автором раздела (будет сохранено в I-friends.yaml).
Файл настроек — хэш, закодированный с помощью YAML. Допустимы следующие ключи:
default options
и ключ, содержащий в себе часть URL с идентификатором
автора (к примеру, для URL zhurnal.lib.ru/f/foo ключом будет foo).
Соответствующим значением тоже будет хэш со следующими ключами:
Изменяет значения имени, адреса домашней страницы и адреса электронной почты по умолчанию для действия post (см. OPTIONS AND ARGUMENTS).
Хэш с профилями. См. PROFILES.
Определяет, о каких обновлениях следует оповещать. Те обновления, о которых не происходит оповещения, также не загружаутся. См. FILTERS.
Определяет, какие обновления следует загружать. См. FILTERS.
Определяет, что считается кавычками. Регулярное выражение, значение по умолчанию
['"]
. Можно использовать практически всю мощь регулярных выражений Perl.
Имя архива с произведением. Значение по умолчанию %=-%@-%f-%!\t
.
См. PRINT FORMAT.
Имя файла в архиве. Значение по умолчанию %@-%f:%t
. См. PRINT FORMAT.
Каталог, в который будут сохранятся произведения данного автора. Значение по умолчанию: optdir/publications.
Каталог с данными предыдущей проверки. Значение по умолчанию: optdir/authors.
Определяет, надо ли уведомлять об обновлениях, если файл с результатами предыдущей проверки отсутствует. Значение по умолчанию: 0.
Определяет, надо ли сохранять изображения внутри архива или же в виде тёга <binary> внутри файла. Значение по умолчанию: 0.
Определяет формат сообщения для вывода на терминал. См. PRINT FORMAT.
Значение по умолчанию:
%?f(%?>(%-9>%)(new %))(removed ) %,\n
.
Файл для сохранения RSS ленты. Значение по умолчанию: optdir/rss.xml.
Максимальное число новостей в RSS ленте. Значение по умолчанию: 99.
Хэш, определяет некоторые настройки для RSS ленты: имя ленты (title), описание (description) и адрес (link) являются глобальными настройками для всей ленты и не производят никакого эффекта, если RSS файл уже существует; заголовок (itemtitle) и описание (itemdescription) используются каждый раз при создании новостей (см. PRINT FORMAT). Значения по умолчанию:
title => "ZLRchecker.pl’s RSS feed", description => "Here you get notification about updates", # link => undef, itemtitle => "%?f(%?F(Обновилось%)(Новое%) ". "произведение «%t» ". "в разделе «%.»)". "(Произведение «%T» ". "было удалено из раздела «%.»)", itemdescription => "Произведение: %t<br>". "Автор(ы): %^<br>". "Размер: %s<br>". "%?>/added|removed()(". "%?>=size(Изменился размер: %S → %s<br>%)(%)". "%??t=%T(%)(Изменилось название: %][T → %][t<br>%)". "%??i=%I(%)(Произведение было перемещено ". "%?I(из подраздела «%][I»%%%)(%%%) в подраздел «%][i»<br>%)". "%??o=%O(%)(%?O(Изменился формат произведения: %O →%%%)". "(Формат произведения:%%%) %o<br>%)". "%??g=%G(%)(Изменлись жанр(ы%%%) произведения: ". "«%G» → «%g»<br>%)". "%??p=%P(%)(Изменилось количество иллюстраций: ". "%p → %P%)". ")". "%?l(Сохранено в файле %l)(Не сохранялось)<br>". "%?a(Аннотация: <blockquote>%a</blockquote>)()",
Настройки RSS ленты новых комментариев. Значения по умолчанию:
coutformat => "c %4# %;\n" crssfile => "comments.xml", crssopts => { title => "ZLRCheckers.pl’s comment RSS feed", description => "Here you get notifications ". "about new comments", itemtitle => "Новые комментарии у произведения «%t» ". "в разделе «%.»: %#", itemdescription => "", itemlink => "%;", },
Если «crssmax» не определён, то вместо него используется «rssmax».
Определяет, о новых комментариях к каким произведениям следует оповещать. См. FILTERS. Если не определён, не оповещать ни о чём.
Для всех слов word
, если отношение количества word'
или 'word
к общему
количеству вхождений word
не меньше значения minecsq, то превратить одиночный
штрих в данном слове в апостроф. Значение по умолчанию: 0,5.
Каждый хэш внутри данного хэша может иметь ключи, перечисленные ниже. Соответствующие ключам значения — массив или скаляр (считается массивом с одним элементом) с данными для проверок. Произведение соответствует профилю тогда и только тогда, когда оно попадает под все проверки. Собственно, ключи:
^[=-](.*[<>]=?\d+)
Для каждой подстроки вида [<>]=?\d+
проверка считается проваленной, если
только eval "$size$substring"
не истина. Здесь под $size понимается размер
произведения, если строка начинается с символа «=», или разница между текущим
и размером при предыдущей проверке, если строка начинается с «-».
^[=/]string
Если строка начинается с символа «=», то проверить, не равно ли имя файла произведения, его заголовок или подраздел, в котором оно находится, строке string. Если же строка начинается с символа «/», то считать string регулярным выражением, которому должно соответствать имя файла, заголовок или подраздел.
Проверить строку string, замещённую в соответствии с PRINT FORMAT, на соответствие регулярным выражениям regN. Следующие профили эквивалентны:
match: [["%f", foo], ["%t", Bar, Baz]]
match: {"%f": [foo], "%t": [Bar, Baz]}
match: {"%f": foo, "%t": [Bar, Baz]}
Необходимо отметить, что имена «all» и «none» уже определены.
Фильтры определяются в хэшах, соответствующий ключам «check» и «download» настроек. Каждому из этих ключей должен соответствовать хэш со следующими ключами:
Если произведение соответствует любому из перечисленных профилей, установить свойство exclude или include в 1. Вместо имени профиля можно указать хэш, который должен быти правильным профилем. См. PROFILES.
Действует аналогично exclude: [all]
или include: [all]
, если
соответствующий ключ не определён. Если указанный ключ определён, то не имеет
никакого эффекта.
Если «order» равен IncludeExclude, то произведение проходит, если include — истина, а exclude — ложь. Если «order» равен ExcludeInclude, то произведение проходит, если include — истина или exclude — ложь.
Данный формат немного схож с форматом printf: %MF
заменяется на
новое свойство, если F — буква в нижем регистре; на старое (сохранённое),
если F — буква в верхнем регистре. Затем результат замены модифицируется
в соответствии с M. Возможные F:
Размер (size), аннотация (annotation), заголовок (title), жанр(ы) (genres), дата обновления (udate дате), имя файла произведения (filename) или имя файла, в котором произведение было сохранено (last save filename). Аннотация включается «как есть».
Количество иллюстраций (pictures).
Количество сообщенй и дата последнего сообщения.
Имя подраздела.
Форма произведения (только если не указан подраздел).
Текущее время в секундах (результат выполнения time).
Часть URL с автором.
URL страницы со списком произведений полностью.
URL, указанный в качестве домашней страницы автора.
Время последнего обновления авторского раздела.
Имя автора произведения или автора раздела, если первое не указано.
Имя автора раздела (может отличаться от имень автора произведения).
Абсолютный URL произведения.
Разница между текущим и сохранённым количеством комментариев.
Знак процента и круглые скобки: экранируемые символы.
Указанный текст (text), в котором последовательности \\
и \'
заменены
на \
и '
соответственно.
Указанный текст (text), в котором сначала все последовательности \C
заменяются на C
, а затем результат форматируется в соотвестствии с
PRINT FORMAT.
Следующие F можно использовать только в профилях (см. PROFILES) (использование этих флагов в других местах, хотя и не приведёт к ошибке, но не имеет смысла, так как значения этих флагов не определены за пределами профилей):
Старое и новое значения изменившихся свойств.
Что, собственно, изменилось. Не определено, если произведение было добавлено, а не обновилось.
Модификаторы (указываются в том порядке, в каком должны быть применены):
Дополнить пробелами до min («-» контролирует, с какой стороны будет
происходить дополнение), если min указано. Затем обрезать до max, если
,max
указано.
Экранировать строку для использования в HTML документах.
Превратить последовательности вида &...;
в символы Unicode.
Экранировать строку для использования в URL.
Экранировать специальные символы, используемые в регуляраных выражениях Perl.
Преобразовать некоторые символы, которые нельзя использовать в именах файлов в Windows:
% => %% : => %(..) * => %. / => %s \ => %b ? => %q | => %p < => %l > => %g " => %('')
Перевести строку в нижний регистр и конвертировать некоторые известные символы UTF-8 в ASCII.
Формат: %?Fcondition(value_if_true)(value_if_false)
. Если
значение, соответствующее флагу F, удовлетворяет условию condition, то
заменить всё выражение на value_if_true. Иначе заменить всё выражение на
value_if_false. После замены все последовательности %%
и %)
заменяется
на %
и )
соответственно. Это позволяет создавать вложенные условные
выражения. Также можно использовать %??
вместо %?
. В этом случае все
выражения вида %...
заменяются в соответствии с PRINT FORMAT.
Условие condition должно иметь одну из следующих форм: =str
или
/pattern
. В первом случае, проверить, совпадает ли значение,
соответствующее F, со строкой str; во втором случае проверить,
соответствует ли значение флага регулярному выражению pattern. Внутри условия
%%
и %(
заменяются на %
и (
соответственно. Если условие не указано,
то проверить, определено ли выражение, соответствующее флагу.
Простая настройка, запрещающая скачивать файлы размером 10k и менее:
default options: minescq: 1.1 profiles: minsize: size: ["= <=10"] download: default: include order: IncludeExclude exclude: [minsize] foo: ...
Простая настройка, запрещающая скачивать файлы размером 10k и менее для всех авторов и 50k и менее для автора foo:
default options: minescq: 1.1 profiles: minsize: size: ["= <=10"] download: default: include order: IncludeExclude exclude: [minsize] foo: profiles: minsize: size: ["= <=50"] ...
Настройки, исключающие произведения вида bar#
для автора foo:
default options: minescq: 1.1 foo: profiles: nobar: name: ['/^bar\d+$'] check: default: include order: IncludeExclude exclude: [nobar] ...
или
default options: minescq: 1.1 foo: profiles: nobar: name: '/^bar\d+$' check: default: include order: IncludeExclude exclude: [nobar] ...
или
default options: minescq: 1.1 foo: check: default: include order: IncludeExclude exclude: - name: '/^bar\d+$' ...
Тоже самое, но с использованием проверки «match»:
default options: minescq: 1.1 foo: profiles: nobar: match: [['%f', '^bar\d+$']] check: default: include order: IncludeExclude exclude: [nobar] ...
|
Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души"
М.Николаев "Вторжение на Землю"