ブログランキングではサイトのRSSから最新記事を引っ張ってきますが、
全然取得されなかったので頑張って取得できるようにした時の話です。
当サイトはDjangoで完全自前実装してるので(ブログ系のアプリすらインストールしてない)
もちろんRSSも自前で用意してます。(feeds.py)
まず、RSSフィードを配信する仕組みを作ります。
DjangoにはFeed配信機能が組み込まれていますので、それを利用することにします。
from .models import Article # 記事データ保持用モデル
from django.contrib.syndication.views import Feed # フィード配信用クラス
from django.conf import settings
# 記事一覧のRSSフィード
class ArticlesFeed(Feed):
title = '4to.pics Articles'
description_template = None
# 記事リスト。直近5件だけ抽出
def items(self):
return Article.objects.filter(is_publish=1).order_by('-updated_at')[:5]
# 記事概要。テーブルの設計が悪かったので取り急ぎ「ーーーー」をセパレータとして使いました。
# 「続きを読む」的なアレデス。記事テーブルに`description` カラムを用意してあげたほうがシンプルです。
def item_description(self, item):
return item.content.split('ーーーー')[0]
# setting.pyに定義したサイトのBASE_URL(http://4to.pics/)を返す
def link(self):
return settings.BASE_URL
...
from .feeds import ArticlesFeed
...
urlpatterns = [
...
url(r'^article/rss/$', ArticlesFeed(), name='articleFeed'),
...
]
$ curl -s http://4to.pics/article/rss/
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>4to.pics Articles</title><link>http://4to.pics/</link><description></description><atom:link href="http://4to.pics/article/rss/" rel="self"></atom:link><language>ja</language><lastBuildDate>Wed, 08 Feb 2017 20:45:08 +0900</lastBuildDate><item><title>フロントエンドエンジニアと名乗っていいものか…</title><
link>http://4to.pics/article/post/29</link><description>今回はただの日記です。
3年くらい前は自信を持って「Web系のフロントエンドエンジニアです!」って名乗れたものだけど
(さらに前はバックエンド)、
最近はもう名乗るのもおこがましい、完全なるバックエンドエンジニアになっています。@趣味だけど
もちろん、仕事でもフロントエンドはやっていますが、あくまでネイティブアプリのフロントなので
Webではなかったりします。
...
...
例によってJade記法でごめんなさい…
link(rel='alternate', type='application/rss+xml', href='/article/rss/', title='RSS2.0')
続編すぐにUPします。m(_ _)m
続編書きました。
ブログランキングで最新記事を取得できるようにした時の話(1)
↑こちらもよろしくお願いします!
mac に pip をインストールする
mac は標準で python が入っていますが、パッケージ管理の pip がインストールされていないので入れてみました。
2017/05/26 09:00
[GAS] Google Drive の特定フォルダ配下のフォルダ・ファイルの権限を一括で移譲する
Google Drive の特定フォルダ配下のファイル・フォルダの権限を一括で移譲するツールを Google Apps Script で作りました。
2018/11/10 15:54
[Windows] Ophcrack を使ってユーザーパスワードを解析する方法
家族で使っていた Windows7 のログインパスワードを忘れたため、Ophcrack を使って解析したときの記録です。
2017/09/30 21:00
[shell] フォルダ内にある大量の ZIP ファイルをまとめて解凍する
とある ZIP を解凍すると中に大量の ZIP が居たときに幸せになれるコマンドを紹介します
2018/06/19 23:45
[MySQL] データファイルから DB を復元する
先日 MySQL が再起動できなくなる問題が発生し、急遽データファイル(.frm, .ibd)から復元しました
2018/11/25 12:44