お知らせをTwitterに自動的に送信する

最近、Djangoのプロジェクトで作業する場合、ユーザーに代わって公開された記事の見出しと短縮リンクをTwitterに自動的に送信する必要がありました。



結局のところ、これは非常に簡単に行われます。





私はすぐに、車輪を再発明せず、利用可能なライブラリの1つを使用してTwitterで作業することにしました。 トワイソン私を一番見ました。 models.pyにインポートします:



Copy Source | Copy HTML import twython.core as twython



  1. Copy Source | Copy HTML import twython.core as twython





これは、簡略化された公開モデルです。 最小限のフィールドのみを残しました:



Copy Source | Copy HTML



  1. クラス Post (models.Model):
  2. title = models.CharField(max_length = 100
  3. media = models.TextField()
  4. published = models.BooleanField(デフォルト= False)
  5. tweeted = models.BooleanField(デフォルト= False、編集可能= False)
  6. def __unicode__ (self):
  7. return u '%s'self .title
  8. @ models.permalink
  9. def get_absolute_url (self):
  10. return'news.views.news_view' 、[ strself .id)])


モデルには2つのフィールドがあります-下書きを「ツイート」しないように公開され、各投稿が1回だけアナウンスされるようにツイートされます。



次に、アナウンスを送信するプロセス:



Copy Source | Copy HTML



  1. def post_to_twitter (送信者、インスタンス、** kwargs):
  2. "" " <br/> 投稿が公開されたがまだ閉じられていない場合、Twiでお知らせを送信してい ます。
  3. instance.tweeted ではなく instance.publishedの場合:
  4. 試してください
  5. twitter = twython.setup(ユーザー名= "TWITTER_USER" 、パスワード= "TWITTER_PASSWORD"
  6. long_url = "http://%s%s" %(Site.objects.get_current()、instance.get_absolute_url())
  7. short_url = twitter.shortenURL(long_url)
  8. twi_message = instance.title + "" + short_url
  9. 試してください
  10. twitter.updateStatus(twi_message)
  11. ポストオブジェクト。 フィルター (pk = instance.pk).update(ツイート済み= True)
  12. TwythonError を除く
  13. 合格する
  14. AuthError を除く
  15. 合格する


Twitterに送信するプロセスは、post_saveイベントで停止するのが論理的です。



post_save.connect(post_to_twitter, sender=Post)









以上です。 あらゆる種類の有用性を好みに追加できますが、この形式でも非常にうまく機能します。



All Articles