Ini tantangan mencari-film

10

Ini adalah tantangan pengikisan web (ish) sederhana.

Memasukkan

Kode Anda harus mengambil peringkat film MPAA dan angka dari 0 hingga 100 sebagai masukan. Ini dapat melakukan ini dengan cara apa pun yang menurut Anda nyaman.

Keluaran

Kode Anda harus mengembalikan nama film apa pun yang memiliki a) yang menilai film dan b) skor numerik pada Tomatometer dari rottentomatoes .

Jika tidak ada film seperti itu, dapat menghasilkan apa pun yang Anda suka.

Kemungkinan peringkat film MPAA adalah G, PG, PG-13, R, NC-17, NR.

Kode Anda dapat melaporkan satu atau lebih film, itu terserah Anda.

Untuk memperjelas, kode Anda dimaksudkan untuk mengakses web untuk mendapatkan jawaban atas pertanyaan.

Contoh

Katakanlah inputnya adalah "PG, 98" maka kode Anda bisa menampilkan "Zootropolis".

Tolong tunjukkan contoh kode Anda bekerja dengan rating PGdan skor film 98bersama dengan jawaban Anda.


sumber
O_O NC-17 kedengarannya buruk
Christopher
1
NC-17, tidak seperti yang lain, seharusnya tidak pantas. : P
totallyhuman
Haruskah jawaban saya menghasilkan lebih dari satu film?
BlackCap
1
@ Blacklap Mengedit pertanyaan. Terserah kamu.
Zootropolis atau Zootopia?
BlackCap

Jawaban:

2

Stratos , 133 byte

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

Cobalah!

Okx
sumber
Tolong tunjukkan contoh kode Anda sedang digunakan.
@Lembik Nah, jalankan, dan ketikkan angkanya, tekan enter, ketik peringkat, tekan enter, dan itu akan memberi Anda output.
Okx
Bisakah kamu menjatuhkannya www.?
Shaggy
@ Shaggy Sayangnya tidak.
Okx
Mungkin Anda bisa memposting tangkapan layar yang sedang berjalan?
12

Bash, 182 byte

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[^"]*'

Pemakaian:

$ bash script PG 98
The Island President
Inside Out
Zootopia
Paddington
Love & Friendship
Long Way North (Tout en haut du monde)
BlackCap
sumber
Saya sangat suka jawaban ini.
6

JavaScript (ES6), 167 162 159 byte

Perlu dijalankan dari root rottentomatoes.com . Mengembalikan Promiseobjek yang berisi judul.

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)

Jika kita bisa mengharuskannya dijalankan di direktori tertentu maka itu menjadi 139 byte:

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)
Shaggy
sumber
Akan lebih bagus jika ada klik dan lihat cara untuk menguji jawaban Javascript.
@ Lembik: biasanya itu bisa dilakukan ketika bekerja dengan API tetapi, dalam hal ini, kebijakan CORS RT mencegahnya. Terima kasih sudah menerima.
Shaggy
Hmm..saya hanya memperhatikan ada jawaban yang lebih pendek tapi saya tidak memiliki energi / keahlian untuk menguji kode Stratos sekarang. Jika saya melakukannya, saya harus mengubah penerimaan, maaf.
@Lembik: Saya sepenuhnya berharap Stratos mendapatkannya (sejauh ini).
Shaggy
Oh saya menambahkan hadiah untuk pertanyaan find-a-movie lainnya :)
3

Python 2 + permintaan, 209 204 byte

-5 byte terima kasih kepada Ian Gödel.

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*
benar-benar manusiawi
sumber
1
Pikirkan Anda mungkin perlu (t, t) di mana Anda memiliki (r, r)
ElPedro
1
Anda dapat menggunakan tautan ini: http://rottentomatoes.com/api/private/v2.0/browse?minTomato=%d&maxTomato=%d&type=dvd-streaming-all( https-> httpdan jatuhkan www.) untuk beberapa byte yang disimpan .
1
Tolong tunjukkan contoh kode Anda sedang digunakan.
2

q / kdb + , 168 byte

Larutan:

{(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]}

Contoh:

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)"

Penjelasan:

.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

Catatan:

  • Jika Anda ingin mencobanya sendiri, bacalah halaman Cookbook / SSL untuk memastikan lingkungan Anda diatur dengan benar.
  • Gagal jika kita menghapus sdari https, atau www., memberikan 301 Permanently Movedrespons.
streetster
sumber
Mungkin menambahkan tautan untuk "q / kdb +" di judul jawaban Anda? Banyak orang tidak akan pernah mendengarnya dan Anda dapat mendidik mereka (saya).
Selesai :) Saya berharap dapat menulis solusi dalam OK tetapi mendapatkan tajuk 'Tidak' Akses-Kontrol-Bolehkan-Asal 'hadir ...' saat menggunakan penggantian online ( johnearnest.github.io/ok/index.html ), jadi telah jatuh kembali ke sumber tertutup Q.
streetster
2

JavaScript (ES2017), 158 byte

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

Jalankan dari beranda Rotten Tomatoes :

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)
Darrylyeo
sumber