C'est un défi de trouver un film

10

Il s'agit d'un défi de grattage Web simple (ish).

Contribution

Votre code doit prendre une cote de film MPAA et un nombre de 0 à 100 en entrée. Il peut le faire de la manière qui vous convient.

Production

Votre code doit renvoyer le nom de tout film qui a) cette cote de film et b) le score numérique sur le tomomètre des rottentomatoes .

S'il n'y a pas un tel film, il peut produire tout ce que vous voulez.

Les classements possibles des films MPAA sont G, PG, PG-13, R, NC-17, NR.

Votre code peut signaler un ou plusieurs films, cela dépend de vous.

Pour clarifier, votre code est destiné à accéder au Web pour obtenir les réponses aux requêtes.

Exemple

Supposons que l'entrée est "PG, 98", votre code pourrait alors afficher "Zootropolis".

Veuillez montrer un exemple de votre code fonctionnant avec la note PGet la note du film 98avec votre réponse.


la source
O_O NC-17 sonne mal
Christopher
1
Le NC-17, contrairement aux autres, est censé être inapproprié. : P
totalement humain
Ma réponse doit-elle renvoyer plusieurs films?
BlackCap
1
@BlackCap Modifié la question. C'est à toi de voir.
Zootropolis ou Zootopia?
BlackCap

Réponses:

2

Stratos , 133 octets

{
f"www.rottentomatoes.com/api/private/v2.0/browse?minTomato=%&maxTomato=%&type=dvd-streaming-all"r"results")s"mpaaRating"=⁰
s"title"

Essayez!

Okx
la source
Pourriez-vous montrer un exemple de votre code utilisé s'il vous plaît.
@Lembik Eh bien, lancez-le et tapez le numéro, appuyez sur Entrée, tapez la note, appuyez sur Entrée, et cela vous donnera la sortie.
Okx
Pouvez-vous laisser tomber le www.?
Shaggy
@Shaggy Malheureusement non.
Okx
Peut-être pourriez-vous simplement poster une capture d'écran de celui-ci en cours d'exécution?
12

Bash, 182 octets

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

Usage:

$ bash script PG 98
The Island President
Inside Out
Zootopia
Paddington
Love & Friendship
Long Way North (Tout en haut du monde)
BlackCap
la source
J'aime vraiment cette réponse.
6

JavaScript (ES6), 167 162 159 octets

Doit être exécuté à partir de la racine de rottentomatoes.com . Renvoie un Promiseobjet contenant le titre.

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)

Si nous pouvons exiger qu'il soit exécuté dans un répertoire spécifique, il devient alors 139 octets:

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)
Hirsute
la source
Ce serait formidable s'il y avait un moyen de cliquer et de chercher pour tester les réponses Javascript.
@Lembik: normalement, cela peut être fait lorsque vous travaillez avec des API mais, dans ce cas, la politique CORS de RT l'empêche. Merci pour l'acceptation, au fait.
Shaggy
Hmm..Je viens de remarquer qu'il y a des réponses plus courtes mais je n'ai pas l'énergie / l'expertise pour tester le code Stratos en ce moment. Si je le fais, je devrai modifier l'accepter, désolé.
@Lembik: Je m'attendais à ce que Stratos l'obtienne (jusqu'à présent).
Shaggy
Oh, j'ai ajouté une prime à l'autre question de trouver un film :)
3

Python 2 + requêtes, 209 204 octets

-5 octets grâce à 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*
totalement humain
la source
1
Pensez que vous pourriez avoir besoin (t, t) où vous avez (r, r)
ElPedro
1
Vous pouvez utiliser ce lien: http://rottentomatoes.com/api/private/v2.0/browse?minTomato=%d&maxTomato=%d&type=dvd-streaming-all( https-> httpet déposez le www.) pour quelques octets enregistrés .
1
Pourriez-vous montrer un exemple de votre code utilisé s'il vous plaît.
2

q / kdb + , 168 octets

Solution:

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

Exemple:

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

Explication:

.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

Remarques:

  • Si vous voulez l'essayer vous-même, lisez la page Cookbook / SSL pour vous assurer que votre environnement est correctement configuré.
  • Échoue si nous supprimons le sof httpsou le www., donne une 301 Permanently Movedréponse.
streetster
la source
Peut-être ajouter un lien pour "q / kdb +" dans le titre de votre réponse? Beaucoup de gens n'en auront jamais entendu parler et vous pouvez les éduquer (moi).
Terminé :) J'espérais écrire une solution en ok mais obtenir un en-tête «Non» Access-Control-Allow-Origin »est présent ...» lors de l'utilisation de la réponse en ligne ( johnearnest.github.io/ok/index.html ), ont donc retombé à la source fermée Q.
streetster
2

JavaScript (ES2017), 158 octets

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

Exécuter à partir de la page d'accueil de 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)
darrylyeo
la source