Содержание страницы
nntplib – клиент протокола NNTP¶nntplib – NNTP protocol client
Этот модуль определяет класс NNTP, который реализует клиентскую сторону протокола NNTP. Его можно использовать для создания программы чтения новостей, отправки сообщений или автоматической обработки новостей. Дополнительную информацию о NNTP (Network News Transfer Protocol, протокол передачи сетевых новостей) см. в RFC 977.
Вот два небольших примера использования. Чтобы вывести статистику по группе новостей и напечатать темы последних 10 статей:
>>> s = NNTP('news.cwi.nl')
>>> resp, count, first, last, name = s.group('comp.lang.python')
>>> print('Group', name, 'has', count, 'articles, range', first, 'to', last)
Group comp.lang.python has 59 articles, range 3742 to 3803
>>> resp, subs = s.xhdr('subject', first + '-' + last)
>>> for id, sub in subs[-10:]: print(id, sub)
...
3792 Re: Removing elements from a list while iterating...
3793 Re: Who likes Info files?
3794 Emacs and doc strings
3795 a few questions about the Mac implementation
3796 Re: executable python scripts
3797 Re: executable python scripts
3798 Re: a few questions about the Mac implementation
3799 Re: PROPOSAL: A Generic Python Object Interface for Python C Modules
3802 Re: executable python scripts
3803 Re: \POSIX{} wait and SIGCHLD
>>> s.quit()
'205 news.cwi.nl closing connection. Goodbye.'
Чтобы опубликовать статью из файла (подразумевается, что статья имеет верные заголовки):
>>> s = NNTP('news.cwi.nl')
>>> f = open('/tmp/article')
>>> s.post(f)
'240 Article posted successfully.'
>>> s.quit()
'205 news.cwi.nl closing connection. Goodbye.'
Сам модуль определяет следующие элементы:
- class nntplib.NNTP(host[, port[, user[, password[, readermode][, usenetrc]]]])¶
- Возвращает новый экземпляр класса NNTP, представляющий подключение к серверу NNTP, работающему на узле host и ожидающему на порту port. По умолчанию port равен 119. Если указаны необязательные user и password, или если подходящие учётные данные есть в /.netrc и необязательный флаг usenetrc имеет значение true (по умолчанию), для идентификации и аутентификации пользователя на сервере используются команды AUTHINFO USER и AUTHINFO PASS. Если необязательный флаг readermode равен true, перед выполнением аутентификации отправляется команда mode reader. Режим чтения иногда требуется, если вы подключаетесь к серверу NNTP на локальной машине и собираетесь вызывать команды, специфичные для чтения, например group. Если возникают неожиданные NNTPPermanentError, возможно, потребуется установить readermode. Значением readermode по умолчанию является None. Значением usenetrc по умолчанию является True.
- exception nntplib.NNTPError¶
- Этот класс, производный от стандартного исключения Exception, является базовым для всех исключений, вызываемых модулем nntplib.
- exception nntplib.NNTPReplyError¶
- Исключение, вызываемое при получении от сервера неожиданного ответа. Для обратной совместимости исключение error_reply эквивалентно данному классу.
- exception nntplib.NNTPTemporaryError¶
- Исключение, вызываемое при получении кода ошибки в диапазоне 400–499. Для обратной совместимости исключение error_temp эквивалентно данному классу.
- exception nntplib.NNTPPermanentError¶
- Исключение, вызываемое при получении кода ошибки в диапазоне 500–599. Для обратной совместимости исключение error_perm эквивалентно данному классу.
- exception nntplib.NNTPProtocolError¶
- Исключение, вызываемое при получении от сервера ответа, который не начинается с цифры в диапазоне 1–5. Для обратной совместимости исключение error_proto эквивалентно данному классу.
- exception nntplib.NNTPDataError¶
- Исключение, вызываемое при ошибке в данных ответа. Для обратной совместимости исключение error_data эквивалентно данному классу.
Объекты NNTP¶NNTP Objects
Экземпляры NNTP имеют следующие методы. response, возвращаемый как первый элемент кортежа результатов почти всех методов, – это ответ сервера: строка, начинающаяся с трёхзначного кода. Если ответ сервера указывает на ошибку, метод вызывает одно из перечисленных выше исключений.
- NNTP.getwelcome()¶
- Возвращает приветственное сообщение, отправленное сервером в ответ на начальное подключение. (Это сообщение иногда содержит отказ от ответственности или справочную информацию, которая может быть полезна пользователю.)
- NNTP.set_debuglevel(level)¶
- Устанавливает уровень отладки экземпляра. Он управляет объёмом выводимых отладочных сообщений. Значение по умолчанию, 0, не выводит отладочные сообщения. Значение 1 выдаёт умеренное количество отладочной информации, обычно одну строку на запрос или ответ. Значение 2 или больше выводит максимальный объём отладочной информации, регистрируя каждую отправленную и полученную строку соединения (включая текст сообщения).
- NNTP.newgroups(date, time[, file])¶
- Отправляет команду NEWGROUPS. Аргумент date должен быть строкой вида 'yymmdd', указывающей дату, а time – строкой вида 'hhmmss', указывающей время. Возвращает кортеж (response, groups), где groups – список названий групп, появившихся после указанных даты и времени. Если задан параметр file, то вывод команды NEWGROUPS сохраняется в файл. Если file – строка, то метод открывает файловый объект с таким именем, записывает в него, а затем закрывает. Если file – файловый объект, то он начинает вызывать write() для сохранения строк вывода команды. Если file задан, то возвращаемый list будет пустым списком.
- NNTP.newnews(group, date, time[, file])¶
- Отправляет команду NEWNEWS. Здесь group – это название группы или '*', а date и time имеют тот же смысл, что и для newgroups(). Возвращает кортеж (response, articles), где articles – список идентификаторов сообщений. Если задан параметр file, то вывод команды NEWNEWS сохраняется в файл. Если file – строка, то метод открывает файловый объект с таким именем, записывает в него, а затем закрывает. Если file – файловый объект, то он начинает вызывать write() для сохранения строк вывода команды. Если file задан, то возвращаемый list будет пустым списком.
- NNTP.list([file])¶
- Отправляет команду LIST. Возвращает кортеж (response, list), где list – это список кортежей. Каждый кортеж имеет вид (group, last, first, flag), где group – название группы, last и first – номера последней и первой статьи (в виде строк), а flag – 'y', если публикация разрешена, 'n', если нет, и 'm', если группа модерируется. (Обратите внимание на порядок: last, first.) Если задан параметр file, то вывод команды LIST сохраняется в файл. Если file – строка, то метод открывает файловый объект с таким именем, записывает в него, а затем закрывает. Если file – файловый объект, то он начинает вызывать write() на нём для сохранения строк вывода команды. Если file задан, то возвращаемый list будет пустым списком.
- NNTP.descriptions(grouppattern)¶
- Отправляет команду LIST NEWSGROUPS, где grouppattern – строка wildmat, как указано в RFC2980 (по сути, это те же шаблоны подстановки, что в DOS или UNIX). Возвращает пару (response, list), где list – список кортежей, содержащих (name, title).
- NNTP.description(group)¶
Получает описание для одной группы group. Если совпадает несколько групп (если ‘group’ – это строка шаблона wildmat), возвращается первое совпадение. Если ни одна группа не совпадает, возвращается пустая строка.
Этот метод опускает код ответа сервера. Если код ответа нужен, используйте descriptions().
- NNTP.group(name)¶
- Отправляет команду GROUP, где name – название группы. Возвращает кортеж (response, count, first, last, name), где count – (оценочное) количество статей в группе, first – номер первой статьи в группе, last – номер последней статьи в группе, а name – название группы. Числа возвращаются в виде строк.
- NNTP.help([file])¶
- Отправляет команду HELP. Возвращает кортеж (response, list), где list – это список строк справки. Если задан параметр file, то вывод команды HELP сохраняется в файл. Если file – строка, то метод открывает файловый объект с таким именем, записывает в него, а затем закрывает. Если file – файловый объект, то он начинает вызывать write() для сохранения строк вывода команды. Если file задан, то возвращаемый list будет пустым списком.
- NNTP.stat(id)¶
- Отправляет команду STAT, где id – идентификатор сообщения (заключённый в '<' и '>') или номер статьи (в виде строки). Возвращает тройку (response, number, id), где number – номер статьи (в виде строки), а id – идентификатор сообщения (заключённый в '<' и '>').
- NNTP.head(id)¶
- Отправляет команду HEAD, где id имеет то же значение, что и для stat(). Возвращает кортеж (response, number, id, list), где первые три элемента такие же, как для stat(), а list – это список заголовков статьи ( неинтерпретированный список строк без завершающих переводов строк).
- NNTP.body(id[, file])¶
- Отправляет команду BODY, где id имеет тот же смысл, что и для stat(). Если задан параметр file, то тело сохраняется в файл. Если file – строка, то метод открывает файловый объект с таким именем, записывает в него, а затем закрывает. Если file – файловый объект, то он начинает вызывать write() для сохранения строк тела. Возвращаемое значение как для head(). Если file задан, то возвращаемый list будет пустым списком.
- NNTP.article(id)¶
- Отправляет команду ARTICLE, где id имеет то же значение, что и для stat(). Возвращаемое значение такое же, как для head().
- NNTP.slave()¶
- Отправляет команду SLAVE. Возвращает response сервера.
- NNTP.xhdr(header, string[, file])¶
- Отправляет команду XHDR. Эта команда не определена в RFC, но является распространённым расширением. Аргумент header – это ключевое слово заголовка, например 'subject'. Аргумент string должен иметь вид 'first-last', где first и last – номера первой и последней статьи для поиска. Возвращает кортеж (response, list), где list – это список пар (id, text), где id – номер статьи (в виде строки), а text – текст запрошенного заголовка для этой статьи. Если задан параметр file, то вывод команды XHDR сохраняется в файл. Если file – строка, то метод открывает файловый объект с таким именем, записывает в него, а затем закрывает. Если file – файловый объект, то он начинает вызывать write() на нём для сохранения строк вывода команды. Если file задан, то возвращаемый list будет пустым списком.
- NNTP.post(file)¶
- Отправляет статью с помощью команды POST. Аргумент file – это открытый файловый объект, который читается до конца (EOF) с помощью его метода readline(). Это должна быть правильно оформленная новостная статья, включающая необходимые заголовки. Метод post() автоматически экранирует строки, начинающиеся с ..
- NNTP.ihave(id, file)¶
- Отправляет команду IHAVE. id – это идентификатор сообщения (заключённый в '<' и '>'). Если ответ не является ошибкой, обрабатывать file точно так же, как в методе post().
- NNTP.date()¶
- Возвращает тройку (response, date, time), содержащую текущую дату и время в форме, подходящей для методов newnews() и newgroups(). Это необязательное расширение NNTP, которое может не поддерживаться всеми серверами.
- NNTP.xgtitle(name[, file])¶
Обрабатывает команду XGTITLE и возвращает пару (response, list), где list – это список кортежей вида (name, title). Если указан параметр file, то вывод команды XGTITLE сохраняется в файл. Если file – строка, метод открывает файловый объект с этим именем, записывает в него и закрывает. Если file – файловый объект, то на нём вызывается write() для сохранения строк вывода команды. Если file указан, возвращаемый list будет пустым списком. Это необязательное расширение NNTP, которое может не поддерживаться некоторыми серверами.
В RFC2980 говорится: «Рекомендуется объявить это расширение устаревшим». Используйте descriptions() или description() вместо него.
- NNTP.xover(start, end[, file])¶
- Возвращает пару (resp, list). list – это список кортежей, по одному на каждую статью в диапазоне, ограниченном номерами статей start и end. Каждый кортеж имеет вид (article number, subject, poster, date, id, references, size, lines). Если указан параметр file, то вывод команды XOVER сохраняется в файл. Если file – строка, метод открывает файловый объект с этим именем, записывает в него и закрывает. Если file – файловый объект, то на нём вызывается write() для сохранения строк вывода команды. Если file указан, возвращаемый list будет пустым списком. Это необязательное расширение NNTP, которое может не поддерживаться всеми серверами.
- NNTP.xpath(id)¶
- Возвращает пару (resp, path), где path – это путь к каталогу статьи с идентификатором сообщения id. Это необязательное расширение NNTP и может не поддерживаться всеми серверами.
- NNTP.quit()¶
- Отправляет команду QUIT и закрывает соединение. После вызова этого метода не следует вызывать другие методы объекта NNTP.