Це виклик пошуку фільму


10

Це простий (іш) веб-виклик завдання.

Вхідні дані

Ваш код повинен містити рейтинг MPAA фільму та число від 0 до 100 як вхідний. Це можна зробити будь-яким зручним для вас способом.

Вихідні дані

Ваш код повинен повертати назву будь-якого фільму, який має: а) цей рейтинг фільму та б) числовий бал на Томатометрі від роттентоматозів .

Якщо такого фільму немає, він може вивести все, що завгодно.

Можливі рейтинги фільму MPAA G, PG, PG-13, R, NC-17, NR.

Ваш код може повідомити про один або кілька фільмів, що залежить від вас.

Для уточнення, ваш код призначений для доступу до Інтернету, щоб отримати відповіді на запити.

Приклад

Скажіть, що вхід "PG, 98", тоді ваш код може вивести "Zootropolis".

Покажіть приклад свого коду, який працює з рейтингом фільму, PGта оцініть його 98разом із відповіддю.


O_O NC-17 звучить погано
Крістофер

1
NC-17, на відміну від інших, вважається недоречним. : P
повністюлюдський

Чи повинна моя відповідь повернути більше одного фільму?
BlackCap

1
@BlackCap Редагував питання. Це залежить від вас.

Зоотрополіс чи Зоотопія?
BlackCap

Відповіді:


2

Стратос , 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

Баш, 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, але, у цьому випадку, CORS-політика RT у цьому запобігає. Дякуємо за прийняття, до речі.
Shaggy

Хм .. Я щойно помітив, що є короткі відповіді, але в мене зараз немає енергії та досвіду, щоб перевірити код Стратоса. Якщо я це зробити, мені доведеться змінити акцепт, вибачте.

@Lembik: Я повністю очікував, що Стратос отримає його (поки що).
Shaggy

О, я додав щедрості до іншого питання про фільм :)

3

Python 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 +" у назві вашої відповіді? Дуже багато людей ніколи про це не чули, і ви можете їх виховувати (я).

Готово :) Я сподівався написати рішення в ОК, але отримати заголовок "Ні" Access-Control-Allow-Origin "присутній ..." при використанні он-лайн repl ( johnearnest.github.io/ok/index.html ), отже, потрапили назад до закритого джерела Q.
Стрітер

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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.