Документация Python неофициальный перевод
Содержание страницы

nntplib – клиент протокола NNTPnntplib – 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 эквивалентно данному классу.

Объекты NNTPNNTP 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.next()
Отправляет команду NEXT. Возвращаемое значение – как у stat().
NNTP.last()
Отправляет команду LAST. Возвращаемое значение – как у stat().
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.