Affichez les résultats dans Safari à l'aide de [SearchByImage] de Google (http://www.google.co.jp/searchbyimage) à partir des images enregistrées dans la pellicule iOS.
Pythonista3 a une fonction que vous pouvez appeler votre propre script Python à partir de la feuille partagée de l'application, alors utilisez ceci. Pour plus d'informations sur Pythonista 3, consultez cet article de M. Hitoburogu (Parler de l'attrait de l'environnement de fabrication révolutionnaire "Pythonista 3" qui fonctionne sous iOS). Ça a été. Pythonista3 peut utiliser Python2.7 et Python3.5, mais cette fois je l'ai écrit en Python3.5.
searchbyimage.py
import requests, appex, imghdr
from requests_toolbelt.multipart.encoder import MultipartEncoder
from objc_util import *
def search_by_image(fp):
user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.98 Safari/537.36 Vivaldi/1.6.689.40'
m = MultipartEncoder(fields={'encoded_image': (fp.name, fp)})
r = requests.post('http://www.google.co.jp/searchbyimage/upload',
data=m,
headers={'Content-Type': m.content_type, 'User-Agent': user_agent})
if r.status_code == 200:
return r.url
else:
return 0
def main():
image = appex.get_attachments()[0]
if imghdr.what(image):
url = search_by_image(open(image, 'rb'))
if url:
UIApplication.sharedApplication()._openURL_(nsurl(url))
if appex.is_running_extension():
main()
search_by_image ()
, et en cas de succès, l'url du résultat de la recherche sera renvoyée.Pythonista3 a un module appelé appex qui peut utiliser les données reçues dans la feuille partagée et ainsi de suite, et cela obtiendra le fichier image de la pellicule.
Si c'est vrai, je pensais que je pouvais obtenir le chemin de l'image avec ʻappex.get_file_path () , mais je ne pouvais pas l'obtenir, donc ʻAppex.get_attachments ()
est utilisé pour extraire le chemin de la première pièce jointe.
MultipartEncoder Je dois utiliser multipart / post pour télécharger des images, ce dont je ne suis pas sûr. Apparemment, il existe un package utile appelé requests_toolbelt. Cependant, les premiers Pythonista 3 n'avaient pas requests_toolbelt. StaSh y joue un rôle actif. Maintenant que vous pouvez utiliser pip, je l'ai installé à partir d'ici.
Je fais webbrowser.open ()
pour ouvrir l'url, mais apparemment cela ne fonctionne pas à partir du partage.
Tout d'abord, activez la fonction de pont vers Objective-C avec from objc_util import *
.
Ensuite, en appelant ʻUIApplication.sharedApplication () .openURL (nsurl (url)) `, vous pouvez ouvrir l'url dans Safari.
Je ne comprends pas le mécanisme de cette zone, mais en l'utilisant, il est possible d'ouvrir une application différente en utilisant Safari ou le schéma d'URL de la feuille partagée.
Ensuite, je pense que ce serait bien si SearchByImage pouvait être utilisé à partir des images qui sont arrivées sur Twitter.
Recommended Posts