この記事について
こちらの記事の更新が止まっているようなので、避難所をつくりました。※ 2019/10/18更新
実装イメージ。AWS lambda
で以下のfunction
を8時間ごとに定期実行しています。
import os
import json
import codecs
import requests
from datetime import datetime, date, timedelta
def patch_contents(contents):
item_data = {
'title': '【毎日自動更新】Qiitaのデイリーいいねランキング!ウィークリーもあるよ(避難所)',
'body': f'{contents}',
'tags': [{'name': 'Qiita'}]
}
headers = {
'Authorization': 'Bearer {SECRET_TOKEN}'}
requests.patch(
'https://qiita.com/api/v2/items/50b96ed7b7bbe8ff35e8', headers=headers, json=item_data)
def create_contents(contents):
today = datetime.strftime(datetime.today(), '%Y/%m/%d')
yesterday = datetime.strftime(
datetime.today() - timedelta(days=1), '%Y-%m-%d')
daily = json.loads(requests.get(
f'https://us-central1-qiita-trend-web-scraping.cloudfunctions.net/qiitaScraiping/daily/{yesterday}').text)
weekly = json.loads(requests.get(
f'https://us-central1-qiita-trend-web-scraping.cloudfunctions.net/qiitaScraiping/weekly/{yesterday}').text)
contents += '# この記事について'
contents += f'[こちらの記事](https://qiita.com/takeharu/items/bb154a4bc198fb102ff3)の更新が止まっているようなので、避難所をつくりました。※ {today}更新'
contents += '# デイリーいいねランキング'
for i, data in enumerate(daily['data'], 1):
contents += f'#### {i}位 [{data['title']}]({data['url']})({data['likes_count']}いいね)'
contents += 'by ' + f'[{data['user']['id']}](https://qiita.com/{data['user']['id']})'
contents += '# ウィークリーいいねランキング'
for i, data in enumerate(weekly['data'], 1):
contents += f'#### {i}位 [{data['title']}]({data['url']})({data['likes_count']}いいね)'
contents += '※ 元記事の更新が再開したら、こちらの更新は停止する予定です。'
contents += '※ バグがあればTwiiterでいただけると助かります。(コメントがたまると、このページ自体が重くなるので。。'
contents += 'Twitter: [@okadato623](https://twitter.com/okadato623)'
contents += 'データの取得元は以下のAPIを使用させていただいております :pra:'
contents += '- [Qiitaいいね数ランキングAPIの作成](https://qiita.com/zonbitamago/items/1027b532b174e5ee04b3)'
return contents
def lambda_handler(event, context):
contents = ''
contents = create_contents(contents)
patch_contents(contents)
デイリーいいねランキング
1位 OAuth 2.0 の勉強のために認可サーバーを自作する(34いいね)
2位 Twitter APIのWrite権限を凍結された2019夏(16いいね)
by kinmi
3位 Nuxt.js(SPA)+FirebaseなWebサービスで強制的に更新する(リビジョンアップ対策)(11いいね)
by kira_puka
4位 RustでAPNGのライブラリを作ってみた(11いいね)
by poccariswet
5位 メンヘラがツイートを形態素解析して気分の波を調べた結果www(7いいね)
by yusuke_astro
6位 モナドに至る道 at Nakameguro.hs #2(6いいね)
by lotz
7位 javascriptでWeb神経衰弱を作ったー。(5いいね)
by nakano1120
8位 15行のhtmlでマインスイーパーを作った(5いいね)
by nagtkk
9位 Nuxt.js(SPA)とFirebaseで強制リビジョン(バージョン)アップするならPWAモジュールを使おう(5いいね)
by hecateball
10位 LaravelのMigrationファイルをまとめる(4いいね)
by kazuhei
11位 自称IT企業があまりにITを使わずに嫌になって野に下った俺が紹介するWindowsの自動化の方法(4いいね)
by mima_ita
12位 誤差伝播ライブラリを作った&誤差伝播公式の導出(4いいね)
by kaityo256
13位 Helm環境でConfigMapの更新を検知してPodを自動デプロイする方法(3いいね)
by syogun
14位 機械学習関係の論文を読み書きするための数式・記号まとめ(3いいね)
by karaage0703
15位 PlayCanvasのエディターでVueが使える(3いいね)
by sutobu000
16位 Play with Docker で SSHした時のメモ(3いいね)
by kane-hiro
17位 セイウチ演算子って何?(3いいね)
by Nipper1357
18位 TypeScriptでVue.setを型安全にしたい(3いいね)
by simochee
19位 UserDefaultsに辞書型を入れるとき、KeyはStringでなければならないという制約がある(3いいね)
by eg_19_
20位 [Swift] 画像の色を変更する(2いいね)
by Kon_pippiana
ウィークリーいいねランキング
1位 GitHubのスターは金にならない(688いいね)
2位 Linux ファイルシステムを理解したい(522いいね)
3位 『エンジニアよ、大志を抱け』~まずスキルを磨き、ビジネスを覚え、そしてユーザー企業で活躍しよう(512いいね)
4位 新卒のトレーナーをするときの個人的まとめ(491いいね)
5位 今すぐJavaScriptデバッグ効率を上げるconsoleテクニック(460いいね)
6位 「美しい」にモヤったら「認知負荷が小さい」と言いかえよう(247いいね)
7位 10分でわかる構造化マークアップ(243いいね)
8位 Nuxt + Firebaseで読書感想文を書けるWebアプリを開発しました(243いいね)
9位 2019年注目のJavaScriptアニメーションライブラリ11選(218いいね)
10位 VS CodeのPython拡張がJupyterをネイティブサポートしたそうなので早速使ってみた。(176いいね)
11位 【Swift】中二病の突然の発作に備えて、CALayerで魔法陣を描く【CoreAnimation 】(136いいね)
12位 DockerやECR, ECS, Fargateなど、コンテナ周りのAWS知識を効率的にキャッチアップしたい人のために(136いいね)
13位 未経験者には全てが黒魔術に見える呪いがある(129いいね)
14位 我々はなぜ監視を行うのか【第一章】~監視システム導入編~(123いいね)
15位 最強の技「グーチョキパー」は本当にグーとチョキとパーの全てに近いのか(122いいね)
16位 距離センサ入門(ステレオカメラ、プロジェクション、LiDAR)(120いいね)
17位 JavaScript の"=="の挙動をハッキリさせておく(115いいね)
18位 保育園・小中学校での感染症流行状況がわかる Line Botの作成(112いいね)
19位 書籍「レガシーコードからの脱却」を読んでプロジェクトに適用すると良さそうな事(98いいね)
20位 flutter create してから5日で iPhone / Androidアプリを公開した話(91いいね)
※ 元記事の更新が再開したら、こちらの更新は停止する予定です。
※ バグがあればTwiiterでいただけると助かります。(コメントがたまると、このページ自体が重くなるので。。
Twitter: @okadato623
データの取得元は以下のAPIを使用させていただいております。