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.


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!


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)

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)

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*

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.

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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.