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.


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!


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)

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)

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*

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.

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)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.