Đó là một thử thách tìm phim


10

Đây là một thử thách quét web đơn giản (ish).

Đầu vào

Mã của bạn nên lấy xếp hạng phim MPAA và số từ 0 đến 100 làm đầu vào. Nó có thể làm điều này theo bất kỳ cách nào bạn thấy thuận tiện.

Đầu ra

Mã của bạn sẽ trả về tên của bất kỳ bộ phim nào có a) xếp hạng phim đó và b) số điểm trên Tomatometer từ rottentomatoes .

Nếu không có phim như vậy, nó có thể xuất bất cứ thứ gì bạn thích.

Xếp hạng phim MPAA có thể là G, PG, PG-13, R, NC-17, NR.

Mã của bạn có thể báo cáo một hoặc nhiều phim, tùy thuộc vào bạn.

Để làm rõ, mã của bạn có nghĩa là truy cập web để có câu trả lời cho các truy vấn.

Thí dụ

Giả sử đầu vào là "PG, 98" thì mã của bạn có thể xuất ra "Zootropolis".

Vui lòng hiển thị một ví dụ về mã của bạn làm việc với xếp hạng phim PGvà điểm số 98cùng với câu trả lời của bạn.


O_O NC-17 nghe có vẻ tệ
Christopher

1
NC-17, không giống như những người khác, được cho là không phù hợp. : P
hoàn toàn là

Câu trả lời của tôi có nên trả lại nhiều hơn một bộ phim không?
BlackCap

1
@BlackCap Đã chỉnh sửa câu hỏi. Tùy bạn.

Zootopia hay Zootopia?
BlackCap

Câu trả lời:


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"

Thử nó!


Bạn có thể cho thấy một ví dụ về mã của bạn đang được sử dụng xin vui lòng.

@Lembik Vâng, chạy nó và nhập số, nhấn enter, nhập xếp hạng, nhấn enter và nó sẽ cung cấp cho bạn đầu ra.
Okx

Bạn có thể thả www.?
Xù xì

@Shaggy Thật không may.
Okx

Có lẽ bạn chỉ có thể đăng một ảnh chụp màn hình của nó đang chạy?

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

Sử dụng:

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

Tôi thực sự thích câu trả lời này.

6

JavaScript (ES6), 167 162 159 byte

Cần phải được chạy từ gốc của rottentomatoes.com . Trả về một Promiseđối tượng có chứa tiêu đề.

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)

Nếu chúng ta có thể yêu cầu nó được chạy trong một thư mục cụ thể thì nó sẽ trở thành 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)

Sẽ thật tuyệt nếu có một lần nhấp và tìm cách kiểm tra các câu trả lời Javascript.

@Lembik: thông thường có thể được thực hiện khi làm việc với API nhưng, trong trường hợp này, chính sách CORS của RT ngăn chặn điều đó. Cảm ơn đã chấp nhận, nhân tiện.
Xù xì

Hmm..Tôi chỉ nhận thấy có những câu trả lời ngắn hơn nhưng tôi không có đủ năng lực / chuyên môn để kiểm tra mã Stratos ngay bây giờ. Nếu tôi làm, tôi sẽ phải thay đổi chấp nhận, xin lỗi.

@Lembik: Tôi hoàn toàn mong đợi Stratos sẽ có được nó (cho đến nay).
Xù xì

Ồ tôi đã thêm một tiền thưởng cho câu hỏi tìm phim khác :)

3

Yêu cầu Python 2 +, 209 204 byte

-5 byte nhờ 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
Hãy nghĩ rằng bạn có thể cần (t, t) nơi bạn có (r, r)
ElPedro

1
Bạn có thể sử dụng liên kết này: http://rottentomatoes.com/api/private/v2.0/browse?minTomato=%d&maxTomato=%d&type=dvd-streaming-all( https-> httpvà thả www.) cho một vài byte được lưu .

1
Bạn có thể cho thấy một ví dụ về mã của bạn đang được sử dụng xin vui lòng.

2

q / kdb + , 168 byte

Giải pháp:

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

Thí dụ:

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

Giải trình:

.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

Ghi chú:

  • Nếu bạn muốn tự mình thử, hãy đọc qua trang Cookbook / SSL để đảm bảo môi trường của bạn được thiết lập chính xác.
  • Thất bại nếu chúng ta loại bỏ các ssố https, hoặc www., cung cấp cho 301 Permanently Movedphản ứng.

Có thể thêm một liên kết cho "q / kdb +" trong tiêu đề câu trả lời của bạn? Rất nhiều người sẽ không bao giờ nghe về nó và bạn có thể giáo dục họ (tôi).

Xong :) Tôi đã hy vọng viết một giải pháp bằng oK nhưng nhận được tiêu đề 'Không' Kiểm soát truy cập-Cho phép-Xuất xứ '... khi sử dụng thay thế trực tuyến ( johnearnest.github.io/ok/index.html ), vì vậy đã rơi trở lại Q. nguồn đóng
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

Chạy từ trang chủ 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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.