Русский Текст : другие произведения.

Added by Zlrchecker.pl / Untitled

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:


 Ваша оценка:
  • Аннотация:
    Uploaded on Thu, 17 Jun 2010 01:07:24 +0400 by ZLRChecker.pl



NAME

zlrchecker.pl — Скрипт для проверки обновлений на самиздате.


SYNOPSIS

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 ... ] ...]


OPTIONS AND ARGUMENTS

Ключи:

--root URL

Использовать в качестве корня URL вместо http://zhurnal.lib.ru.

--author author

Указывает, с каким разделом надо работать. Аргумент обязателен для большинства действий.

--publication publication

Указывает, с каким произведением надо работать.

--url URL

Альтернативный способ указания корня, автора и произведение: вместо использования ключей --root, --author и --publication можно указать URL страницы автора или URL произведения.

--agent UserAgent

Установить значение User-Agent (по умолчанию: Mozilla/5.0 (zlrchecker.pl, libwww-perl/#.###)). Необходимо отметить, что при некоторых значениях этого поля некоторые возможности будут недоступны.

--user user
--password password

Использовать пользователя user и пароль password для доступа к серверу. Запрашивает пароль в случае, если он не указан.

--prefercache

Использовать кэш, а не загружать информацию со страницы автора, если это возможно. Игнорируется, если задано действие «check».

--optdir directory

Использовать каталог directory как каталог настроек (по умолчанию им является каталог ~/.zlrchecker).

--watches file

Использовать файл file как файл с настройками и списком авторов (по умолчанию: optdir/watchauthors).

--pdir directory

Загружать произведения в каталог diretory (указывается относительно optdir) (по умолчанию: optdir/publications).

--acache directory

Использовать каталог directory как каталог с базой данных предыдущих проверок (указывается относительно optdir) (по умолчанию: optdir/authors).

--dest file

Указать файл, в который следует сохранять результаты.

--minescq float

Переопределяет настройку minescq. См. WATCHES FILE. По умолчанию переопределяется только настройка, соответствующая ключу «default options» в файле watchauthors. Для ключей --gethtml и --getfb2 переопределяются также настройки, специфичные для данного автора.

Действия:

check

Проверить обновления (действие по умолчанию).

print [property | %str | +str | 0str]

Вывести указанное свойство на терминал. print %str выводит результат замены str в соответствии с PRINT FORMAT для указанного произведения (если оно указано, если же нет, то будут определены только те флаги, которые не зависят от произведения). print +str и print 0str выводит результат замены str в соответствии с PRINT FORMAT для всех произведений, каждый результат разделяется либо новой строкой, либо нулевым байтом соответственно. Возможные свойства:

publications

Список произведений автора (аналогично +%f).

subscriptions

Список подписок на комментарии (доступен только тому, кто на них подписан).

friends

Список дружеских разделов.

post [property[%] value] [filename[%]]

Оставить комментарий к произведению. Добавление '%' к имени свойства (или в конце имени файла, если используется сокращённая форма указания файла) заставляет программу использовать PRINT FORMAT для данного свойства. Возможные свойства:

name
email
homepage

Имя (по умолчанию: ZLRChecker.pl), электронный адрес и адрес домашней страницы (по умолчанию: «http://zlrchecker.sourceforge.net»). Значения по умолчанию как глобально, так и для каждого из авторов могут быть изменены в файле optdir/watchauthors, см. WATCHES FILE.

file

Получить текст комментария из указанного файла. Вместо имени файла можно указать «-», в этом случае будет использован стандартный ввод. Слово «file» может быть опущено, если данное свойство указано последним. Если используется форма file%, то PRINT FORMAT применяется к тексту файла, а не к его названию.

text

Текст комментария. Нельзя использовать совместно со свойством «file».

vote mark

Поставить оценку mark.

addillustration filename [description [author]]

Загрузить иллюстрацию к произведению из файла filename, указав description в качестве описания и author в качестве автора.

sectionset [ property value | property[+-]=value ]

Изменить свойства раздела. Возможные свойства:

secretemail
passwd

Пароль и секретный адрес электронной почты.

author
title
annotation
email
homepage

Автор, название раздела, аннотация к разделу, электронный адрес автора и адрес его домашней страницы.

subscriptionemail

Email для рассылки.

commentssubscribe [ 0 | 1 ]

Подписаться на рассылку комментариев читателей.

date [ DD/MM/YYYY | ~ ]

Дата в формате день/месяц/год (пример: 01/01/1970). Если вместо даты указать «~», то будет использовано сегодняшнее число.

allowread [ 0 | 1 ]
denyread [ 0 | 1 ]
allowwrite [ 0 | 1 | 2 ]
denywrite [ 0 | 1 ]

Разрешить (allow)/запретить(deny) общий доступ на чтение (read)/запись (write). allowread 1 эквивалентно denyread 0. allowwrite 2 означает «разрешить запись друзьям».

allowbooksread [ 0 | 1 ]
denybooksread [ 0 | 1 ]

Разрешить (allowbooksread)/запретить (denybooksread) чтение книг из данного раздела (используется как значение по умолчанию при создании произведения, не влияет на уже созданные произведения).

birthplace [Country,]City

Изменить место рождения.

birthday DD/MM/YYYY

Изменить дату рождения.

startwith publication1[,publication2]

Список ссылок «начните знакомство с …».

top30 [mark:]author:publication:[annotation]

Изменить список лучших. В отличие от остальных свойств, по умолчанию происходит добавление.

subsection name::[annotation]

Изменить список разделов. В отличие от остальных свойств, по умолчанию происходит добавление.

subscription author/publication

Изменить подписку на комментарии. В отличие от остальных свойств, по умолчанию происходит добавление.

bibliography publication::[type][:property=value[:...]]

Изменить библиографию. В отличие от остальных свойств, по умолчанию происходит добавление. Здесь publication — уникальная часть названия произведения, а type — уникальная часть названия типа публикации. Другие свойства:

title

Название публикации.

number

Номер в серии.

publisher

Издательство.

date

Дата издания.

copynumber

Тираж.

ISBN

ISBN.

buyref

Ссылка «купить».

set [ property value | property[+]=value ]
add [filename] [ property value | property[+]=value ]

Изменить свойства произведения (set) или создать новое произведение с указанными свойствами (add). Во втором случае в качестве filename необходимо указать имя HTML-файла или же «-» для использования стандартного ввода. Также, add - и add эквивалентны, если за ними не следует никаких свойств. Возможные свойства:

title str
author str
translator str
annotation str

Заголовок произведения, автор, переводчик и аннотация.

format str
genres str1[,str2,...]
cperm str

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

date [ DD/MM/YYYY | ~ ]

Дата изменения произведения. «~» означает «использовать текущую дату».

allowread [ 0 | 1 ]
denyread [ 0 | 1 ]
allowwrite [ 0 | 1 | 2 ]
denywrite [ 0 | 1 ]

Разрешить (allow)/запретить(deny) общий доступ на чтение (read)/запись (write). allowread 1 эквивалентно denyread 0. allowwrite 2 означает «разрешить запись друзьям».

enablemarks [ 0 | 1 ]
disablemarks [ 0 | 1 ]

Включить (enable)/выключить (disable) возможность оставлять оценки. enablemarks 1 эквивалентно disablemarks 0.

setimage [what] [filename]

Загрузить изображение из файла filename на сайт. Если файл не указан, то удалить соответствующее изображение. what означает цель загрузки:

  1. | first | index | main | author

    Фотография автора, показываемая на первой странице.

  2. | second | about | information

    Фотография, показываемая на странице «об авторе».

setfriends [:[un]subscribe] [+-=]author1 [ [+-]author2 ... ]

Изменить список дружеских разделов: +author и author добавляет автора к списку дружеских разделов, -author удаляет автора из списка дружеских разделов, а =author очищает список и добавляет в него автора. Вместо имени автора можно использовать символ тильды («~»), тогда будет использован список авторов из файла watchauthors. Указание «:subscribe» или «:unsubscribe» в качестве аргумента подписывает или отменяет подписку на список новинок соответственно.

delete

Удалить произведение.

savehtml

Загрузить произведение, оттипографировать и вывести на терминал (или в файл, указанный ключом --dest).

savefb2

Загрузить произведение, конвертировать в FB2 и вывести на терминал. В случае, если указан ключ --dest, то сохранить в zip-архиве с указанным именем.

savecomments

Получить все комментарии к произведению и вывести их на терминал (или в файл, указанный ключом --dest).

savesection [ [+-=]option ... ]

Сделать резервную копию авторского раздела. Копия будет сохранена в архив --dest. Настройки обрабатываются следующим образом: если в начале настройки находится знак «+» или не находится ничего, то данная настройка прибавляется к списку имеющихся настроек. Если в начале настройки находится знак «=», то список настроек очищается, затем данная настройка прибавляется к списку. Если же в начале настройки находится знак «-», то данная настройка удаляется из списка. Во всех случаях вместо одной настройки можно указывать список настроек, разделённых запятой. Возможные настройки (по умолчанию включены все, кроме «html» и «fb2»):

original

Сохранить оригинальный HTML код произведения (будет сохранено в t-filename.shtml).

html

Оттипографировать произведение и сохранить типографированный вариант (будет сохранено в t-filename.html).

fb2

Преобразовать произведение в fb2 и включить результат в архив (будет сохранено в t-filename.fb2).

comments

Также сохранить комментарии (будет сохранено в c-filename.yaml).

info

Сохранить информацию о разделе и список произведений (будет сохранено в I-info.yaml).

illustrations

Сохранить иллюстрации (будет сохранено в images/author/filename/imgname).

bibliography

Сохранить список опубликованного (будет сохранено в I-bibliography.yaml).

top

Сохранить список лучших (будет сохранено в I-top.yaml).

friends

Сохранить список разделов, объявленных дружескими автором раздела (будет сохранено в I-friends.yaml).


WATCHES FILE

Файл настроек — хэш, закодированный с помощью YAML. Допустимы следующие ключи: default options и ключ, содержащий в себе часть URL с идентификатором автора (к примеру, для URL zhurnal.lib.ru/f/foo ключом будет foo). Соответствующим значением тоже будет хэш со следующими ключами:

defaultname
defaulturl
defaultemail

Изменяет значения имени, адреса домашней страницы и адреса электронной почты по умолчанию для действия post (см. OPTIONS AND ARGUMENTS).

profiles

Хэш с профилями. См. PROFILES.

check

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

download

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

qreg

Определяет, что считается кавычками. Регулярное выражение, значение по умолчанию ['"]. Можно использовать практически всю мощь регулярных выражений Perl.

pfilename

Имя архива с произведением. Значение по умолчанию %=-%@-%f-%!\t. См. PRINT FORMAT.

pafilename

Имя файла в архиве. Значение по умолчанию %@-%f:%t. См. PRINT FORMAT.

pubdir

Каталог, в который будут сохранятся произведения данного автора. Значение по умолчанию: optdir/publications.

acache

Каталог с данными предыдущей проверки. Значение по умолчанию: optdir/authors.

shownew

Определяет, надо ли уведомлять об обновлениях, если файл с результатами предыдущей проверки отсутствует. Значение по умолчанию: 0.

alwaysbinary

Определяет, надо ли сохранять изображения внутри архива или же в виде тёга <binary> внутри файла. Значение по умолчанию: 0.

outformat

Определяет формат сообщения для вывода на терминал. См. PRINT FORMAT. Значение по умолчанию: %?f(%?>(%-9>%)(new %))(removed ) %,\n.

rssfile

Файл для сохранения RSS ленты. Значение по умолчанию: optdir/rss.xml.

rssmax

Максимальное число новостей в RSS ленте. Значение по умолчанию: 99.

rssopts

Хэш, определяет некоторые настройки для 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>)()",
coutformat
crssfile
crssmax
crssopts

Настройки 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».

comments

Определяет, о новых комментариях к каким произведениям следует оповещать. См. FILTERS. Если не определён, не оповещать ни о чём.

minescq

Для всех слов word, если отношение количества word' или 'word к общему количеству вхождений word не меньше значения minecsq, то превратить одиночный штрих в данном слове в апостроф. Значение по умолчанию: 0,5.


PROFILES

Каждый хэш внутри данного хэша может иметь ключи, перечисленные ниже. Соответствующие ключам значения — массив или скаляр (считается массивом с одним элементом) с данными для проверок. Произведение соответствует профилю тогда и только тогда, когда оно попадает под все проверки. Собственно, ключи:

size ^[=-](.*[<>]=?\d+)

Для каждой подстроки вида [<>]=?\d+ проверка считается проваленной, если только eval "$size$substring" не истина. Здесь под $size понимается размер произведения, если строка начинается с символа «=», или разница между текущим и размером при предыдущей проверке, если строка начинается с «-».

name
title
section ^[=/]string

Если строка начинается с символа «=», то проверить, не равно ли имя файла произведения, его заголовок или подраздел, в котором оно находится, строке string. Если же строка начинается с символа «/», то считать string регулярным выражением, которому должно соответствать имя файла, заголовок или подраздел.

match [string, reg1, ...]

Проверить строку string, замещённую в соответствии с PRINT FORMAT, на соответствие регулярным выражениям regN. Следующие профили эквивалентны:

    match: [["%f", foo], ["%t", Bar, Baz]]
    match: {"%f": [foo], "%t": [Bar, Baz]}
    match: {"%f":  foo,  "%t": [Bar, Baz]}

Необходимо отметить, что имена «all» и «none» уже определены.


FILTERS

Фильтры определяются в хэшах, соответствующий ключам «check» и «download» настроек. Каждому из этих ключей должен соответствовать хэш со следующими ключами:

exclude
include [profilename, ...]

Если произведение соответствует любому из перечисленных профилей, установить свойство exclude или include в 1. Вместо имени профиля можно указать хэш, который должен быти правильным профилем. См. PROFILES.

default exclude or include

Действует аналогично exclude: [all] или include: [all], если соответствующий ключ не определён. Если указанный ключ определён, то не имеет никакого эффекта.

order IncludeExclude or ExcludeInclude

Если «order» равен IncludeExclude, то произведение проходит, если include — истина, а exclude — ложь. Если «order» равен ExcludeInclude, то произведение проходит, если include — истина или exclude — ложь.


PRINT FORMAT

Данный формат немного схож с форматом printf: %MF заменяется на новое свойство, если F — буква в нижем регистре; на старое (сохранённое), если F — буква в верхнем регистре. Затем результат замены модифицируется в соответствии с M. Возможные F:

Format falgs (F)

s, a, t, g, u, f, l

Размер (size), аннотация (annotation), заголовок (title), жанр(ы) (genres), дата обновления (udate дате), имя файла произведения (filename) или имя файла, в котором произведение было сохранено (last save filename). Аннотация включается «как есть».

p

Количество иллюстраций (pictures).

c, k

Количество сообщенй и дата последнего сообщения.

i

Имя подраздела.

o

Форма произведения (только если не указан подраздел).

=

Текущее время в секундах (результат выполнения time).

@

Часть URL с автором.

<

URL страницы со списком произведений полностью.

  • URL, указанный в качестве домашней страницы автора.

  • +

    Время последнего обновления авторского раздела.

    ^

    Имя автора произведения или автора раздела, если первое не указано.

    .

    Имя автора раздела (может отличаться от имень автора произведения).

    ,

    Абсолютный URL произведения.

    #

    Разница между текущим и сохранённым количеством комментариев.

    %, (, )

    Знак процента и круглые скобки: экранируемые символы.

    'text'

    Указанный текст (text), в котором последовательности \\ и \' заменены на \ и ' соответственно.

    ``text''

    Указанный текст (text), в котором сначала все последовательности \C заменяются на C, а затем результат форматируется в соотвестствии с PRINT FORMAT.

    Следующие F можно использовать только в профилях (см. PROFILES) (использование этих флагов в других местах, хотя и не приведёт к ошибке, но не имеет смысла, так как значения этих флагов не определены за пределами профилей):

    v

    Старое и новое значения изменившихся свойств.

    >

    Что, собственно, изменилось. Не определено, если произведение было добавлено, а не обновилось.

    Flag modifiers

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

    [-][min][,max]

    Дополнить пробелами до min («-» контролирует, с какой стороны будет происходить дополнение), если min указано. Затем обрезать до max, если ,max указано.

    [

    Экранировать строку для использования в HTML документах.

    ]

    Превратить последовательности вида &...; в символы Unicode.

    &

    Экранировать строку для использования в URL.

    |

    Экранировать специальные символы, используемые в регуляраных выражениях Perl.

    \

    Преобразовать некоторые символы, которые нельзя использовать в именах файлов в Windows:

            % => %%
            : => %(..)
            * => %.
            / => %s
            \ => %b
            ? => %q
            | => %p
            < => %l
            > => %g
            " => %('')
    !

    Перевести строку в нижний регистр и конвертировать некоторые известные символы UTF-8 в ASCII.

    Conditional expressions

    Формат: %?Fcondition(value_if_true)(value_if_false). Если значение, соответствующее флагу F, удовлетворяет условию condition, то заменить всё выражение на value_if_true. Иначе заменить всё выражение на value_if_false. После замены все последовательности %% и %) заменяется на % и ) соответственно. Это позволяет создавать вложенные условные выражения. Также можно использовать %?? вместо %?. В этом случае все выражения вида %... заменяются в соответствии с PRINT FORMAT.

    Condition

    Условие condition должно иметь одну из следующих форм: =str или /pattern. В первом случае, проверить, совпадает ли значение, соответствующее F, со строкой str; во втором случае проверить, соответствует ли значение флага регулярному выражению pattern. Внутри условия %% и %( заменяются на % и ( соответственно. Если условие не указано, то проверить, определено ли выражение, соответствующее флагу.


    Example configurations

    Простая настройка, запрещающая скачивать файлы размером 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]
        ...

     Ваша оценка:

    Связаться с программистом сайта.

    Новые книги авторов СИ, вышедшие из печати:
    О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

    Как попасть в этoт список

    Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"