Выполнять скриншоты с произвольными интервалами с помощью Python?

5

Я работаю над проектом, чтобы делать скриншоты рабочего стола и загружать изображения на сервер. Я хочу разработать приложение для python, когда пользователь запускает это приложение, он начнет снимать скриншоты в случайном интервале, например, между 2-5 минутами интервала I есть код, который будет делать снимок экрана, и я проверил его на ubuntu, он работает правильно. Код для захвата снимка экрана

import gtk.gdk
import time

w = gtk.gdk.get_default_root_window()
sz = w.get_size()
print "The size of the window is %d x %d" % sz
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])

ts = time.time()
filename = "screenshot"
filename += str(ts)
filename += ".png"

if (pb != None):
    pb.save(filename,"png")
    print "Screenshot saved to "+filename
else:
    print "Unable to get the screenshot."

Я хочу запустить этот код в произвольном интервале 2-5 минут, как я могу разработать скрипт, который будет запускать этот код в потоке.

    
задан Subodh Ghulaxe 13.09.2013 в 12:20
источник

2 ответа

4
#!/usr/bin/env python

import gtk.gdk
import time
import random

while 1 :
    # generate a random time between 120 and 300 sec
    random_time = random.randrange(120,300)

    # wait between 120 and 300 seconds (or between 2 and 5 minutes)
    print "Next picture in: %.2f minutes" % (float(random_time) / 60)
    time.sleep(random_time)

    w = gtk.gdk.get_default_root_window()
    sz = w.get_size()
    print "The size of the window is %d x %d" % sz
    pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
    pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])

    ts = time.time()
    filename = "screenshot"
    filename += str(ts)
    filename += ".png"

    if (pb != None):
        pb.save(filename,"png")
        print "Screenshot saved to "+filename
    else:
        print "Unable to get the screenshot."
    
ответ дан Radu Rădeanu 13.09.2013 в 13:20
источник
2

У меня возникнет соблазн собрать эту внешнюю библиотеку, например PyScreenshot .

Позвольте ему справиться с тяжелой лифтингом (например, с разработкой соответствующего DM и экранного API), оставив вам изображение PIL, которое вы можете либо сохранить на диск, либо проиграть в качестве загрузки.

Существует множество ответов выполнение этого вручную при переполнении стека хотя, если вы настроены на DIY.

Что касается интервала, нужно ли его прореживать? Может ли сценарий не просто запускаться сам по себе, а затем после того, как он сделан снимок, сон в течение случайного периода (от 120 до 300 секунд)?

import random
import time

time.sleep(random.randrange(120, 300))
    
ответ дан Oli 13.09.2013 в 12:52