Zeigen Sie die Ergebnisse in Safari mit Googles SearchByImage aus den in der iOS-Kamerarolle gespeicherten Bildern an.
Pythonista3 verfügt über eine Funktion, mit der Sie Ihr eigenes Python-Skript über das freigegebene Blatt der Anwendung aufrufen können. Verwenden Sie diese Funktion. Weitere Informationen zu Pythonista 3 finden Sie in diesem Artikel von Hitoburogu ([Über die Attraktivität der revolutionären Fertigungsumgebung "Pythonista 3", die unter iOS ausgeführt wird) (http://hitoriblog.com/?p=42145)). Es ist gewesen. Pythonista3 kann Python2.7 und Python3.5 verwenden, aber dieses Mal habe ich es in Python3.5 geschrieben.
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()
Pythonista3 verfügt über ein Modul namens Appex, das die auf dem freigegebenen Blatt empfangenen Daten usw. verwenden kann. Dadurch wird die Bilddatei der Kamerarolle abgerufen.
Wenn das stimmt, dachte ich, ich könnte den Pfad zum Bild mit "appex.get_file_path ()" abrufen, aber ich konnte ihn nicht abrufen
Ich verwende appex.get_attachments ()
, um den Pfad aus dem ersten Anhang zu extrahieren.
MultipartEncoder Ich muss Multipart / Post verwenden, um Bilder hochzuladen, was ich nicht sicher bin. Anscheinend gibt es ein nützliches Paket namens request_toolbelt. Das frühe Pythonista 3 hatte jedoch keinen request_toolbelt. StaSh spielt dort eine aktive Rolle. Jetzt, da Sie pip verwenden können, habe ich es von hier aus installiert.
Ich mache "webbrowser.open ()", um die URL zu öffnen, aber anscheinend funktioniert es nicht beim Teilen.
Aktivieren Sie zunächst die Bridge-Funktion für Objective-C mit from objc_util import *
.
Durch Aufrufen von "UIApplication.sharedApplication () .openURL (nsurl (url))" können Sie die URL in Safari öffnen.
Ich verstehe den Mechanismus dieses Bereichs nicht, aber wenn Sie diesen verwenden, können Sie eine andere Anwendung öffnen, indem Sie Safari oder das URL-Schema aus dem freigegebenen Blatt verwenden.
Als nächstes denke ich, es wäre schön, wenn SearchByImage aus den Bildern verwendet werden könnte, die auf Twitter kamen.
Recommended Posts