こんにちは~、帝京平成大学の皆さん!Fooomily Mart です!!
昨日やったこと
どれくらい緑で停滞してるのかと思って確認してみたらほぼ半年…しんどい…これはきつい…
— スパークリング黒ココア (@bk_cocoa) May 16, 2022
これを見て
2ヶ月水色
— 緑コーダー(上ブレ水色太郎) (@niboshi_wakai) May 16, 2022
1ヶ月緑
2ヶ月水色
3週間緑
1週間水色
2週間緑色
6ヶ月水色
4ヶ月緑
1週間水色
2週間緑
1ヶ月水色
2週間緑
1週間水色
1週間緑
2週間水色
1日緑
1ヶ月水色
1週間緑
1日水色
いま緑
です。
こうなって
水色じゃない期間のほうが長そう pic.twitter.com/DxyylKbOK1
— 緑コーダー(上ブレ水色太郎) (@niboshi_wakai) May 16, 2022
こう。
で、
自身の各色の期間
— 緑コーダー(上ブレ水色太郎) (@niboshi_wakai) May 16, 2022
色の変遷を表示するWeb
これをしたくなって、コードを書いた 。
結果
nibosea 灰で過ごした期間: 195 days, 1:00:00 茶で過ごした期間: 126 days, 23:00:00 緑で過ごした期間: 147 days, 0:00:00 水で過ごした期間: 90 days, 1:00:00 緑で過ごした期間: 35 days, 23:00:00 水で過ごした期間: 69 days, 1:00:00 緑で過ごした期間: 20 days, 23:00:00 水で過ごした期間: 7 days, 1:00:00 緑で過ごした期間: 8 days, 0:00:00 水で過ごした期間: 167 days, 23:00:00 緑で過ごした期間: 117 days, 0:00:00 水で過ごした期間: 8 days, 0:00:00 緑で過ごした期間: 14 days, 0:00:00 水で過ごした期間: 50 days, 1:00:00 緑で過ごした期間: 6 days, 23:00:00 水で過ごした期間: 7 days, 1:00:00 緑で過ごした期間: 5 days, 23:00:00 水で過ごした期間: 14 days, 1:00:00 緑で過ごした期間: 23:00:00 水で過ごした期間: 48 days, 2:00:00 緑で過ごした期間: 6 days, 22:00:00 水で過ごした期間: 1 day, 1:00:00 緑で過ごした期間: 1 day, 15:19:08.177570 灰: 195 days, 1:00:00 茶: 126 days, 23:00:00 緑: 365 days, 8:19:08.177570 水: 462 days, 8:00:00 青: 0:00:00 黄: 0:00:00 橙: 0:00:00 赤: 0:00:00
使いたい人へ
Paiza.ioのリンクシェアします。使ってください。 Online PHP/Java/C++... editor and compiler | paiza.IO
入力に自身のAtCoder usernameを入れれば動作します。
バグってたら勝手に直してください
開発日誌
ようわからん。
nibosea's Competition History - AtCoder このページから日付と新Ratingのところ引っ張ってきたらいいんだろう? HTMLとったりをPythonでやろうとする。
Ryuki「jsonあるよ」
よくわからんが、HTMLとかしなくても楽になるらしい
https://atcoder.jp/users/nibosea/history/json
あった。 jsonは辞書の配列形式になっているらしい。 data[1]["NewRating"]みたいに書くと(0-indexed)1回目のコンテスト後のレートが得られる。
で、出きたコードが Online PHP/Java/C++... editor and compiler | paiza.IO
import requests, json import re from datetime import datetime as dt from datetime import timedelta def get_color(x): if x == 0: return 0 x = min(2800,x) x = x + 1 return (x+399) // 400 username = input() #対象のurl target_url = "https://atcoder.jp/users/" target_url += username target_url += "/history/json" #サイト管理者に分かるように自身の連絡先などをUser-Agentに記載する headers = { 'User-Agent': "nibosea" } #対象ページのhtml html = requests.get(target_url, headers=headers).text url = requests.get(target_url) text = url.text data = json.loads(text) color = list("黒灰茶緑水青黄橙赤") color_mae = 0; zero = timedelta(0) color_day = [zero] * 9 date = dt.strptime(data[0]["EndTime"][0:13], '%Y-%m-%dT%H') date_sum = timedelta(0) print(username) for row in data: now_date = dt.strptime(row["EndTime"][0:13], '%Y-%m-%dT%H') #前回のコンテスト終了からの日数を算出する date_delta = now_date - date date = now_date ind = get_color(row["NewRating"]) color_day[color_mae] = color_day[color_mae] + date_delta #色変したら、〜色で過ごした期間を出力する date_sum += date_delta if ind != color_mae: if color_mae == 0: color_mae = ind continue print(color[color_mae]+"で過ごした期間: ") print(date_sum) date_sum = timedelta(0) color_mae = ind # 今の日付も考える now_date = dt.now() #前回のコンテスト終了からの日数を算出する date_delta = now_date - date color_day[color_mae] = color_day[color_mae] + date_delta date_sum += date_delta print(color[color_mae]+"で過ごした期間: ") print(date_sum) date_sum = timedelta(0) color_mae = ind for i, _ in enumerate(color_day): if i == 0: continue print(color[i] +":") print(_)
本当は AtCoder Rating Simulator みたいな感じで公開したかったのですが…
このコードを書いている途中
Ryukiら「Pythonで書いたら公開できなくない?JavaScriptとかなら…云々」
にぼし「草、まぁ、ブログで『Pythonで書いたのでWebアプリにできませんでした(終わり)』って書けば実質公開できたことになるっしょ。」
って感じで、まあ実質公開ということでokにしました。
誰かへ
これをWebページにしてくれ(投げやり)
遺書
pythonはWebアプリに向かないらしい?知らんけど
適当にコード書いてもそれを全人類が使えるようにするのは難しい