Advertisement
Guest User

WykopowaTapeta

a guest
Sep 3rd, 2015
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.01 KB | None | 0 0
  1. #! python3
  2.  
  3. import requests, bs4, pprint, os, datetime, ctypes, random, math
  4. from PIL import Image
  5. from time import sleep
  6.  
  7. def ZmienTapete(pathZdj):
  8.        
  9.     SPI_SETDESKWALLPAPER = 20
  10.     ctypes.windll.user32.SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, pathZdj, 1 | 2)
  11.  
  12. print('''
  13. Nazwa = wykopowaTapeta
  14. Wersja = v02.2015.09.03
  15. Autor = pawelpel
  16. ''')
  17.  
  18. #Pobieram nazwe uzytkownika z pliku txt
  19. try:
  20.     nazwaLudzia = open(os.getcwd()+'\\nazwaUzytkownika.txt')
  21.     ludzName = nazwaLudzia.read()
  22. except FileNotFoundError:
  23.     nazwaLudzia = open(os.getcwd()+'\\nazwaUzytkownika.txt', 'w')
  24.     nazwaLudzia.write('bezoka')
  25.     ludzName = 'bezoka'
  26.     print('Tworze plik .txt z nazwa uzytkownika: ' + ludzName + '.')
  27.    
  28. nazwaLudzia.close()
  29. print('Odczytuje nazwe uzytkownika.')
  30. print('Odczytano uzytkownika: ' + ludzName)
  31.    
  32. #Tworze liste url'li do zdjęć z podanej strony
  33. while True:
  34.     try:
  35.         print('Laczenie z internetem...')
  36.         res = requests.get('http://www.wykop.pl/ludzie/'+ludzName)
  37.         res.raise_for_status()
  38.         wykopSoup = bs4.BeautifulSoup(res.text, "html.parser")
  39.         print('Polaczono.')
  40.         break
  41.     except:
  42.         print('****************************************************************')
  43.         print('Sprawdz poloczenie z internetem lub czy dany użytkownik istnieje.')
  44.         print('Sprobowac jeszcze raz? Nacisnij: Y - tak. <Inny klawisz> - nie.')
  45.         odp = input()
  46.         if odp == ('y' or 'Y'):
  47.             nazwaLudzia = open(os.getcwd()+'\\nazwaUzytkownika.txt')
  48.             ludzName = nazwaLudzia.read()
  49.             nazwaLudzia.close()
  50.             continue
  51.         else:
  52.             raise SystemExit
  53.        
  54. urlList = []
  55.  
  56. print("Pobieram url'e.")
  57. for img in wykopSoup.select('li img'):
  58.     if str(img.get('data-original'))[:9] == 'http://x3':
  59.         #Drukowanie url'li
  60.         #print(img.get('data-original'))
  61.         urlList.append(str(img.get('data-original')))
  62.  
  63. #Tworze folder na zdj
  64. loc = os.getcwd()
  65. nowyFolder = loc + '\\Zdjecia ' + str(datetime.datetime.now())[:10]
  66. try:
  67.     os.makedirs(nowyFolder)
  68.     print('Tworze nowy folder.')
  69. except FileExistsError:
  70.     print('Nie towrze nowego folderu.')
  71.        
  72.    
  73. #Pobieram zdjecia do folderu
  74. print('Pobieram zdjecia do folderu.')
  75. for i in range(len(urlList)):
  76.     zdjRes = requests.get(urlList[i])
  77.     zdjRes.raise_for_status()
  78.  
  79.     zdj = open(os.path.join(nowyFolder, os.path.basename(str(i+1))+'.jpg'), 'wb')
  80.     for i in zdjRes.iter_content(10000000000):
  81.         zdj.write(i)
  82.     zdj.close()
  83. print('Pobralem ' + str(len(urlList)) + ' zdjec.')
  84.  
  85. #Rozdzielczosc ekranu
  86. user32 = ctypes.windll.user32
  87. screensize = user32.GetSystemMetrics(0), user32.GetSystemMetrics(1)
  88. width, height = screensize
  89.  
  90. #Ile zdjec na kolazu?
  91. if len(urlList) > 16:
  92.     iloscZdj = 16
  93. elif len(urlList) > 4:
  94.     iloscZdj = 4
  95. else:
  96.     print('****************************************************************')
  97.     print('Niewystarczajaco zdjec do stworzenia kolazu!')
  98.     print('Czy chcesz ustwic na tapete losowe zdjecie z pobranych?')
  99.     print('Nacisnij: Y - tak, <Inny klawisz> - wyjscie z programu')
  100.     print('Odp: ', end='')
  101.     odp2 = input()
  102.     if odp2 == ('Y' or 'y'):
  103.         ZmienTapete(nowyFolder + '\\' + str(random.randint(1, len(urlList))) + '.jpg')
  104.     else:
  105.         raise SystemExit
  106.    
  107. iloscZdjX= math.sqrt(iloscZdj)
  108. iloscZdjY= math.sqrt(iloscZdj)
  109.  
  110. #Funkcja resize zdjecia
  111. def DostosujZdjDoRozmiaruEkranu(sciezkaZdj):
  112.     szerokosc, wysokosc = screensize
  113.     szerokosc = int(szerokosc/(iloscZdjX))
  114.     wysokosc = int(wysokosc/(iloscZdjY))
  115.     zdj = Image.open(sciezkaZdj)
  116.     nowezdj = zdj.resize((szerokosc, wysokosc))
  117.     nowezdj.save(nowyFolder+'\\'+os.path.basename(sciezkaZdj))
  118.  
  119. ktoreZdj = []
  120. while True:
  121.     try:
  122.         losoweZdj = random.randint(1,len(urlList))
  123.         if losoweZdj not in ktoreZdj:
  124.             ktoreZdj.append(losoweZdj)
  125.             if len(ktoreZdj) == iloscZdj:
  126.                 break
  127.     except ValueError:
  128.         print('ValueError, probuje ponownie...')
  129.         sleep(5)
  130.         continue
  131.  
  132. #Przejscie przez wszystkie zdj do kolazu
  133. for k in ktoreZdj:
  134.     DostosujZdjDoRozmiaruEkranu(nowyFolder + '\\' + str(k) + '.jpg')
  135.  
  136. #tworzenie podstawy kolazu
  137. tapeta = Image.open(nowyFolder +'\\1.jpg')
  138. nowaTapeta = tapeta.resize((width,height))
  139. nowaTapeta.save(nowyFolder + '\\nowaTapeta.jpg')
  140.  
  141. print('Tworze kolaz...')
  142. i = 0
  143. nowaTapeta = Image.open(nowyFolder + '\\nowaTapeta.jpg')
  144. for left in range(0, width, int(width/iloscZdjX)):
  145.     for top in range(0, height, int(height/iloscZdjY)):
  146.         if i >= 16:
  147.             break
  148.         #Drukowanie wybranych pozycji czesci kolazu
  149.         #print(left, top)
  150.         czescKolazu = Image.open(nowyFolder+'\\'+str(ktoreZdj[i])+'.jpg')
  151.         czescKolazu.copy()
  152.         nowaTapeta.paste(czescKolazu, (left, top))
  153.         i = i+1
  154. print('Zapisuje nowa tapeta.')    
  155. nowaTapeta.save(nowyFolder + '\\nowaTapeta.jpg')
  156. print('Ustawiam nowa tapete.')        
  157. ZmienTapete(nowyFolder + '\\nowaTapeta.jpg')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement