Screenshot machen und hochladen
Hallo,
ich möchte gerne ein Script schreiben dass ein Screenshot des aktuellen Bildschirms macht und an eine Webseite sendet (per POST).
Jetzt habe ich bereits ein modul namens frog gefunden dass eine funktion names snapshot hat - die das Bildschirmfoto macht (frog.py Zeile 583).
Was muss ich jetzt tun? Bin ein python-neuling
ich möchte gerne ein Script schreiben dass ein Screenshot des aktuellen Bildschirms macht und an eine Webseite sendet (per POST).
Jetzt habe ich bereits ein modul namens frog gefunden dass eine funktion names snapshot hat - die das Bildschirmfoto macht (frog.py Zeile 583).
Was muss ich jetzt tun? Bin ein python-neuling
Da bin ich dabei.
Bin mittlerweile soweit:
Es kommt aber leider immer folgender Fehler:
Bin mittlerweile soweit:
Code: Alles auswählen
import frog
pool = Pool()
irfanpath = "C:\\Program Files\\IrfanView"
snapdict = pool.snapinfo(irfanpath)
success = False
if "gif" in snapdict["format"]:
filename = pool.snapshot("pool.gif",path=irfanpath)
else:
filename = pool.snapshot("pool.jpg",path=irfanpath)
if filename:
print("Screenshot gespeichert als Datei %s" %filename)
pool.ready()
Es kommt aber leider immer folgender Fehler:
Traceback (most recent call last):
File "C:\Users\*******\Desktop\********\cloudwin.py", line 3, in <module>
pool = Pool()
NameError: name 'Pool' is not defined
Zuletzt geändert von Flokass am Montag 19. Juli 2010, 12:39, insgesamt 1-mal geändert.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Was ist denn "Pool" für eine Klasse? Aus welchem Modul stammt sie?
Für Pfadangaben solltest Du Raw-Strings nutzen:
Damit handelst Du Dir keinen Escapin-Ärger ein.
Es gibt hier Python-Code-Tags! Damit hast Du Syntaxhighlighting. Außerdem stimmen Deine Einrückungen nicht!
Für Pfadangaben solltest Du Raw-Strings nutzen:
Code: Alles auswählen
IRFANPATH = r"C:\Program Files\IrfanView"
Es gibt hier Python-Code-Tags! Damit hast Du Syntaxhighlighting. Außerdem stimmen Deine Einrückungen nicht!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Tja, wo soll er auch herkommen der Pool? Ein Blick in den Code von frog.py zeigt mir, dass es dort eine Klasse namens Pool gibt. Dein Code müsste also eher wie folgt aussehen:Flokass hat geschrieben:Es kommt aber leider immer folgender Fehler:Code: Alles auswählen
import frog pool = Pool()
Traceback (most recent call last):
File "C:\Users\*******\Desktop\********\cloudwin.py", line 3, in <module>
pool = Pool()
NameError: name 'Pool' is not defined
Code: Alles auswählen
from frog import Pool
pool = Pool()
Code: Alles auswählen
import frog
pool = frog.Pool()
Vielen Dank!
Der Fehler ist weg. Ich habe jetzt:
Ergibt:
So also hiermit kann man einen Browser öffnen:
Nun ist die Frage ob es möglich ist mit dem Befehl auch das entsprechende Bild per POST mitzugeben. Ich denke nein. Also muss ich wahrscheinlich den IE einbetten oder?
Der Fehler ist weg. Ich habe jetzt:
Code: Alles auswählen
import frog
from frog import Pool
pool = Pool()
irfanpath = r"C:\Program Files\IrfanView"
snapdict = pool.snapinfo(irfanpath)
success = False
if "gif" in snapdict["format"]:
filename = pool.snapshot("pool.gif",path=irfanpath)
else:
filename = pool.snapshot("pool.jpg",path=irfanpath)
if filename:
print("Screenshot gespeichert als Datei %s" %filename)
pool.ready()
Jetzt muss ich es hinbekommen dass er das ganze an eine Webadresse sendet. Bisher habe ich nur etwas gefunden wie man den Standartwebbrowser öffnet der dazu nach möglichkeit auch verwendet werden soll. Allerdings wäre es auch etwas ein kleines Fenster anzuzeigen indem der Internet Explorer eingebunden ist.Screenshot gespeichert als Datei pool.gif
So also hiermit kann man einen Browser öffnen:
Code: Alles auswählen
import webbrowser
webbrowser.open('http://google.com')
Zuletzt geändert von Flokass am Montag 19. Juli 2010, 12:39, insgesamt 1-mal geändert.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Guck doch einfach in die Doku! Da gibts iirc auch viele schöne Beispiele!Flokass hat geschrieben:kannst du mir sagen wie der code sein muss damit er an eine webseite das bild sendet?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ja, ich weiß hier gibts einige Beispiele. Aber leider kann ich damit nicht viel anfangen.
Also soweit bin ich:
Dort wo "hier" steht muss denke ich mal jetzt das Bild per POST rein oder? Ich gehe mal davon aus. Wie mache ich das jetzt genau? Hier steht was von add_data(data)... Weiter komme ich leider nicht
Also soweit bin ich:
Code: Alles auswählen
import urllib2
req = urllib2.Request('http://www.example.com/')
# hier
r = urllib2.urlopen(req)
Zuletzt geändert von Flokass am Montag 19. Juli 2010, 12:40, insgesamt 2-mal geändert.
Okay mittlerweile bin ich so weit:
Das macht halt a) das Screenshot und speichert es in der pool.gif ab und stellt b) eine Verbindung zu example.com her und gibt dann alles wieder was dort steht. Jetzt muss ich aber noch ein was wissen: wie mache ich es jetzt dass er die pool.gif anhängt per POST? Das habe ich leider nicht geschafft
Code: Alles auswählen
import frog
from frog import Pool
pool = Pool()
irfanpath = r"C:\Program Files\IrfanView"
snapdict = pool.snapinfo(irfanpath)
success = False
if "gif" in snapdict["format"]:
filename = pool.snapshot("pool.gif",path=irfanpath)
else:
filename = pool.snapshot("pool.jpg",path=irfanpath)
if filename:
print("Screenshot gespeichert als Datei %s" %filename)
pool.ready()
import urllib2
req = urllib2.urlopen('http://example.com')
# hier
r = urllib2.urlopen(req)
print r.read()
Zuletzt geändert von Flokass am Montag 19. Juli 2010, 12:38, insgesamt 1-mal geändert.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ich hatte es zwar schon erwähnt, aber noch einmal:
Es gibt eine spezielle Code-Formatierung für Python [ python]Dein Code [ /python] oder auch [ code=py] ... [ /code]; ohne die führenden Leerzeichen natürlich. Für ersteres gibts sogar einen extra Button
Deine Einrückungen stimmen so nicht (if... else-Teile)!
Schau Dir doch mal in der Doku zur urllib2 die Beispiele 2 und 3 an. Das sollte es doch sein denke ich mal. Alternativ kommt man ggf. auch mit der httplib weiter.
Es gibt eine spezielle Code-Formatierung für Python [ python]Dein Code [ /python] oder auch [ code=py] ... [ /code]; ohne die führenden Leerzeichen natürlich. Für ersteres gibts sogar einen extra Button
Deine Einrückungen stimmen so nicht (if... else-Teile)!
Schau Dir doch mal in der Doku zur urllib2 die Beispiele 2 und 3 an. Das sollte es doch sein denke ich mal. Alternativ kommt man ggf. auch mit der httplib weiter.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Laut PEP8 sind die Einrückungen bei Python 4 Spaces
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Okay also jetzt bin ich total verwirrt. Also der Sinn der Sache ist dass ich vorerst irgendetwas; später dann das Bild an dieses PHP-Script sende:
Das ist ein Test ob es geht. Also muss ich jetzt in die Post-Variable "data" irgendetwas senden. Wie mache ich das? Habe mein Script momentan wie folgt aufgebaut aber leider kommt immer "nichts" zurück.
Code: Alles auswählen
<?php
if($_POST["data"] == $null) {echo "nichts"; }
else{ echo "etwas"; }
?>
Code: Alles auswählen
import urllib2
req = urllib2.Request(url='http://example.com/script.php',
data='irgendetwas')
r = urllib2.urlopen(req)
print r.read()
Bin mittlerweile weiter gekommen.
Soo jetzt bin ich gerade dabei zu versuchen die Datei pool.gif anstatt von "irgendetwas" zu senden.
Code: Alles auswählen
import urllib2
import urllib
req = urllib2.Request(url='http://example.com/script.php',
data=urllib.urlencode({"data": "irgendetwas"}))
# hier
r = urllib2.urlopen(req)
print r.read()
Code: Alles auswählen
import frog
from frog import Pool
Entweder du schreibst
Code: Alles auswählen
import frog
pool = frog.Pool()
Code: Alles auswählen
from frog import Pool
pool = Pool()
Dies ist keine Signatur!