2011-02-08 2 views
0

私はPythonで少し実験をしています。私は、新しいアイテムのRSSフィードをチェックし、メールでアイテムのタイトルとリンクを送信するスクリプトを作っています。私はあるレベルまで動かすためのスクリプトを持っています:それが実行されると、それは既にそのファイルを電子メールしたかどうかにかかわらず、最新のアイテムのリンク+タイトルを取得してメールします。私は2つのものを追加する必要があります:一度に複数のアイテムを取得する方法(そしてそれらを1つずつメールで送信する方法)と、既に送信されているかどうかを確認する方法。どうすればいい?その後、メールのタイトルとrss-feedのリンクとメールを

d = feedparser.parse('http://feedparser.org/docs/examples/rss20.xml') 
link = d.entries[0].link 
title = d.entries[0].title 

そして、そこには「リンク」と「タイトル」とメールを送っラインのカップル:私はこれは私がこれまで持っているもので、feedparserを使用しています。私はEtagを使う必要があると知っていますが、どうやって解決することができませんでした。メールを1通送る方法は?

答えて

0

フィード解析部分については、How to detect changed and new items in an RSS feed?に関するこの質問に記載されているアドバイスに従うことができます。基本的には、各エントリの内容をハッシュし、それをIDとして使用することができます。

たとえば、プログラムの最初の実行では、各エントリのハッシュを計算し、そのハッシュを格納し、これらの新しいエントリをメールで送信します。次に実行されると、各エントリのコンテンツを再ハッシュし、それらのハッシュを以前に見つかったものと比較します(これには何らかのデータベースを使用する必要があります。 。以前の実行時に生成されなかったハッシュがプログラムで見つかった場合は、新しい電子メールを組み立てて「新しい」エントリとともに送信します。

あなたの電子メールの組み立て部分に関しては、Sending HTML email in Pythonという質問が役に立ちます。テキストのみとhtml版を送信してください。

+0

ETagは本質的にハッシュ自体ではありませんか?だから私がそれを保存すれば、私は他のものをハッシュするのと同じ結果を得ますか?そして電子メールを送ることは問題ではない、私はそれを分類した。私のやり方が分からないのは、電子メールを1で送信することです。今は、RSSフィードの最新のアイテムを使用して、一度に1つの電子メールを送信することしかできません。 – HankSmackHood

+0

あなたは一度に1つの電子メールだけを最新のアイテムで送信でき、メールを1つずつ送信したいと言っています。あなたは、その1つ以上の新しいアイテムがある場合は、それらがどれであるかを知ることができないということを意味しますか? –

+0

私が間違っていない限り、エタグはフィード全体を表します。つまり、2つのetagを比較すると、フィードが変更されたことがわかりますが、新しいフィードはわかりません。あなたはetagsを使ってフィードが変更されたかどうかを知ることができます。見つかったら、新しいエントリのエントリをチェックします(各エントリの内容についてのハッシング技法を使用します)。そしてあなたのメールを送るための新しいエントリーごとに。 –

0

最も簡単な方法については、Python smtplib documentation exampleを参照してください。 (私はここでコードを繰り返すつもりはありません)。基本的な電子メール送信にはすべて必要です。

もちろん、もっと複雑な電子メールコンテンツについては、Pythonのemail moduleも参照してください。

+0

ええ、私はすでにメールを一緒にしています。私はまだ仕事ができない部分だけです。 – HankSmackHood