日テレWebAPIについて💢
ご無沙汰です。最近は愚痴を吐く相手がおらずTwitterにおける態度と口調が悪くなっております、いいんちょです。せめてものお詫びとして、今回の記事は丁寧な口調でお届け致します。
日テレWebAPIを使ってみた。
さて、私はここのところ毎朝、日本テレビのZIP!を楽しんでおります。
毎朝「ZIPでポン!ガーデン」を観ることで、ギリギリ生命活動を維持している
— いいんちょ (@E_ntyo) March 18, 2015
ある日、ZIP!について調べていると、こんなものを見つけました。
Web API|日テレ アプリ
日テレWebAPIの出演者検索APIということで、詳しくはリンク先をご覧頂きたいのですが、要するに、
日本テレビの過去の放送番組についてのデータを、出演者,番組名,放送期間等から検索するためのWebAPI
です。面白そうだなと思い、少しAPIを触ってみました。
APIを使うにあたって、こちらの記事を参考にしました。
日テレのニュース検索APIがいろいろアレな件 - パンプキンスパイスラテ
今回はこのAPIについて感じたことについて書きます。
怒りのAPI使用感想文
- レスポンスが遅い
まず、サンプルリクエストにならって、ブラウザでAPIにリクエストしました。が、なかなか返ってこない。
そう、他の利用者さんも仰っていますが、コイツは結構遅いです。
- リクエストとレスポンスで文字コードが違う
このWebAPIは、リクエストはSJIS、レスポンスはUTF-8です。このことについてのディスクリプションが上記のリンク先にはなく、少し困りました。
- 得られる番組データは最大10件(ページの指定もできない)
使用する前に最も注意するべき点はこれだと思います。当然、週に複数回、月に複数回放送する番組も、重複してヒットします。
- ある時期のZIP!のデータがヒットしない
正しく検証をしていないのですが、ZIP!の出演者で数通りの検索をかけても、2015年3月23日以前の放送がヒットしません。
と、不満が多くなってしまいました。ですが民間の放送局でこういった取り組みをしている事自体が凄いと思います。何かアイデアが浮かべばまた使ってみようと思います。
制作物
最後に、こちらがAPIで遊んだ結果できあがったものです。
北乃きいが出演する予定である最新の日テレの番組1件についての情報を表示するWebサービスです。そう、ほぼZIP!が表示されます。
http://entyo.azurewebsites.net/kie.php
OSC東京2015参加記
生まれて初めて、オープンソースカンファレンスに参加しました。
- 電車を乗り間違えて1つのセミナーに参加できなかった。
- 学食が安価で助かった。
- 配布されていたノベルティやライセンスが最高に良かった。
- 多摩動物公園駅がいいカンジだった。
以上です。
追記
Azure(を利用した.NETの)のセミナーを受けて、ライセンスも頂いたのでWebサイトを作ってみました。
Firefox OS WoTハッカソン 参加記
こちらのハッカソンに参加しました。
Firefox OS WoTハッカソン : ATND
バレンタインデーの男たちの熱い戦い - Firefox OS WoTハッカソン | 開発・SE | マイナビニュース
Webテクノロジについては、異性の体についてと同程度の知識量であるのにもかかわらず、参加申し込みをしてしまいました。
しかも、自分のアイデアがチームのアイデアとなってしまい、どんどんと胃が痛くなっていく…
Entyo/家のボタン押しロボット : Recipe
残念ながらこのクソアイデアのせいでチームとしての受賞には至りませんでしたが、今回も様々な素晴らしい方々と出会い、強力なパワーを受けることができました。また、WoTにより一層興味関心が深まりました。
当日の俺の様子
application boardをじぇーけーそふと氏(@jksoft913)に貸して頂きました!超便利! pic.twitter.com/hNlrG4QX8Q
— いいんちょ (@E_ntyo) 2015, 2月 14
gluinサーバにmbedを二台接続 #fx0xm pic.twitter.com/croaSB1wc1
— いいんちょ (@E_ntyo) 2015, 2月 14
俺の次くらいに格好いいfx0 pic.twitter.com/XcTp0ehmKm
— いいんちょ (@E_ntyo) 2015, 2月 14
オ◯フでゎない pic.twitter.com/2vE39HKTAg
— いいんちょ (@E_ntyo) 2015, 2月 15
ものづくりハッカソン「未来のクルマ」参加記
こちらのハッカソンに参加しました。
http://gugen.jp/toyotahack
http://gugen.jp/toyotahack
追記
紗倉まなが来ていました。
— いいんちょ (@e_ntyo) January 24, 2015
JOI2014-2015(第14回日本情報オリンピック)予選参加記
✖╹◡╹✖<本選で待ってます。きっと4完してくださいね!
— いいんちょ (@E_ntyo) December 15, 2014
俺の出来栄え
3完太陽…
— いいんちょ (@E_ntyo) December 14, 2014
プロの声
1:やるだけ
2:全探索
3:やるだけ
4:DP
5:やるだけ
6:半分全列挙+segtree
— yokozuna57 (@yokozuna_57) December 14, 2014
1時間で5完だったせいで、これは簡単すぎて6完じゃないと通らないかもしれないという焦りと、どこか間違ってるんじゃないかという焦りに苦しめられてとてもつらかったし不安
— 物 (@potetisensei) December 14, 2014
1,2,3,4は30分でとけたので、これ4完ボーダーじゃない可能性
— Div0x267B (@Div9851) December 14, 2014
各位のを見る限り5完+αはできてそうですね...
— Div0x267B (@Div9851) December 14, 2014
ζ*'ヮ')ζうっうー!今回の予選は簡単だったかもです!平均満点かなあ?
— Div0x267B (@Div9851) December 14, 2014
問題毎の感想(全三問)
全問C++で挑みました(それ以外に選択肢がなかった)。
4問目はDPで歯が立たないし5問目は実装に必要な時間が足りなかったのでできませんでした。6問目は見てすらいません。
問題1 水道料金 (Water Rate)
あまり好きではない表現だが、俗にいうやるだけ問題
#include "cstdio" #include "iostream" #include "algorithm" #include "string" #include "functional" #define REP(i,n) for(int i=0; i<n; ++i) using namespace std; int main(){ int a,b,c,d,p,x,y,cost; cin >> a; cin >> b; cin >> c; cin >> d; cin >> p; x=a*p; if(p<=c) y=b; else y=b+d*(p-c); cost = min(x,y); cout << cost << endl; return 0; }
問題2 クリスマスパーティー (Christmas Party)
前年度までの問題と難易度,パターンはほぼ変わらず。
手続き型言語であれば、条件分岐と繰り返しが理解できていれば解けると思う。
ここまで完答すればBランクです。
#include "cstdio" #include "iostream" #include "algorithm" #include "string" #include "functional" #define REP(i,n) for(int i=0; i<n; ++i) using namespace std; int main(){ int n,m; cin >> n; cin >> m; int target[m],friends[n],score[n]; REP(i,n) score[i] = 0; REP(i,m) cin >> target[i]; REP(i,m){ REP(z,n) cin >> friends[z]; REP(j,n){ if(friends[j] == target[i]) score[j] += 1; else score[target[i]-1] += 1; } } REP(i,n) cout << score[i] << '\n'; return 0; }
問題3 気象予報士 (Weather Forecaster)
平面座標を利用した問題であることは昨年度と共通。しかしスーパー易化。
問題文にもあったように、空白の出力に注意。
#include "cstdio" #include "iostream" #include "algorithm" #include "string" #include "functional" #define REP(i,n) for(int i=0; i<n; ++i) using namespace std; int main(){ int h,w; cin >> h >> w; char sky[w]; int after_sky[w]; REP(i,h){ REP(z,w){ sky[z] = 0; after_sky[z] = 0; } REP(z,w){ cin >> sky[z]; } REP(j,w){ if(sky[j] == 'c'){ after_sky[j] = 0; }else{ for(int k=j; k>=0; --k){ if(sky[k] == 'c'){ after_sky[j] = j-k; break; }else{ after_sky[j] = -1; } } } } REP(z,w){ if(z == w-1) cout << after_sky[z] << '\n'; else cout << after_sky[z] << '\0'; } } return 0; }
最後に
俺はこれでしばらく競技プログラミングをしなくなってしまう(大会前もしていなかっただろ)と思います。サポートして下さった皆様、ありがとうございました。