Starlio-web/main.py

75 lines
2.7 KiB
Python

from win10toast import ToastNotifier
from bs4 import BeautifulSoup
from elevate import elevate
import requests
import ctypes
import os
import urllib
import schedule
import winreg as reg
import getpass
class Nasa:
def __init__(self):
self.url = "https://apod.nasa.gov/apod/"
self.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
self.photoName = "everydayphotonasa.jpg"
self.toaster = ToastNotifier()
def autorun(self):
path = os.path.dirname(os.path.realpath(__file__))
address = os.path.join(path, "main.exe")
key_value = "Software/Microsoft/Windows/CurrentVersion/Run"
user = getpass.getuser()
key = reg.OpenKey(reg.HKEY_LOCAL_MACHINE, key_value, 0, reg.KEY_ALL_ACCESS)
reg.SetValueEx(key, user, 0, reg.REG_SZ, address)
reg.CloseKey(key)
self.toaster.show_toast("EveryDayPhotoNasa",
"Программа добавлена в автозапуск.",
duration=5,
icon_path=None)
def download_photo(self):
try:
full_page = requests.get(self.url, headers=self.headers)
soup = BeautifulSoup(full_page.content, 'html.parser')
lnk = str
for link in soup.select("img"):
lnk = link["src"]
img = urllib.request.urlopen(self.url + lnk).read()
out = open(self.photoName, "wb")
out.write(img)
out.close()
self.set_wallpaper()
except requests.exceptions.ConnectionError:
return self.toaster.show_toast("EveryDayPhotoNasa",
"Не получилось подключится к сайту, проверьте подключение к интернету.",
duration=5,
icon_path=None)
def set_wallpaper(self):
path = os.path.abspath(self.photoName)
ctypes.windll.user32.SystemParametersInfoW(20, 0, path, 0)
self.toaster.show_toast("EveryDayPhotoNasa",
"Обои поставлены.",
duration=5,
icon_path=None)
def start(self):
self.download_photo()
if ctypes.windll.shell32.IsUserAnAdmin() != 0:
elevate(show_console=False, graphical=False)
self.autorun()
if __name__ == "__main__":
nasa = Nasa()
nasa.start()
schedule.every(1).day.do(nasa.start)
while True:
schedule.run_pending()