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'
です。 (順序に注意してください: last 、 first 。) 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
コマンドを送信します。ここで、 id は stat()と同じ意味です。 タプル(response, number, id, list)
を返します。最初の3つは stat()の場合と同じであり、 list は記事のヘッダーのリスト(解釈されていない行のリスト、改行なし)。
- NNTP.body(id[, file])
BODY
コマンドを送信します。ここで、 id は stat()と同じ意味です。 file パラメーターが指定されている場合、本文はファイルに保管されます。 file が文字列の場合、メソッドはその名前のファイルオブジェクトを開き、書き込みを行ってから閉じます。 file がファイルオブジェクトの場合、本文の行を格納するためにwrite()
の呼び出しを開始します。 head()と同様に戻ります。 file が指定されている場合、返される list は空のリストです。
- 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です('<'
および'>'
で囲まれています)。 応答がエラーでない場合は、 file を post()メソッドとまったく同じように扱います。
- 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オブジェクトの他のメソッドは呼び出されません。