問題の一覧をProblemsのAPIから取得できるようにしましょう
https://kenkoooo.com/atcoder/resources/problems.json
...
{
"id":"abc319_a",
"contest_id":"abc319",
"problem_index":"A",
"name":"Legendary Players",
"title":"A. Legendary Players"
},
...
RatedとなったABC42以降
@KATO-Hiro こちら、着手していて、 jsonを取得して、登録されていない問題に「インポート」ボタンをつける形にしようとしていました。
ですが、APIから取得できる量が多くて見せ方に工夫が必要そうです。 6000件超です。 記載いただいている、ABCxxx以降、という指定は、開催日データがないため(多分別のデータをJOINすればできるのかも)難しそう。
ABCxxxごとにアコーディオンにして、(それでも1/6くらいにかならない?🤣) インポートも、ABCxxxごとにまとめてインポートできるほうがよいのではと思っています。 (細かい問題を出さなくてもcontest_idから指定してインポートでもいいのかも。)
現在、問題ごとのAPIを利用しているのですが、コンテストごとのほうでしたら、APIに時間があるので可能な気がします。
コンテストごとのAPI→ https://kenkoooo.com/atcoder/resources/contests.json
問題のAPI→ https://kenkoooo.com/atcoder/resources/problems.json
画面から、コンテストを指定してインポートボタンを押すと、問題のAPIから検索をして必要なデータを流し込む感じがいいかなあと思っています。 ご意見あればいただけると嬉しいです。
@prettyhappycatty ありがとうございます!!
コンテスト単位でインポートができる方が私もいいと思います。 以下のような操作ができると管理者としては使いやすいと思いますが、実装が大変そうでしょうか? (コンテストを指定したらDBに未登録の問題をそのまま登録する方が楽であるのことは認識しているつもりです)
あるコンテストを選択→該当するコンテストのうち、DBに未登録の問題がモーダルに表示される→各問題でインポートするかどうかを判断→登録したい問題のみインポートボタン(もしくはチェックボックス)を押す or キャンセルできる
https://flowbite-svelte.com/docs/components/modal
@prettyhappycatty 多分、モーダルのUI作るまではできると思うのですが、 登録してモーダルに戻ってくるのがちょっとしんどそうかなあと思いました。
2ndリリース以降でいいのかな?と。
もし、コンテストごとのインポートで何がインポートされるか知りたい、であればすぐに対応できると思います。(あくまでもタスク単位のインポートがちょっとしんどいかなという感じ。)
また、今はページを開くたびに、API見に行ってるのですが、 DBにどこかのタイミングで落として(例えば、APIから取得みたいなボタンを押したときに、未登録タスクDBにいれて)、 登録するときにはそちらを見に行ける方が良いなあと思っています。
あ、でもそれなら、Taskに、表示非表示のフラグをつけて、それを有効化するUIを作れば良いのですかね。
ちなみに、ABC直前にContestのAPIまで行きました。(ヘッダ間違えていますが)
@prettyhappycatty ご返信いただき、ありがとうございます!
登録してモーダルに戻ってくるのがちょっとしんどそうかなあと思いました。
2ndリリース以降でいいのかな?と。
もし、コンテストごとのインポートで何がインポートされるか知りたい、であればすぐに対応できると思います。(あくまでもタスク単> 位のインポートがちょっとしんどいかなという感じ。)
各コンテストでどの問題がインポートされるかを知りたいと思っていまして、モーダルは2ndリリース以降にした方が良さそうですね。
Taskに、表示非表示のフラグをつけて、それを有効化するUIを作れば良いのですかね。
一旦、DBに保存しておくことでAPIを叩く回数を抑えられそうですね。
Taskにis_published相当の属性(デフォルトをFalse)を付与し、UIでOn / Offするようなイメージでしょうか?
Taskにis_published相当の属性(デフォルトをFalse)を付与し、UIでOn / Offするようなイメージでしょうか?
そんな感じのイメージです😊