Qiita 마이페이지에서 LGTM/View/Stock 수의 일람을 확인할 수 있도록 해 보았다
만든 것
아래와 같이, Qiita API 로부터 특정의 기사에 대해서[LGTM/View/스톡수]의 취득·갱신을 실시할 수 있도록(듯이) 했습니다.
픽아크 기사를 사용하면 내 페이지에서 바로 확인할 수 있습니다.
아직 수동으로 실행하고 있을 뿐입니다만, 향후 거기도 자동화하면 언제라도 최신의 정보가 Qiita상에서 바로 확인할 수 있어 좋은 느낌입니다.
내 페이지 상단 화면
기사 내용 ( 여기에서 직접 실제 기사로 날 수 있습니다. )
환경
Google Colaboratory에서 실행 중입니다.
Qiita API의 액세스 토큰(필수)은 [read_qiita], [write_qiita]를 선택하여 발행합니다.
※Google Colaboratory나 Qiita API의 사용법, 액세스 토큰의 발행 방법은 생략합니다.
또, 이번 갱신 대상으로 하는 기사는 사전에 신규 투고 완료로 합니다.
그 기사의 기사 ID도 별도 Qiita API로부터 취득하고 있는 것으로 합니다.
소스 코드
소스 코드
Qiita에서 기사 정보 가져 오기/업데이트 .ipynb
import http.client
import json
import requests
TOKEN = {発行したアクセストークン} # Read&Write用
HEADERS = {'content-type': 'application/json',
'Authorization': 'Bearer ' + TOKEN}
URL_BASE = 'https://qiita.com/api/v2'
ARTICLE_ID = {更新対象となる記事のID} # こちらも事前にQiita APIで取得して確認しておいてください
# 記事一覧のLGTM, View, ストック数を取得する
def get_info():
url_authenticate = URL_BASE + '/authenticated_user/items'
# 記事一覧を取得
res = requests.get(url_authenticate, headers=HEADERS)
list = res.json()
# 不要な記事を除外
list_item = []
for item in list:
# 限定記事は対象外
if item['private']:
continue
# 投稿先の記事は対象外
if item['id'] == ARTICLE_ID:
continue
list_item.append(item)
num = 0
list_iteminfo = [[0 for i in range(5)] for j in range(len(list_item))]
for item in list_item:
# 各種項目を取得
id = item['id']
title = item['title']
url = item['url']
likes_count = item['likes_count']
# 記事の情報を取得
url_item = URL_BASE + '/items/' + id
res = requests.get(url_item, headers=HEADERS)
json = res.json()
# 記事別のview数のセット
page_views_count = json['page_views_count']
i = 1
# ストック数の取得(最大1000件)
while i < 10:
url_stock = url_item + '/stockers?page=' + str(i) + '&per_page=100'
res_stock = requests.get(url_stock, headers=HEADERS)
json_stock = res_stock.json()
stock_num = len(json_stock)
if stock_num != 100:
stock_count = (i * 100) - 100 + stock_num
break
else:
i += 1
list_iteminfo[num] = [title, url, likes_count, page_views_count, stock_num]
num += 1
return list_iteminfo
# 記事を更新する
def update_article(list_iteminfo):
item = {
'body': '',
'coediting': False,
'private': False,
'tags': [{'name': 'qiita'}],
'title': '投稿記事のLGTM, View, ストック数一覧'
}
# 本文の作成([記事タイトル](URL), LGTM数, View数, ストック数)
now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
setdate = now.strftime('%Y/%m/%d %H:%M:%S')
body = 'この記事は [' + setdate + '] に更新されました。\r\n'
for info in list_iteminfo:
body += '\r\n[' + str(info[0]) + '](' + str(info[1]) + ')'
body += '\r\nLGTM:' + str(info[2]) + '件, View:' + str(info[3]) + '件, ストック:' + str(info[4]) + '件\r\n'
item["body"] += body
url = URL_BASE + '/items/' + ARTICLE_ID
# 記事の更新
res = requests.patch(url, headers=HEADERS, json=item)
return res
if __name__ == "__main__":
list_iteminfo = get_info()
res = update_article(list_iteminfo)
print(res)
(2020/11/22 21:27 추가)
자동 실행의 건은 결국 heroku에 py 파일을 넣어 [heroku scheduler] 되는 것으로 정기 실행시키는 것을 결정했습니다.
UTC에서 매일 PM10:00, 즉 일본 시간으로 약 AM7:00에 자동으로 실행됩니다.
참고
Qiita API 공식
【Qiita API】여러가지 방법으로 Views, Likes, Stocks 취득(JavaScript, Google Script, Python, Vue.js)
Heroku에서 날씨 파이썬 정기 실행
Reference
이 문제에 관하여(Qiita 마이페이지에서 LGTM/View/Stock 수의 일람을 확인할 수 있도록 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koob/items/20881aa910eaa2cad3a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Google Colaboratory에서 실행 중입니다.
Qiita API의 액세스 토큰(필수)은 [read_qiita], [write_qiita]를 선택하여 발행합니다.
※Google Colaboratory나 Qiita API의 사용법, 액세스 토큰의 발행 방법은 생략합니다.
또, 이번 갱신 대상으로 하는 기사는 사전에 신규 투고 완료로 합니다.
그 기사의 기사 ID도 별도 Qiita API로부터 취득하고 있는 것으로 합니다.
소스 코드
소스 코드
Qiita에서 기사 정보 가져 오기/업데이트 .ipynb
import http.client
import json
import requests
TOKEN = {発行したアクセストークン} # Read&Write用
HEADERS = {'content-type': 'application/json',
'Authorization': 'Bearer ' + TOKEN}
URL_BASE = 'https://qiita.com/api/v2'
ARTICLE_ID = {更新対象となる記事のID} # こちらも事前にQiita APIで取得して確認しておいてください
# 記事一覧のLGTM, View, ストック数を取得する
def get_info():
url_authenticate = URL_BASE + '/authenticated_user/items'
# 記事一覧を取得
res = requests.get(url_authenticate, headers=HEADERS)
list = res.json()
# 不要な記事を除外
list_item = []
for item in list:
# 限定記事は対象外
if item['private']:
continue
# 投稿先の記事は対象外
if item['id'] == ARTICLE_ID:
continue
list_item.append(item)
num = 0
list_iteminfo = [[0 for i in range(5)] for j in range(len(list_item))]
for item in list_item:
# 各種項目を取得
id = item['id']
title = item['title']
url = item['url']
likes_count = item['likes_count']
# 記事の情報を取得
url_item = URL_BASE + '/items/' + id
res = requests.get(url_item, headers=HEADERS)
json = res.json()
# 記事別のview数のセット
page_views_count = json['page_views_count']
i = 1
# ストック数の取得(最大1000件)
while i < 10:
url_stock = url_item + '/stockers?page=' + str(i) + '&per_page=100'
res_stock = requests.get(url_stock, headers=HEADERS)
json_stock = res_stock.json()
stock_num = len(json_stock)
if stock_num != 100:
stock_count = (i * 100) - 100 + stock_num
break
else:
i += 1
list_iteminfo[num] = [title, url, likes_count, page_views_count, stock_num]
num += 1
return list_iteminfo
# 記事を更新する
def update_article(list_iteminfo):
item = {
'body': '',
'coediting': False,
'private': False,
'tags': [{'name': 'qiita'}],
'title': '投稿記事のLGTM, View, ストック数一覧'
}
# 本文の作成([記事タイトル](URL), LGTM数, View数, ストック数)
now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
setdate = now.strftime('%Y/%m/%d %H:%M:%S')
body = 'この記事は [' + setdate + '] に更新されました。\r\n'
for info in list_iteminfo:
body += '\r\n[' + str(info[0]) + '](' + str(info[1]) + ')'
body += '\r\nLGTM:' + str(info[2]) + '件, View:' + str(info[3]) + '件, ストック:' + str(info[4]) + '件\r\n'
item["body"] += body
url = URL_BASE + '/items/' + ARTICLE_ID
# 記事の更新
res = requests.patch(url, headers=HEADERS, json=item)
return res
if __name__ == "__main__":
list_iteminfo = get_info()
res = update_article(list_iteminfo)
print(res)
(2020/11/22 21:27 추가)
자동 실행의 건은 결국 heroku에 py 파일을 넣어 [heroku scheduler] 되는 것으로 정기 실행시키는 것을 결정했습니다.
UTC에서 매일 PM10:00, 즉 일본 시간으로 약 AM7:00에 자동으로 실행됩니다.
참고
Qiita API 공식
【Qiita API】여러가지 방법으로 Views, Likes, Stocks 취득(JavaScript, Google Script, Python, Vue.js)
Heroku에서 날씨 파이썬 정기 실행
Reference
이 문제에 관하여(Qiita 마이페이지에서 LGTM/View/Stock 수의 일람을 확인할 수 있도록 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koob/items/20881aa910eaa2cad3a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import http.client
import json
import requests
TOKEN = {発行したアクセストークン} # Read&Write用
HEADERS = {'content-type': 'application/json',
'Authorization': 'Bearer ' + TOKEN}
URL_BASE = 'https://qiita.com/api/v2'
ARTICLE_ID = {更新対象となる記事のID} # こちらも事前にQiita APIで取得して確認しておいてください
# 記事一覧のLGTM, View, ストック数を取得する
def get_info():
url_authenticate = URL_BASE + '/authenticated_user/items'
# 記事一覧を取得
res = requests.get(url_authenticate, headers=HEADERS)
list = res.json()
# 不要な記事を除外
list_item = []
for item in list:
# 限定記事は対象外
if item['private']:
continue
# 投稿先の記事は対象外
if item['id'] == ARTICLE_ID:
continue
list_item.append(item)
num = 0
list_iteminfo = [[0 for i in range(5)] for j in range(len(list_item))]
for item in list_item:
# 各種項目を取得
id = item['id']
title = item['title']
url = item['url']
likes_count = item['likes_count']
# 記事の情報を取得
url_item = URL_BASE + '/items/' + id
res = requests.get(url_item, headers=HEADERS)
json = res.json()
# 記事別のview数のセット
page_views_count = json['page_views_count']
i = 1
# ストック数の取得(最大1000件)
while i < 10:
url_stock = url_item + '/stockers?page=' + str(i) + '&per_page=100'
res_stock = requests.get(url_stock, headers=HEADERS)
json_stock = res_stock.json()
stock_num = len(json_stock)
if stock_num != 100:
stock_count = (i * 100) - 100 + stock_num
break
else:
i += 1
list_iteminfo[num] = [title, url, likes_count, page_views_count, stock_num]
num += 1
return list_iteminfo
# 記事を更新する
def update_article(list_iteminfo):
item = {
'body': '',
'coediting': False,
'private': False,
'tags': [{'name': 'qiita'}],
'title': '投稿記事のLGTM, View, ストック数一覧'
}
# 本文の作成([記事タイトル](URL), LGTM数, View数, ストック数)
now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
setdate = now.strftime('%Y/%m/%d %H:%M:%S')
body = 'この記事は [' + setdate + '] に更新されました。\r\n'
for info in list_iteminfo:
body += '\r\n[' + str(info[0]) + '](' + str(info[1]) + ')'
body += '\r\nLGTM:' + str(info[2]) + '件, View:' + str(info[3]) + '件, ストック:' + str(info[4]) + '件\r\n'
item["body"] += body
url = URL_BASE + '/items/' + ARTICLE_ID
# 記事の更新
res = requests.patch(url, headers=HEADERS, json=item)
return res
if __name__ == "__main__":
list_iteminfo = get_info()
res = update_article(list_iteminfo)
print(res)
자동 실행의 건은 결국 heroku에 py 파일을 넣어 [heroku scheduler] 되는 것으로 정기 실행시키는 것을 결정했습니다.
UTC에서 매일 PM10:00, 즉 일본 시간으로 약 AM7:00에 자동으로 실행됩니다.
참고
Qiita API 공식
【Qiita API】여러가지 방법으로 Views, Likes, Stocks 취득(JavaScript, Google Script, Python, Vue.js)
Heroku에서 날씨 파이썬 정기 실행
Reference
이 문제에 관하여(Qiita 마이페이지에서 LGTM/View/Stock 수의 일람을 확인할 수 있도록 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koob/items/20881aa910eaa2cad3a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Qiita 마이페이지에서 LGTM/View/Stock 수의 일람을 확인할 수 있도록 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koob/items/20881aa910eaa2cad3a9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)