Удалено кардрирование фотографии, теперь код каждый день меняет обои

This commit is contained in:
Данил 2022-07-07 20:38:02 +03:00
parent 9d2be872d5
commit b13b03657e
2 changed files with 9 additions and 41 deletions

45
main.py
View file

@ -1,13 +1,10 @@
import math
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import requests import requests
import ctypes import ctypes
import os import os
import urllib import urllib
import schedule
from PIL import Image
from screeninfo import get_monitors
class Nasa: class Nasa:
@ -17,59 +14,31 @@ class Nasa:
self.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) ' 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'} 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
self.photoName = "everydayphotonasa.jpg" self.photoName = "everydayphotonasa.jpg"
self.screen_size = (self.get_size_screen())
def download_photo(self): def download_photo(self):
full_page = requests.get(self.url, headers=self.headers) full_page = requests.get(self.url, headers=self.headers)
soup = BeautifulSoup(full_page.content, 'html.parser') soup = BeautifulSoup(full_page.content, 'html.parser')
lnk = str
for link in soup.select("img"): for link in soup.select("img"):
lnk = link["src"] lnk = link["src"]
print(f"Сохарняю картинку — {self.url + lnk}") print(f"Скачиваю картинку — {self.url + lnk}")
img = urllib.request.urlopen(self.url + lnk).read() img = urllib.request.urlopen(self.url + lnk).read()
out = open(self.photoName, "wb") out = open(self.photoName, "wb")
out.write(img) out.write(img)
out.close() out.close()
def get_size_photo(self):
image = Image.open(self.photoName)
width, height = image.size
return width, height
def get_size_screen(self):
for m in get_monitors():
width = m.width
height = m.height
return width, height
def set_wallpaper(self): def set_wallpaper(self):
path = os.path.abspath(self.photoName) path = os.path.abspath(self.photoName)
ctypes.windll.user32.SystemParametersInfoW(20, 0, path, 0) ctypes.windll.user32.SystemParametersInfoW(20, 0, path, 0)
def aspect_ratio(self, width, height):
k = math.gcd(width, height)
return width // k, height // k
def valid_image(self):
w_image, h_image = self.get_size_photo()
w_image, h_image = self.aspect_ratio(w_image, h_image)
w_screen, h_screen = self.aspect_ratio(self.screen_size[0], self.screen_size[1])
return w_image == w_screen and h_image == h_screen
def crop_image(self):
size_screen = self.get_size_screen()
img = Image.open(self.photoName)
img_crop = img.crop((0, 0, size_screen[0], size_screen[1]))
img_crop.save(self.photoName)
def start(self): def start(self):
self.download_photo() self.download_photo()
if not self.valid_image():
self.crop_image()
self.set_wallpaper() self.set_wallpaper()
if __name__ == "__main__": if __name__ == "__main__":
nasa = Nasa() schedule.every(1).days.do(Nasa().start)
nasa.start() while True:
schedule.run_pending()

View file

@ -1,4 +1,3 @@
beautifulsoup4~=4.11.1 beautifulsoup4==4.11.1
requests~=2.28.0 requests~=2.28.0
Pillow~=9.2.0 schedule~=1.1.0
screeninfo~=0.8