Da in Firefox auf meinem grossen iMac sehr viele Lesezeichen sind, habe ich mit AppleScript ein einfaches Programm geschrieben, es öffnet eine Internetseite, macht 30 Sekunden Pause, dann die nächste Seite, usw. Eine definierte Pausenzeit ist natürlich unpraktisch, besser wäre ein Befehl, dass nach Drücken einer Taste das Programm die nächste Seite öffnet, leider war auch der Apple-Support nicht in der Lage, mir zu helfen, vielleicht kann AppleScript das auch gar nicht.
Also habe ich mir heute Python runtergeladen, und auch xampp, und als absoluter Anfänger mal rumprobiert. Mit urlopen() scheint man Internetseiten öffnen zu können, aber ich bekomme immer die Meldung, da wäre etwas nicht definiert. Ich bräuchte also nur 3 Befehle, Öffnen einer Internetseite, Pause, weitermachen auf Tastendruck. Sieht ganz einfach aus, kann hier jemand helfen?
Danke und Gruss
Öffnen von Internetseiten mit Pause, weiter mit Taste
Code: Alles auswählen
import webbrowser
urls = ["http://www.python-forum.de",
"http://www.python.org"]
for url in urls:
webbrowser.open(url)
input(">>> Weiter? ")
Danke für die Antwort, funktioniert nur für die erste Internetseite, danach passiert nichts. So sieht jetzt mein Programm aus:
import webbrowser
urls = ["https://www.nzz.ch/"]
for url in urls:
webbrowser.open(url)
input(">>> Weiter? ")
urls = ["https://www.golem.de/ticker/"]
webbrowser.open(url)
import webbrowser
urls = ["https://www.nzz.ch/"]
for url in urls:
webbrowser.open(url)
input(">>> Weiter? ")
urls = ["https://www.golem.de/ticker/"]
webbrowser.open(url)
- sls
- User
- Beiträge: 480
- Registriert: Mittwoch 13. Mai 2015, 23:52
- Wohnort: Country country = new Zealand();
Bitte deinen Source-Code nächstes mal in Python-Code-Tags definieren. Was du gebaut hast funktioniert deshalb nicht, weil in deiner URL-Liste nur ein Element vorhanden ist. Was du wahrscheinlich möchtest ist das:
Edit: ich sehe gerade, dass das exakt das ist, was pixewakb dir schon schrieb.
Code: Alles auswählen
urls = ['https://golem.de', 'https://www.nzz.ch/']
for url in urls:
webbrowser.open(url)
input(">>Weiter?")
When we say computer, we mean the electronic computer.
Also mein Skript funktioniert, ich habe es gerade am Rechner getestet:wolfilein hat geschrieben: ↑Freitag 18. Mai 2018, 22:43 Da in Firefox auf meinem grossen iMac sehr viele Lesezeichen sind, habe ich mit AppleScript ein einfaches Programm geschrieben, es öffnet eine Internetseite, macht 30 Sekunden Pause, dann die nächste Seite, usw. Eine definierte Pausenzeit ist natürlich unpraktisch, besser wäre ein Befehl, dass nach Drücken einer Taste das Programm die nächste Seite öffnet[...]
Also habe ich mir heute Python runtergeladen, und auch xampp, und als absoluter Anfänger mal rumprobiert. Mit urlopen() scheint man Internetseiten öffnen zu können, aber ich bekomme immer die Meldung, da wäre etwas nicht definiert. Ich bräuchte also nur 3 Befehle, Öffnen einer Internetseite, Pause, weitermachen auf Tastendruck. Sieht ganz einfach aus, kann hier jemand helfen?
Code: Alles auswählen
>>> Weiter?
>>> Weiter?
>>>
Also:
xampp (nutze ich auch), hat nichts mit deinem Problem zu tun. Das ist ein Apache-Server lokal auf einem Rechner aufgesetzt.
urlopen() hat ebenfalls nichts mit Deinem Problem zu tun. Das hast Du wahrscheinlich aus dem urllib-package und das wird da genutzt, um Webseiten (HTML-Code) aus dem Netz zu laden ("parsen") und dann auszuwerten. Eine Seite im Browser kannst du damit nicht öffnen.
Mir ist dein Fehler nicht klar, ich habe aber auch keine iMac-Erfahrung: Wenn Du 'mein' Skript in IDLE ausführst, dann siehst du die Python-Shell, die von Dir eine Eingabe erwartet, wenn Du das Skript direkt durch Doppelklick (unter Windows) startest, dann siehst du ein Konsolenfenster (weiß auf schwarz) und wirst um eine Tasteneingabe gebeten. Du hättest hier schon die Python-Datei von skriptname.py nach skriptname.pyw umbenennen müssen, um die Abfrage nicht zu sehen, was ich hier nicht erwarte. Dass der webbrowser-Schnipsel eine Seite öffnet, spricht dagegen, dass das Modul auf einem Mac nicht funktioniert.
Ich bin mir nicht sicher, was Dir vorschwebt. Eine Zeitsteuerung wäre m. E. auch einfach zu realisieren (habe ich auch schon mal gemacht); eine Abfrage einer Tasteneingabe ohne Eingabe in die Konsole (Stichwort "Key logger") ist in Python möglich, ich würde obigen Quellcode aber als normale Lösung für das Problem bezeichnen.
Mal zu deinem Quelltext:
Code: Alles auswählen
import webbrowser #1
urls = ["https://www.nzz.ch/"] #2
for url in urls: #3
webbrowser.open(url) #4
input(">>> Weiter? ") #5
urls = ["https://www.golem.de/ticker/"] #6
webbrowser.open(url) #7
(Ganz verstehe ich Dein Problem noch nicht.)
Danke für die Antwort. Als blutiger Anfänger habe ich keine Ahnung von Python-Tags, habe etwas gefunden mit Ctrl-Shift-v, aber ich sehe hier keinen Effekt.
Was ich erreichen möchte, hatte ich schon ganz am Anfang geschrieben, viele Webseiten nacheinander öffnen, aber nicht mit Zeitsteuerung (wie es bereits mit Apple-Script läuft), da ich manche Seiten schnell lese, andere nur überfliege, sondern auf Tastendruck soll sich die nächste Seite öffnen.
Mit diesem Code öffnet sich nur die erste Seite golem.de, danach kann ich jede beliebige Taste drücken, es passiert nichts mehr?? (Ansonsten sehe ich diese Frage "Weiter?" nur, wenn ich zurückgehe zu IDLE)
Fehlt hier nicht ein Befehl zur weiteren Programmausführung nach Tastendruck?
import webbrowser
urls = ['https://golem.de', 'https://www.nzz.ch/']
for url in urls:
webbrowser.open(url)
input(">>Weiter?")
Was ich erreichen möchte, hatte ich schon ganz am Anfang geschrieben, viele Webseiten nacheinander öffnen, aber nicht mit Zeitsteuerung (wie es bereits mit Apple-Script läuft), da ich manche Seiten schnell lese, andere nur überfliege, sondern auf Tastendruck soll sich die nächste Seite öffnen.
Mit diesem Code öffnet sich nur die erste Seite golem.de, danach kann ich jede beliebige Taste drücken, es passiert nichts mehr?? (Ansonsten sehe ich diese Frage "Weiter?" nur, wenn ich zurückgehe zu IDLE)
Fehlt hier nicht ein Befehl zur weiteren Programmausführung nach Tastendruck?
import webbrowser
urls = ['https://golem.de', 'https://www.nzz.ch/']
for url in urls:
webbrowser.open(url)
input(">>Weiter?")
- sls
- User
- Beiträge: 480
- Registriert: Mittwoch 13. Mai 2015, 23:52
- Wohnort: Country country = new Zealand();
Das ist richtig so, da das Browser-Fenster in den Vordergrund rückt. Was du noch implementieren musst ist ein Hintergrundprozess in deinem Skript der deine Tastatureingabe erkennt und die for-Schleife fortsetzt.
When we say computer, we mean the electronic computer.
Wechsel zurück zur Konsole von Idle und drücke dann auf die Frage "Weiter" einmal Enter, den Vorgang müsstest du für jede Seite wiederholen. Ich merke an, dass du die Fenster auch so nebeneinander anordnen kannst, dass das geht.
@sls: Hast du dazu ein Codebeispiel? Ich halte das für ziemlich ambitioniert und habe so etwas selbst noch nicht programmiert.
Zurück zu Idle wäre etwas umständlich, aber es funktioniert auch nicht, es kommt dann diese Meldung:
Traceback (most recent call last):
File "/Users/...../versuchneu.py", line 7, in <module>
input(">>Weiter?")
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
>>>
Es sollte doch möglich sein, dass das Programm auf Tastendruck weiterläuft??
Traceback (most recent call last):
File "/Users/...../versuchneu.py", line 7, in <module>
input(">>Weiter?")
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
>>>
Es sollte doch möglich sein, dass das Programm auf Tastendruck weiterläuft??
Ich habe mir mal ein GUI gestrickt, was einen Button oben links auf dem Desktop angezeigt hat und dort immer geblieben ist. Ich hatte dann dort Funktionalität reingepackt, die mir Screenshots erzeugt hat. Du müsstest die Pfadangabe unter PATH korrigieren und ein Icon.png ins Heimatverzeichnis des Tools packen.
Eine Routine, um Webseiten zu öffnen, müsste dann noch ergänzt werden. Die Steuerung würde dann per Klick auf einen Button erfolgen. Der Quellcode ist nicht gut, aber es hat damals mal seine Aufgabe erledigt.
BTW: [1] Abfangen von Benutzereingaben auf OS-Ebene unabhängig vom Fokus des Fensters, darauf liefe es m. E. hinaus, halte ich für sehr ambitioniert. [2] Ferner könntest du auch mal im Extensions-Shop deines Browsers schauen, ob es noch keine fertige Lösung gibt.
Eine Routine, um Webseiten zu öffnen, müsste dann noch ergänzt werden. Die Steuerung würde dann per Klick auf einen Button erfolgen. Der Quellcode ist nicht gut, aber es hat damals mal seine Aufgabe erledigt.
BTW: [1] Abfangen von Benutzereingaben auf OS-Ebene unabhängig vom Fokus des Fensters, darauf liefe es m. E. hinaus, halte ich für sehr ambitioniert. [2] Ferner könntest du auch mal im Extensions-Shop deines Browsers schauen, ob es noch keine fertige Lösung gibt.
Code: Alles auswählen
#!/usr/bin/env python
import tkinter as tk
class Winit(object):
PATH = "C:/Users/USERNAME/Desktop"
def __init__(self, fullscreen=True, noborder=True, width=500, height=30, x=0, y=0):
self.root = tk.Tk()
if fullscreen:
self.width = self.root.winfo_screenwidth()
self.height = self.root.winfo_screenheight()
self.x = 0
self.y = 0
else:
self.width = width
self.height = height
self.x = x
self.y = y
self.root.geometry("%dx%d+%d+%d" % (self.width, self.height, self.x, self.y))
self.root.wm_overrideredirect(noborder)
# oben halten
self.root.attributes("-topmost", True)
# Icon dazu
self.icon = tk.PhotoImage(file="Icon.png")
# Button dazu
# self.button = tk.Button(text='Print', command=self.callback) #self.root.quit
self.button = tk.Button(image=self.icon, relief="flat", command=self.callback) #self.root.quit
self.button.pack()
def run(self):
self.root.mainloop()
def callback(self):
# Hier kommt die Funktionalität rein
pass
if __name__ == '__main__':
Winit(False, True, 24, 24, 0, 0).run()
- sls
- User
- Beiträge: 480
- Registriert: Mittwoch 13. Mai 2015, 23:52
- Wohnort: Country country = new Zealand();
Ich bin gerade über die keyboard-lib gestolpert, eventuell kann der TE ja darauf aufbauen?
Erster shot:
Code: Alles auswählen
import keyboard
import webbrowser
URLS = [
"https://golem.de",
"https://python-forum.de"
]
for url in URLS:
webbrowser.open(url)
keyboard.wait('control+Enter')
When we say computer, we mean the electronic computer.
Es kommt die Meldung: No module named 'keyboard'
Vielleicht hängt das auch damit zusammen:
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
??
Vielleicht hängt das auch damit zusammen:
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
??
das Modul 'keyboard' ist noch nicht auf deinem Rechner installiert
bin PC User, keine Ahnung wie du aufm Mac die Konsole öffnest
aber dort sollte es mit
python3 -m pip install keyboard
klappen
bin PC User, keine Ahnung wie du aufm Mac die Konsole öffnest
aber dort sollte es mit
python3 -m pip install keyboard
klappen
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
pip install in der Konsole ging, aber jetzt kommt lange Fehlermeldung (1. Internetseite wird geöffnet):
Exception in thread Thread-1:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keyboard/__init__.py", line 292, in listen
_os_keyboard.listen(self.direct_callback)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keyboard/_darwinkeyboard.py", line 430, in listen
raise OSError("Error 13 - Must be run as administrator")
OSError: Error 13 - Must be run as administrator
Exception in thread Thread-1:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keyboard/__init__.py", line 292, in listen
_os_keyboard.listen(self.direct_callback)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keyboard/_darwinkeyboard.py", line 430, in listen
raise OSError("Error 13 - Must be run as administrator")
OSError: Error 13 - Must be run as administrator
Windows sagt: Öffnen der Datei geht nur als Admin. Also versuche doch mal als Admin auszuführen.
Oder du musst dir eine alternative einfallen lassen. Ggf eine GUI (zb minimiert im Hintergrund) mit einem Hotkey ansteuern um die Funktion durchzuführen
https://apple.stackexchange.com/questio ... pt-i-wrote stellt einen Workaround für Apple Script bereit.
Und wenn das nicht geht, kannst du ein pyobjc Programm schreiben, und darin einen globalen Shortcut definieren, der immer dein Programm erreicht. Auch ohne gefährliche Admin-Rechte!
https://stackoverflow.com/questions/113 ... x/11349005#
Und wenn das nicht geht, kannst du ein pyobjc Programm schreiben, und darin einen globalen Shortcut definieren, der immer dein Programm erreicht. Auch ohne gefährliche Admin-Rechte!
https://stackoverflow.com/questions/113 ... x/11349005#