映画を探すのは難しい


10

これは、シンプルな(ish)Webスクレイピングの課題です。

入力

コードは、MPAAフィルムレーティングと0〜100の数値を入力として受け取る必要があります。それはあなたが便利だと思う方法でこれを行うことができます。

出力

コードは、a)その映画の評価とb)rottentomatoesからのTomatometerの数値スコアがある映画の名前を返す必要があります。

そのような映画がない場合、それはあなたが好きなものを出力することができます。

可能なMPAAフィルムの評価はG, PG, PG-13, R, NC-17, NRです。

あなたのコードは、あなた次第の1つ以上の映画を報告するかもしれません。

明確にするために、コードはWebにアクセスしてクエリへの回答を取得するためのものです。

入力が「PG、98」であるとすると、コードは「Zootropolis」を出力できます。

映画の評価PGとスコア98に対応するコードの例と回答を示してください。


O_O NC-17のサウンドが悪い
クリストファー

1
他とは異なり、NC-17は不適切であることになっています。:P
完全に人間的な2017

私の答えは複数の映画を返す必要がありますか?
BlackCap '26

1
@BlackCap質問を編集しました。それはあなた次第です。

ZootropolisまたはZootopia?
BlackCap '26

回答:


2

Stratos、133バイト

{
f"www.rottentomatoes.com/api/private/v2.0/browse?minTomato=%&maxTomato=%&type=dvd-streaming-all"r"results")s"mpaaRating"=⁰
s"title"

それを試してみてください!


使用されているコードの例を示してください。

@Lembikさて、それを実行して、数値を入力してEnterキーを押し、評価を入力してEnterキーを押すと、出力が表示されます。
Okx 2017

落とせwww.ますか?
シャギー

@Shaggy残念ながらそうではありません。
Okx

実行中のスクリーンショットを投稿できますか?

12

バッシュ、182バイト

curl "https://www.rottentomatoes.com/api/private/v2.0/browse?minTomato=$2&maxTomato=$2&type=dvd-streaming-all" 2>/dev/null|grep -o "{[^}]*aRating\":\"$1\""|grep -Po 'title":"\K[^"]*'

使用法:

$ bash script PG 98
The Island President
Inside Out
Zootopia
Paddington
Love & Friendship
Long Way North (Tout en haut du monde)

私はこの答えが本当に好きです。

6

JavaScript(ES6)、167 162 159バイト

rottentomatoes.comのルートから実行する必要があります。タイトルを含むオブジェクト返しますPromise

s=>n=>fetch(`api/private/v2.0/browse?minTomato=${n}&maxTomato=${n}&type=dvd-streaming-all`).then(r=>r.json()).then(j=>j.results.find(x=>x.mpaaRating==s).title)

特定のディレクトリで実行する必要がある場合は 139バイトになります。

s=>n=>fetch(`browse?minTomato=${n}&maxTomato=${n}&type=dvd-streaming-all`).then(r=>r.json()).then(j=>j.results.find(x=>x.mpaaRating==s).title)

Javascriptの回答をテストするためのクリックアンドルックの方法があればすばらしいでしょう。

@Lembik:通常、これはAPIを操作するときに実行できますが、この場合、RTのCORSポリシーによって防止されます。ところで、受け入れてくれてありがとう。
シャギー2017

うーん..短い答えがあることに気づきましたが、現時点でStratosコードをテストするためのエネルギー/専門知識がありません。申し訳ありませんが、承諾を変更する必要があります。

@Lembik:Stratosがそれを(これまでのところ)取得することを完全に期待していました。
シャギー2017

ああ、映画の他の検索の質問に賞金を追加しました:)

3

Python 2 +リクエスト、209204バイト

イアンゲーデルのおかげで-5バイト。

lambda r,t:[i['title']for i in get('http://rottentomatoes.com/api/private/v2.0/browse?minTomato=%d&maxTomato=%d&type=dvd-streaming-all'%(t,t)).json()['results']if i['mpaaRating']==r]
from requests import*

1
(t、t)が必要な場所に(r、r)があると
思う

1
あなたはこのリンクを使用することができます:http://rottentomatoes.com/api/private/v2.0/browse?minTomato=%d&maxTomato=%d&type=dvd-streaming-allhttps-> httpとドロップしてwww.数バイトを節約します。

1
使用されているコードの例を示してください。

2

q / kdb +、168バイト

解決:

{(r(&)(r:.j.k[.Q.hg`$"https://www.rottentomatoes.com/api/private/v2.0/browse?type=dvd-streaming-all&min",t,"&max",t:"Tomato=",y]`results)[;`mpaaRating]like x)[;`title]}

例:

q){(r(&)(r:.j.k[.Q.hg`$"https://www.rottentomatoes.com/api/private/v2.0/browse?type=dvd-streaming-all&min",t,"&max",t:"Tomato=",y]`results)[;`mpaaRating]like x)[;`title]}["PG";"98"]
"The Island President"
"Inside Out"
"Zootopia"
"Paddington"
"Love & Friendship"
"Long Way North (Tout en haut du monde)"

説明:

.Q.hg           / fetch a URL
.j.k            / parse json string into Q dictionaries
`results        / index into dictionary with key `results
[;`mpaaRating]  / index into these sub dictionaries extracting mpaaRating
like x          / binary list where they match, e.g. "PG"
(&)             / where, list indices where true
[;`title]       / index into dictionary with key `title

ノート:

  • 自分で試してみたい場合は、 クックブック/ SSLページを、環境が正しく設定されていることを確認してください。
  • のを削除するsと失敗しhttps、またはwww.301 Permanently Moved応答します。

回答のタイトルに「q / kdb +」へのリンクを追加しますか?多くの人はそれを聞いたことがないでしょうし、あなたは彼ら(私)を教育することができます。

完了:)オンラインでソリューションを作成することを望んでいましたが、オンラインrepl(johnearnest.github.io/ok/index.htmlを使用すると「Access-Control-Allow-Origin」ヘッダーが存在しません...」)ので、バッククローズドソースQにfalledた
streetster

2

JavaScript(ES2017)、158バイト

async(r,n)=>(await(await fetch(`api/private/v2.0/browse?minTomato=${n}&maxTomato=${n}&type=dvd-streaming-all`)).json()).results.find(m=>m.mpaaRating==r).title

腐ったトマトのホームページから実行します

f=async(r,n)=>(await fetch(`api/private/v2.0/browse?minTomato=${n}&maxTomato=${n}&type=dvd-streaming-all`).then(x=>x.json())).results.find(m=>m.mpaaRating==r).title
f('PG',98).then(console.log)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.