Re: Webcam-Bild automatisch als Desktop-Hintergrund?
Geizhals » Forum » Programmierung » Webcam-Bild automatisch als Desktop-Hintergrund? (45 Beiträge, 1392 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Re: Webcam-Bild automatisch als Desktop-Hintergrund?
30.12.2018, 09:55:12
So, jetzt hab ich eine funktionierende (beim ersten Aufruf ;-P ... Langzeitverhalten muss noch beobachtet werden) Lösung in Swift (der größte Sch..., den Apple je produziert hat), ohne cron und Einstellungen:


#!/usr/bin/swift

import Foundation
import AppKit

let baseURL = "https://www.foto-webcam.eu/webcam/wien/"

do {
    var iter=0
    while true {
        // MacOS apparently ignores setDesktopImageURL with unchanged URL m-(
        let localName = "wienbild-foto-webcam.eu."+String(iter)+".jpg"
        let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
        let filename = paths[0].appendingPathComponent(localName)
        if let url = URL(string: baseURL) {
            let data = try String(contentsOf: url)
            // guessing what the HTML looks like is as bad as guessing
            // what the image URL is?
            let regex = try! NSRegularExpression(pattern: "\"hugeimg\":\"([a-z0-9_./\\\\]+)\"")
            let range = NSRange(location: 0, length: data.utf16.count)
            let matched = regex.firstMatch(in: data, range: range)
            let m = data[Range(matched!.range(at: 1), in:data)!]
            let url = baseURL + m.replacingOccurrences(of: "\\", with: "")
            print(url)
            let imgurl = URL(string: url)!
            let img = try? Data(contentsOf: imgurl)
            if (img != nil)  {
                try? img!.write(to: filename)

                let workspace = NSWorkspace.shared
                if let screen = NSScreen.main  {
                    try workspace.setDesktopImageURL(filename, for: screen, options: [NSWorkspace.DesktopImageOptionKey.imageScaling:1])
                }
            }
        }
        sleep(3600)
        try? FileManager.default.removeItem(at: filename)
        iter+=1
    }
} catch {
   print(error)
}



Das als "wienbg.command" abspeichern, ausführbar machen ("chmod u+x wienbg.command" im Terminal) und dann im Finder wie eine Anwendung per Doppelklick starten.

Swift 4 muss installiert sein.

Das läuft dann ewig und holt sich stündlich ein neues Bild und schreibt es ins "Dokumente" directory mit Dateinamen wienbild-foto-webcam.eu.jpg, setzt es dann als Hintergrund. Das Terminal-Fenster kannst du minimieren oder so... Es zeigt die geladenen URLs an.

Allfällige crontab-Einträge früherer Versionen bitte löschen und natürlich sollte in "Einstellungen" kein periodisches Wechseln des Hintergrunds eingestellt sein.

Edit: aber jetzt wirklich. Das blöde MacOS ignoriert jede Anforderung, das Bild zu setzen, wenn sich der Dateiname nicht ändert. m-(
…………………………………………………………………………………………………………………………………………………………………
Wenn ich auf Provokationen nicht reagiere, liegt das wohl daran, dass ich sie dank "Plonk" nicht sehen kann.
04.01.2019, 13:07 Uhr - Editiert von Lazy Jones, alte Version: hier
Antworten PM Alle Thread Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung