Это поиск фильма

10

Это простая (ish) задача по поиску в сети.

вход

Ваш код должен принимать рейтинг фильма MPAA и число от 0 до 100 в качестве входных данных. Он может сделать это любым удобным для вас способом.

Вывод

Ваш код должен возвращать название любого фильма, который имеет: а) рейтинг фильма и б) числовую оценку на томатометре от гнилых томатов .

Если такого фильма нет, он может вывести все что угодно.

Возможные оценки MPAA пленочные G, PG, PG-13, R, NC-17, NR.

Ваш код может сообщать об одном или нескольких фильмах на ваше усмотрение.

Чтобы уточнить, ваш код предназначен для доступа в Интернет, чтобы получить ответы на запросы.

пример

Скажите, что ввод "PG, 98", тогда ваш код может выводить "Zootropolis".

Пожалуйста, покажите пример вашего кода, работающего с рейтингом фильма PGи оценкой 98вместе с вашим ответом.


источник
О_О 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"

Попробуй это!

Okx
источник
Не могли бы вы показать пример использования вашего кода, пожалуйста.
@Lembik Хорошо, запустите его и введите число, нажмите ввод, введите рейтинг, нажмите ввод, и он выдаст вам результат.
Okx
Можете ли вы бросить www.?
Лохматый
@ 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, но в этом случае политика RT CORS предотвращает это. Спасибо за согласие, кстати.
Лохматый
Хм ... Я только что заметил, что есть более короткие ответы, но у меня нет сил / опыта для тестирования кода Stratos прямо сейчас. Если я это сделаю, мне придется изменить принять, извините.
@Lembik: я полностью ожидал, что Стратос получит это (пока).
Лохматый
О, я добавил награду к другому вопросу о поиске фильма :)
3

Python 2 + запросы, 209 204 байта

-5 байтов благодаря Яну Геделю.

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*
totallyhuman
источник
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.
streetster
источник
Может быть, добавить ссылку на «q / kdb +» в заголовке вашего ответа? Многие люди никогда не слышали об этом, и вы можете обучить их (меня).
Готово :) Я надеялся написать решение в ОК, но при использовании онлайн- реплея появляется заголовок «Нет« Access-Control-Allow-Origin »...» ( johnearnest.github.io/ok/index.html ), поэтому вернулись к закрытому исходнику Q.
streetters
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)
darrylyeo
источник