20.11. nntplib — NNTPプロトコルクライアント—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/nntplib
移動先:案内検索

20.11。 nntplib —NNTPプロトコルクライアント

ソースコード: :source: `Lib / nntplib.py`



このモジュールは、NNTPプロトコルのクライアント側を実装するクラス NNTP を定義します。 ニュースリーダーやポスター、または自動ニュースプロセッサを実装するために使用できます。 NNTP(Network News Transfer Protocol)の詳細については、インターネット RFC 977 を参照してください。

使用方法の2つの小さな例を次に示します。 ニュースグループに関するいくつかの統計を一覧表示し、最後の10件の記事の主題を印刷するには:

>>> s = NNTP('news.gmane.org')
>>> resp, count, first, last, name = s.group('gmane.comp.python.committers')
>>> print 'Group', name, 'has', count, 'articles, range', first, 'to', last
Group gmane.comp.python.committers has 1071 articles, range 1 to 1071
>>> resp, subs = s.xhdr('subject', first + '-' + last)
>>> for id, sub in subs[-10:]: print id, sub
...
1062 Re: Mercurial Status?
1063 Re: [python-committers]  (Windows) buildbots on 3.x
1064 Re: Mercurial Status?
1065 Re: Mercurial Status?
1066 Python 2.6.6 status
1067 Commit Privileges for Ask Solem
1068 Re: Commit Privileges for Ask Solem
1069 Re: Commit Privileges for Ask Solem
1070 Re: Commit Privileges for Ask Solem
1071 2.6.6 rc 2
>>> s.quit()
'205 Bye!'

ファイルから記事を投稿するには(これは、記事に有効なヘッダーがあり、特定のニュースグループに投稿する権利があることを前提としています)。

>>> s = NNTP('news.gmane.org')
>>> f = open('articlefile')
>>> s.post(f)
'240 Article posted successfully.'
>>> s.quit()
'205 Bye!'

モジュール自体は、次の項目を定義します。

class nntplib.NNTP(host[, port [, user[, password [, readermode] [, usenetrc]]]])

NNTP クラスの新しいインスタンスを返します。これは、ポートポートでリッスンしているホストホストで実行されているNNTPサーバーへの接続を表します。 デフォルトのポートは119です。 オプションのユーザーおよびパスワードが提供されている場合、または適切な資格情報が/.netrcに存在し、オプションのフラグ usenetrc がtrue(デフォルト)の場合)、AUTHINFO USERおよびAUTHINFO PASSコマンドは、サーバーに対してユーザーを識別および認証するために使用されます。 オプションのフラグ readermode がtrueの場合、認証が実行される前にmode readerコマンドが送信されます。 ローカルマシン上のNNTPサーバーに接続していて、groupなどのリーダー固有のコマンドを呼び出す場合は、リーダーモードが必要になることがあります。 予期しない NNTPPermanentError が発生した場合は、 readermode を設定する必要があります。 readermode のデフォルトはNoneです。 usenetrc のデフォルトはTrueです。

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

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はこのクラスと同等です。

20.11.1。 NNTPオブジェクト

NNTPインスタンスには次のメソッドがあります。 ほとんどすべてのメソッドの戻りタプルの最初の項目として返される response は、サーバーの応答、つまり3桁のコードで始まる文字列です。 サーバーの応答がエラーを示している場合、メソッドは上記の例外の1つを発生させます。

NNTP.getwelcome()
最初の接続に応答してサーバーから送信されたウェルカムメッセージを返します。 (このメッセージには、ユーザーに関連する可能性のある免責事項またはヘルプ情報が含まれている場合があります。)
NNTP.set_debuglevel(level)
インスタンスのデバッグレベルを設定します。 これは、出力されるデバッグ出力の量を制御します。 デフォルトの0は、デバッグ出力を生成しません。 1の値は、適度な量のデバッグ出力を生成します。通常、要求または応答ごとに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()[と同じ意味です。 X131X]。 ペア(response, articles)を返します。ここで、 articles はメッセージIDのリストです。 file パラメーターが指定されている場合、NEWNEWSコマンドの出力はファイルに保存されます。 file が文字列の場合、メソッドはその名前のファイルオブジェクトを開き、書き込みを行ってから閉じます。 file がファイルオブジェクトの場合、コマンド出力の行を格納するためにwrite()の呼び出しを開始します。 file が指定されている場合、返される list は空のリストです。
NNTP.list([file])
LISTコマンドを送信します。 ペア(response, list)を返します。ここで、 list はタプルのリストです。 各タプルの形式は(group, last, first, flag)です。ここで、 group はグループ名、 last および first は最後と最初の記事番号(文字列として)です。 )、フラグは、投稿が許可されている場合は'y'、許可されていない場合は'n'、ニュースグループがモデレートされている場合は'm'です。 (順序に注意してください: lastfirst 。) file パラメーターが指定されている場合、LISTコマンドの出力はに格納されます。ファイル。 file が文字列の場合、メソッドはその名前のファイルオブジェクトを開き、書き込みを行ってから閉じます。 file がファイルオブジェクトの場合、コマンド出力の行を格納するためにwrite()の呼び出しを開始します。 file が指定されている場合、返される list は空のリストです。
NNTP.descriptions(grouppattern)

LIST NEWSGROUPSコマンドを送信します。ここで、 grouppattern は、RFC2980で指定されているワイルドマット文字列です(基本的に、DOSまたはUNIXシェルのワイルドカード文字列と同じです)。 ペア(response, list)を返します。ここで、 list は、(name, title)を含むタプルのリストです。

バージョン2.4の新機能。

NNTP.description(group)

単一のグループグループの説明を取得します。 複数のグループが一致する場合(「group」が実際のワイルドマット文字列の場合)、最初の一致を返します。 一致するグループがない場合は、空の文字列を返します。

これにより、サーバーからの応答コードが削除されます。 応答コードが必要な場合は、 description()を使用してください。

バージョン2.4の新機能。

NNTP.group(name)
GROUPコマンドを送信します。ここで、 name はグループ名です。 タプル(response, count, first, last, name)を返します。ここで、 count はグループ内の(推定)記事数、 first はグループ内の最初の記事番号、 last [ X163X]はグループの最後の記事番号であり、 name はグループ名です。 数値は文字列として返されます。
NNTP.help([file])
HELPコマンドを送信します。 ペア(response, list)を返します。ここで、 list はヘルプ文字列のリストです。 file パラメーターが指定されている場合、HELPコマンドの出力はファイルに保存されます。 file が文字列の場合、メソッドはその名前のファイルオブジェクトを開き、書き込みを行ってから閉じます。 file がファイルオブジェクトの場合、コマンド出力の行を格納するためにwrite()の呼び出しを開始します。 file が指定されている場合、返される list は空のリストです。
NNTP.stat(id)
STATコマンドを送信します。ここで、 id はメッセージID('<'および'>'で囲まれています)または記事番号(文字列として)です。 トリプル(response, number, id)を返します。ここで、 number は記事番号(文字列として)、 id はメッセージID('<'と[X146Xで囲まれています) ] )。
NNTP.next()
NEXTコマンドを送信します。 stat()と同様に戻ります。
NNTP.last()
LASTコマンドを送信します。 stat()と同様に戻ります。
NNTP.head(id)
HEADコマンドを送信します。ここで、 idstat()と同じ意味です。 タプル(response, number, id, list)を返します。最初の3つは stat()の場合と同じであり、 list は記事のヘッダーのリスト(解釈されていない行のリスト、改行なし)。
NNTP.body(id[, file])
BODYコマンドを送信します。ここで、 idstat()と同じ意味です。 file パラメーターが指定されている場合、本文はファイルに保管されます。 file が文字列の場合、メソッドはその名前のファイルオブジェクトを開き、書き込みを行ってから閉じます。 file がファイルオブジェクトの場合、本文の行を格納するためにwrite()の呼び出しを開始します。 head()と同様に戻ります。 file が指定されている場合、返される list は空のリストです。
NNTP.article(id)
ARTICLEコマンドを送信します。ここで、 idstat()と同じ意味です。 head()と同様に戻ります。
NNTP.slave()
SLAVEコマンドを送信します。 サーバーの応答を返します。
NNTP.xhdr(header, string[, file])
XHDRコマンドを送信します。 このコマンドはRFCで定義されていませんが、一般的な拡張機能です。 header 引数は、ヘッダーキーワードです。例: 'subject'string 引数は、'first-last'の形式である必要があります。ここで、 first および last は、検索する最初と最後の記事番号です。 ペア(response, list)を返します。ここで、 list はペア(id, text)のリストです。ここで、 id は記事番号(文字列として)であり、[X134X ] text は、その記事に対して要求されたヘッダーのテキストです。 file パラメーターが指定されている場合、XHDRコマンドの出力はファイルに保存されます。 file が文字列の場合、メソッドはその名前のファイルオブジェクトを開き、書き込みを行ってから閉じます。 file がファイルオブジェクトの場合、コマンド出力の行を格納するためにwrite()の呼び出しを開始します。 file が指定されている場合、返される list は空のリストです。
NNTP.post(file)
POSTコマンドを使用して記事を投稿します。 file 引数は、 readline()メソッドを使用してEOFまで読み取られるオープンファイルオブジェクトです。 必要なヘッダーを含む、整形式のニュース記事である必要があります。 post()メソッドは、.で始まる行を自動的にエスケープします。
NNTP.ihave(id, file)
IHAVEコマンドを送信します。 id はメッセージIDです('<'および'>'で囲まれています)。 応答がエラーでない場合は、 filepost()メソッドとまったく同じように扱います。
NNTP.date()
newsnews()および newgroups()メソッドに適した形式で現在の日付と時刻を含むトリプル(response, date, time)を返します。 これはオプションのNNTP拡張機能であり、すべてのサーバーでサポートされているとは限りません。
NNTP.xgtitle(name[, file])

XGTITLEコマンドを処理し、ペア(response, list)を返します。ここで、 list は、(name, title)を含むタプルのリストです。 file パラメーターが指定されている場合、XGTITLEコマンドの出力はファイルに保存されます。 file が文字列の場合、メソッドはその名前のファイルオブジェクトを開き、書き込みを行ってから閉じます。 file がファイルオブジェクトの場合、コマンド出力の行を格納するためにwrite()の呼び出しを開始します。 file が指定されている場合、返される list は空のリストです。 これはオプションのNNTP拡張機能であり、すべてのサーバーでサポートされているとは限りません。

RFC2980には、「この拡張機能は非推奨にすることをお勧めします」と記載されています。 代わりに、 description()または description()を使用してください。

NNTP.xover(start, end[, file])
ペア(resp, list)を返します。 list は、 start および end の記事番号で区切られた範囲内の記事ごとに1つずつのタプルのリストです。 各タプルの形式は(article number, subject, poster, date, id, references, size, lines)です。 file パラメーターが指定されている場合、XOVERコマンドの出力はファイルに保存されます。 file が文字列の場合、メソッドはその名前のファイルオブジェクトを開き、書き込みを行ってから閉じます。 file がファイルオブジェクトの場合、コマンド出力の行を格納するためにwrite()の呼び出しを開始します。 file が指定されている場合、返される list は空のリストです。 これはオプションのNNTP拡張機能であり、すべてのサーバーでサポートされているとは限りません。
NNTP.xpath(id)
ペア(resp, path)を返します。ここで、 path は、メッセージID id の記事へのディレクトリパスです。 これはオプションのNNTP拡張機能であり、すべてのサーバーでサポートされているとは限りません。
NNTP.quit()
QUITコマンドを送信して、接続を閉じます。 このメソッドが呼び出されると、NNTPオブジェクトの他のメソッドは呼び出されません。