plot.pyfrom __future__ import print_function
from __future__ import unicode_literals
import requests
import matplotlib.pyplot as plt
import matplotlib as mpl
import collections
import argparse
mpl.use("Agg")
# matplotlibで日本語を使えるようにする
plt.rcParams["font.family"] = "Cica" # お好きなFontに変えて下さい
def main(project):
pages = []
response = requests.get(
f'https://scrapbox.io/api/pages/{project}/search/titles')
followingId = response.headers.get('X-Following-Id')
pages += response.json()
while followingId == None:
response = requests.get(
f'https://scrapbox.io/api/pages/{project}/search/titles', params={'followingId': followingId})
followingId = response.headers.get('X-Following-Id')
pages += response.json()
pass
print('Finish loading all data')
# 取得結果の確認
for page in pages:
print(f'title = {page["title"]}'
f'\n\tlinks = {page["links"]}')
print('Calculating the number of back links...')
temp = []
for page in pages:
temp+=page['links']
linkNum = collections.Counter(temp);
print(linkNum)
print('finished.')
print('Plotting a histogram...')
n, bins, patches = plt.hist(linkNum.values(), bins=max(linkNum.values())-min(linkNum.values()), log=True)
[plt.text((bins[i+1]+bins[i])/2, n[i], int(n[i]), horizontalalignment='center')
for i in range(len(bins)-1)]
ax=plt.gca()
ax.set_title(project)
ax.set_xlabel('被リンク数')
ax.set_ylabel('ページ数')
plt.savefig(f'{project}.png')
print('finished.')
if __name__ == "__main__":
# Command line argumentsの設定
parser = argparse.ArgumentParser(
description="指定したscrapbox projectの被リンク数のhistogramを作成するscript")
parser.add_argument('project',help='分析したいscrapbox project name')
# argumentsを解析する
args = parser.parse_args()
project = args.project
# main loop
main(project)