มันเป็นความท้าทายในการค้นหาภาพยนตร์


10

นี่เป็นความท้าทายในการขูดเว็บแบบง่าย ๆ

อินพุต

รหัสของคุณควรใช้คะแนนภาพยนตร์ MPAAและตัวเลขจาก 0 ถึง 100 เป็นอินพุต สามารถทำได้ทุกวิธีที่คุณสะดวก

เอาท์พุต

รหัสของคุณควรจะกลับชื่อของหนังเรื่องใด ๆ ที่มี) ที่คะแนนภาพยนตร์และข) คำนวณคะแนนบน Tomatometer จากรอตเทนโทเมโทส์

หากไม่มีภาพยนตร์ดังกล่าวก็สามารถส่งออกสิ่งที่คุณต้องการ

ที่เป็นไปได้การจัดอันดับภาพยนตร์ MPAA G, PG, PG-13, R, NC-17, NRเป็น

รหัสของคุณอาจรายงานภาพยนตร์หนึ่งเรื่องหรือมากกว่านั้นขึ้นอยู่กับคุณ

ในการชี้แจงรหัสของคุณมีไว้เพื่อเข้าถึงเว็บเพื่อรับคำตอบของคำถาม

ตัวอย่าง

สมมติว่าอินพุตเป็น "PG, 98" จากนั้นรหัสของคุณสามารถส่งออก "Zootropolis"

กรุณาแสดงตัวอย่างของรหัสของคุณที่ทำงานกับการจัดอันดับภาพยนตร์PGและคะแนน98พร้อมกับคำตอบของคุณ


O_O NC-17 ฟังดูไม่ดี
Christopher

1
NC-17 ซึ่งแตกต่างจากคนอื่น ๆควรจะไม่เหมาะสม : P
สิ้นเชิงมนุษย์

คำตอบของฉันควรกลับมามากกว่าหนึ่งเรื่องหรือไม่
BlackCap

1
@BlackCap แก้ไขคำถาม ขึ้นอยู่กับคุณ

Zootropolis หรือ Zootopia
BlackCap

คำตอบ:


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

คุณสามารถวางwww.?
Shaggy

@Shaggy แต่น่าเสียดายที่ไม่ได้
Okx

บางทีคุณอาจโพสต์ภาพหน้าจอของมันทำงานหรือไม่

12

Bash, 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)

มันจะดีถ้ามีการคลิกและวิธีทดสอบคำตอบของจาวาสคริปต์

@Lembik: โดยปกติสามารถทำได้เมื่อทำงานกับ API แต่ในกรณีนี้นโยบาย CORS ของ RT จะป้องกันไม่ให้ ขอบคุณสำหรับการยอมรับโดยวิธีการ
Shaggy

อืม .. ฉันเพิ่งสังเกตเห็นว่ามีคำตอบที่สั้นกว่า แต่ฉันไม่มีพลังงาน / ความเชี่ยวชาญในการทดสอบรหัส Stratos ในขณะนี้ ถ้าฉันทำฉันจะต้องเปลี่ยนการยอมรับขอโทษ

@ Lembik: ฉันคาดหวังว่า Stratos จะได้รับมัน (จนถึงตอนนี้)
Shaggy

โอ้ฉันได้เพิ่มความโปรดปรานให้กับคำถาม find-a-movie :)

3

งูหลาม 2 + คำขอ209 204 ไบต์

-5 ไบต์ขอบคุณ 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
คิดว่าคุณอาจต้องการ (t, t) ที่ที่คุณมี (r, r)
ElPedro

1
คุณสามารถใช้ลิงค์นี้: http://rottentomatoes.com/api/private/v2.0/browse?minTomato=%d&maxTomato=%d&type=dvd-streaming-all( https-> 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

หมายเหตุ:

  • หากคุณต้องการลองด้วยตัวคุณเองให้อ่านหน้าCookbook / SSLเพื่อให้แน่ใจว่าสภาพแวดล้อมของคุณตั้งค่าไว้ถูกต้อง
  • ล้มเหลวหากเราลบส่วนsของhttpsหรือwww.ให้301 Permanently Movedการตอบสนอง

อาจจะเพิ่มลิงค์สำหรับ "q / kdb +" ในชื่อคำตอบของคุณ? ผู้คนจำนวนมากจะไม่เคยได้ยินและคุณสามารถให้การศึกษาแก่พวกเขา (ฉัน)

เสร็จสิ้น :) ฉันหวังว่าจะเขียนวิธีแก้ปัญหาใน oK แต่ได้รับส่วนหัว 'ไม่' การควบคุมการอนุญาตให้เข้าถึง 'มีอยู่ ... ' เมื่อใช้ตัวแทนออนไลน์ ( johnearnest.github.io/ok/index.html ) ดังนั้นได้กลับไปที่ปิดแหล่งที่มา Q.
roadster

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

เรียกใช้จากหน้าแรก 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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.