日本将棋連盟の詰将棋URLをランダムで表示する
日本将棋連盟にはプロ棋士が考案した詰将棋が数多くあり、新作もほぼまいにち公開されています。それをTwitterなどに流して解いてもらうようです。それを見ていて私としては、ランダムに出題するページがあったらいいのになあと思ったので作りました。ランダムにURLを表示するだけですが・・・。
どなたか、変数や関数の名付け方とそれに必要な英語をわたしに教えてくだせぇ! と思ったらあるんですねぇ。
プログラミングでよく使う英単語のまとめ【随時更新】 - Qiita
from time import sleep from pathlib import Path from bs4 import BeautifulSoup import re import os import sys import json import random import requests SAVE_DIRECTORY = Path(os.environ['HOME']) / '.cache' FILENAME_JSON = SAVE_DIRECTORY / 'tumeshogi_links.json' if FILENAME_JSON.exists(): DOWNLOAD_ALLOW = False else: DOWNLOAD_ALLOW = True # ダウンロード間隔 INTERVAL_SEC = 5 # 出題 QUESTIONS = [] # 出題数 NUM_OF_QUESTIONS = 3 QUESTION_SET = ['3', '5', '7'] tumeshogi_links = {"3": [], "5": [], "7": [], "9": [], "other": []} def pageDownload(url): r = requests.get(url) if r.status_code == 200: r.encoding = r.apparent_encoding soup = BeautifulSoup(r.text, 'lxml') return soup else: return None def create_Tumeshogipage_Links(url): soup = pageDownload(url) links = [x['href'] for x in soup.select('.section04 li a')] authors = [x.text for x in soup.select('.section04 li p')] rows = [row for row in zip(authors, links)] return rows def create_Category_numpage_Links(url): soup = pageDownload(url) ret = [x['href'] for x in soup.select('.pagingElements01 ul li a')] return ret[0:-1] def sorting(arg): global tumeshogi_links if re.search(r'[3](?=手詰)', arg[0]): tumeshogi_links['3'].append(arg) elif re.search(r'[5](?=手詰)', arg[0]): tumeshogi_links['5'].append(arg) elif re.search(r'[7](?=手詰)', arg[0]): tumeshogi_links['7'].append(arg) elif re.search(r'[9](?=手詰)', arg[0]): tumeshogi_links['9'].append(arg) else: tumeshogi_links['other'].append(arg) def save_tumeshogi_links(arg): with open(FILENAME_JSON, 'w') as f: json.dump(arg, f, indent=2, ensure_ascii=False) def load_tumeshogi_links(): with open(FILENAME_JSON, 'r') as f: data = json.load(f) return data def main(): categorys = ['short', 'middle', 'long', 'everyday'] tpl_url = 'https://www.shogi.or.jp/tsume_shogi/{}' for category in categorys: url = tpl_url.format(category) cate_numpage_links = create_Category_numpage_Links(url) sleep(INTERVAL_SEC) for cnl in cate_numpage_links: ret = create_Tumeshogipage_Links(cnl) [sorting(link) for link in ret] sleep(INTERVAL_SEC) save_tumeshogi_links(tumeshogi_links) def question(): if not tumeshogi_links: tumeshogi_links = load_tumeshogi_links() def add_questions(arg): if arg in tumeshogi_links.keys(): QUESTIONS.extend(tumeshogi_links[arg]) ARGS = sys.argv[1:] if ARGS: for arg in ARGS: add_questions(arg) else: for arg in QUESTION_SET: add_questions(arg) questions = random.sample(QUESTIONS, NUM_OF_QUESTIONS) for que in questions: print("\n".join(que)) if __name__ == '__main__': if DOWNLOAD_ALLOW: main() question()
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
- 作者: Al Sweigart,相川愛三
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/06/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る
できる 仕事がはかどるPython自動処理 全部入り。 (「できる全部入り。」シリーズ)
- 作者: 森本哲也,中野正輝,池徹,岡田幸大
- 出版社/メーカー: インプレス
- 発売日: 2019/05/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る