# 12 `nntplib` -- NNTP プロトコルクライアント

このモジュールでは、 クラス `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.'

このモジュール自体では以下の内容を定義しています:

クラス `NNTP`( | host[, port [, user[, password [, readermode] [, usenetrc]]]])

  ホスト host 上で動作し、ポート番号 port で要求待ちを している NNTP サーバとの接続を表現する新たな `NNTP` クラスの インスタンスを返します。標準のport は 119 です。オプションの user および password が与えられているか、 または /.netrcに適切な認証情報が指定されていてusenetrc が真 (デフォルト) の場合、 "`AUTHINFO USER`" および "`AUTHINFO PASS`" 命令を使って サーバに対して身元証明および認証を行います。オプションのフラグ readermode が真の場合、認証の実行に先立って "`mode reader`" 命令が送信されます。reader モードは、ローカルマシン上の NNTP サーバ に接続していて、"`group`" のような reader 特有の命令を呼び出し たい場合に便利なことがあります。予期せず `NNTPPermanentError` に遭遇したなら、readermode を設定する必要があるかもしれません。 readermode のデフォルト値は `None` です。 usenetrc のデフォルト値は `True` です。

  バージョン 2.4 で 変更 された仕様: usenetrc 引数を追加しました

exception `NNTPError`
  標準の例外 `Exception` から導出されており、`nntplib` モジュールが送出する全ての例外の基底クラスです。

exception `NNTPReplyError`
  期待はずれの応答がサーバから返された場合に送出される例外です。 以前のバージョンとの互換性のために、`error_reply` はこのクラスと等価になっています。

exception `NNTPTemporaryError`
  エラーコードの範囲が 400-499 のエラーを受信した場合に送出される例外です。 以前のバージョンとの互換性のために、`error_temp` はこのクラスと等価になっています。

exception `NNTPPermanentError`
  エラーコードの範囲が 500-599 のエラーを受信した場合に送出される例外です。 以前のバージョンとの互換性のために、`error_perm` はこのクラスと等価になっています。

exception `NNTPProtocolError`
  サーバから返される応答が 1-5 の範囲の数字で始まっていない場合に 送出される例外です。 以前のバージョンとの互換性のために、`error_proto` はこのクラスと等価になっています。

exception `NNTPDataError`
  応答データ中に何らかのエラーが存在する場合に送出される例外です。 以前のバージョンとの互換性のために、`error_data` はこのクラスと等価になっています。