好吧,我正在尝试创建一个程序,允许我的Gnome桌面的背景进入谷歌chromecast设备使用的壁纸流
目前我在Python中使用了一个循环函数,它使用selenium和Chrome webdriver来获取动态显示在这里的图像:
https://clients3.google.com/cast/chromecast/home/
我的功能和我想要的完全一样但是问题是>;每当我在浏览器中访问这个网站时,它开始以随机顺序显示随机的墙纸,似乎有很多可能的墙纸可供选择,但每当你重新加载页面时,它总是只显示大约5(最多)种不同的墙纸。。因为我的脚本在每个循环中重新加载页面,所以我只能从中获得大约5种不同的墙纸,而网站上应该有很多这样的墙纸
这就引出了一个问题:我是否可以使用selenium for Python以某种方式欺骗网站,使其认为我在网站上停留的时间超过了几秒钟,从而向我展示不同的墙纸
NB:我知道我也可以从非动态网站(如this one)获取墙纸,我已经找到了可以使用的墙纸,但现在的目标是真正进入实时Chromecast流。我搜索了一下是否有一个API,但是找不到,所以决定采用我目前的方法
我的当前代码:
import io
import os
from PIL import Image
from pyvirtualdisplay import Display
from random import shuffle
import requests
import sched
from selenium import webdriver
import subprocess
import time
s = sched.scheduler(time.time, time.sleep)
def change_desktop():
display = Display(visible=0, size=(800, 600))
display.start()
browser = webdriver.Chrome()
urllist = ["https://clients3.google.com/cast/chromecast/home/v/c9541b08", "https://clients3.google.com/cast/chromecast/home"]
shuffle(urllist)
browser.get(urllist[0])
element = browser.find_element_by_id("picture-background")
image_source = element.get_attribute("src")
browser.quit()
display.stop()
request = requests.get(image_source)
image = Image.open(io.BytesIO(request.content))
image_format = image.format
current_dir = os.path.dirname(os.path.realpath(__file__))
temp_local_image_location = current_dir + "/interactive_wallpaper." + image_format
image.save(temp_local_image_location)
subprocess.Popen(["/usr/bin/gsettings", "set", "org.gnome.desktop.background", "picture-uri", "'" + temp_local_image_location + "'"], stdout=subprocess.PIPE)
s.enter(30, 1, change_desktop())
s.enter(30, 1, change_desktop())
s.run()
目前没有回答
相关问题 更多 >
编程相关推荐