J'ai trouvé cette photo sur le Web aujourd'hui. Étant un programmeur paresseux, je ne veux pas vraiment ouvrir Google et taper quelques caractères. Beaucoup trop de travail! Il s'agit d'une tâche tellement importante qu'elle devrait être automatisée.
Défi
Tout le monde sait que la première image d'un résultat de recherche Google est toujours la meilleure. Il doit donc être présenté à l'utilisateur.
Vous devez écrire un programme ou une fonction qui prend une chaîne en paramètre et affiche la première image qu'il trouve sur Google lorsque vous recherchez ce nom + les mots glamour shot
derrière.
Requêtes de recherche Google
Pour rechercher des images sur Google, l'URL doit contenir le paramètre de requête tbm=isch
et q=query
, avec query
le nom que vous souhaitez rechercher.
Une chaîne de requête valide pour mon nom Bas
seraitwww.google.com/search?tbm=isch&q=Bas
Contribution
Votre programme ou fonction prend un seul paramètre d'entrée, qui est le nom que vous souhaitez rechercher sur google. Cette chaîne sera composée des personnages [a-z]
, [A-Z]
, [0-9]
et (espace). Cette chaîne peut être séparée par des espaces, pour rechercher une chaîne séparée par des espaces sur Google, il faut remplacer les espaces par
+
. Par exemple, il s'agit d'une requête valide:
www.google.com/search?tbm=isch&q=Bassdrop+Cumberwubwubwub+glamour+shot
Production
L'image peut être dessinée à l'écran ou enregistrée dans un fichier (dans n'importe quel format).
Si le premier résultat de recherche sur google est un fichier gif, vous pouvez soit afficher le gif, soit afficher n'importe quelle image de ce gif.
Cas de test
Exécutez cet extrait pour voir les résultats attendus
C'est le code-golf , le code le plus court en octets gagne!
la source
[a-z0-9]
, a modifié mon article. Les URL ressembleront aux exemples que j'ai fournis, aucun encodage n'est nécessaire, juste de l'espace pour+
A-Z
peut également apparaître, à en juger par votre exemple?Réponses:
PowerShell v4 +, 160 octets
Prend l'entrée
$a
sous forme de chaîne. Fait unInvoke-WebRequest
(iwr
) à l'emplacement Google approprié, en utilisant un bloc de script de chaîne interne pour les-replace
espaces avec+
dans la chaîne d'entrée. Nous prenons le.links
de cela, où le.innerhtml
est-like
notre chaîne d'entrée. Cela donne les liens avec la description de vignette appropriée. Prenez le premier[0]
de ceux-ci, prenez le sien.innerhtml
et-split
le sur les citations. Le quatrième[3]
élément est le texte à l'intérieur de laimg src="
partie, nous en faisons donc un autreiwr
en spécifiant que-outf
ile doit être$a.jpg
dans le dossier local. Comme ce ne sont que les vignettes générées par Google, elles sont garanties au format jpg.la source
google.com
avecgoogle.nl
pour -1 octetExcel VBA + ,
465332 octetsGolfé:
Sub
Routine complète qui prend une entréen
(abréviation de nom) du type attenduVariant/String
et génère le premier résultat de recherche d'images google pour la requête de ce nom etglamour shot
vers une fenêtre Internet Explorer.-2 octets pour supprimer les espaces blancs dans
If InStr(1, a.href, "imgres") Then
-2 octets pour passer
.navigate (a.href)
à.navigate a.href
-27 octets pour réduire la
for each a in ... if (...) then ... end if .. next
boucle àdo until ... loop
-10 octets pour la condensation
imgres
versres
etencrypted
versyp
-8 octets pour la suppression initalizers pour
j
,k
et en supposant que le module propre-1 octet pour passer
google.com
àgoogle.nl
-3 octets pour remplacer
Dim i as New ...
parSet i=New ...
-8 octets pour supprimer
SHDocVw.
la référence de classe-12 octets pour supprimer le
with i
bloc-7 octets pour la suppression
i.quit
- cela provoque une fuite de mémoire en laissant Internet Explorer ouvert en arrière-plan, en tant que tel, il est recommandé d'utiliser la version complète non golfée à la place ou de terminer la tâche Internet Explorer via le gestionnaire de tâches après utilisation-6 octets pour passer
i.navigate
au sous-programme d'assistanceh
-13 octets pour passer
Do Until ... Loop
au sous-programme d'assistance-2 octets en se déplaçant
j=0
dans l'assistant et en supprimant,j
,,0
(x2)-11 octets pour la conversion en une fonction de fenêtre immédiate anonyme
-8 octets pour réduire les appels de fonction d'assistance en
for .. next
boucle-16 octets pour changer la sortie de l'
Sheets(1)
objet d'image en affichage via l'InternetExplorer
objetNon golfé, 1304 octets
Gif d'utilisation
la source
Vimperator , 30 touches
Alternativement 27 touches si vous n'avez pas besoin de l'image à la résolution la plus élevée:
Vidéo: https://youtu.be/t8824UjlYt8
Heureusement, le moteur de recherche standard de Firefox est Google, et Vimperator vous permet de taper des indices par défaut. C'est plus long que nécessaire pour être sûr qu'il fonctionne toujours, indépendamment de ce que vous recherchez.
Prend des entrées via le presse-papiers.
Explication:
Merci à @TaylorScott d'avoir trouvé un cas de bord.
la source
Python 3.6,
247242232 peut-être 224 octetsCeci est une tentative mignonne de résoudre celui-ci. Il enregistrera le fichier comme
p.png
dans le répertoire courant.Pour l'exécuter facilement à partir de la ligne de commande, placez simplement le contenu ci-dessus dans un fichier, tel que
glamour.py
et exécutez:Mise à jour 1: meilleure version avec la nouvelle URL Google
Mise à jour 2:
J'ai économisé quelques octets:
f
drapeau d' interpolation de chaîne python 3.6 sans allouer lesys.argv
à une variableBeautifulSoup
appelLe dernier est controversé, car il entraîne un message std.output indiquant au programmeur de spécifier l'analyseur pour la compatibilité multiplateforme, il peut donc être considéré comme une sortie indésirable.
Voici la version 224 octets:
Voici la version 232 octets:
Mais la version plus courte pourrait être utilisée si std.out est redirigé vers
/dev/null
ou quelque chose comme ça: Dla source
www.google.nl/
ou peut-être mêmegoogle.nl
au lieu d'https://www.google.com.br/
enregistrer quelques octetshttp://
pour qu'il fonctionne avec les demandes. Mais le google brésilien m'a donné des résultats plus drôles, donc jen = 'something'; f'{n}_here'
place den = 'something'; '{n}_here'.format(n = n)
oun = 'something'; '{}_here'.format(n)
Raquette, 284 byes
Capture d'écran:
la source