指定したAtCoderコンテストの解説リンクを取得する
まとめ
指定したAtCoderコンテストの解説リンクを出力する方法を調べた
あらまし
指定したAtCoderコンテストの解説リンクを取得したい
Rustに慣れるため、Rustでプログラムを作成する
方針
解説ページ(e.g. ) のHTMLを解析し、解説リンクを取得する HTTPリクエスト
日本語環境でないと、Youtubeの解説URLがHTMLのノードとして追加されないことに注意する
code:rust
let client = reqwest::ClientBuilder::new().gzip(true).build().unwrap();
let doc = client
.header("Accept-Language", "ja")
.send()
.await?
.text()
.await?;
HTMLの解析
ここでは、仮の実装として全体の解説だけを取得してみる
PDFとYoutubeの片方しか解説が存在しないこともある(e.g. ) code:rust
let pat = Pattern::new(
r#"
<h3>コンテスト全体の解説</h3>
<ul>
<li><a href="{{url}}">公式解説</a></li>
</ul>
"#,
)?;
let result = pat.matches(&doc);
for r in result {
}
コマンドライン引数
ac-editorial <contest_id>
code:rust
let matches = App::new("ac-editorial")
.arg(
Arg::new("contest_id")
.value_name("contest_id")
.required(true),
)
.get_matches();
let contest_id = matches.value_of("contest_id").unwrap();
ソースコード全文