Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.41 KB | None | 0 0
  1. import tkinter as tk
  2. from PIL import Image, ImageTk
  3. import os
  4. import os.path
  5. import httplib2
  6. import urllib.request as urllib2
  7. import re
  8. import base36
  9.  
  10.  
  11. # CREATING MAIN-WINDOW
  12. class Main(tk.Frame):
  13. def __init__(self, _root):
  14. super().__init__(root)
  15. self.root = _root
  16. self.images = []
  17. self.image_buttons = {}
  18. if not os.path.exists('images'):
  19. os.makedirs('images')
  20. self.init_main()
  21.  
  22. def init_main(self):
  23. # CREATING TOOLBAR AND ITS LABELS, ENTRIES AND BUTTON(download)
  24. self.toolbar = tk.Frame(root, bg='#fafafa', bd=2, height=40)
  25. self.toolbar.pack(side=tk.TOP, fill=tk.X)
  26. self.refresh_image_temp = Image.open('button_refresh.jpg')
  27. self.refresh_image_temp = self.refresh_image_temp.resize((40, 40), Image.ANTIALIAS)
  28. self.refresh_image = ImageTk.PhotoImage(self.refresh_image_temp)
  29. self.button_refresh = tk.Button(self.toolbar, bg='#333', image=self.refresh_image,
  30. command=self.show_images)
  31. self.button_refresh.pack(side=tk.LEFT)
  32. self.label_last_url = tk.Label(self.toolbar, text='Последние символы URL: ', bg='#fafafa')
  33. self.label_last_url.pack(side=tk.LEFT)
  34. self.entry_last_url = tk.Entry(self.toolbar)
  35. self.entry_last_url.pack(side=tk.LEFT)
  36. self.label_amount_images = tk.Label(self.toolbar, text='Количество изображений: ', bg='#fafafa')
  37. self.label_amount_images.pack(side=tk.LEFT, padx=5)
  38. self.entry_amount_images = tk.Entry(self.toolbar)
  39. self.entry_amount_images.pack(side=tk.LEFT)
  40. self.button_download = tk.Button(self.toolbar, text='Скачать', bg='#fafafa', font='Arial 12')
  41. self.button_download.bind('<1>', lambda event: self.upload_files(self.entry_last_url.get(),
  42. self.entry_amount_images.get()))
  43. self.button_download.pack(side=tk.LEFT, padx=5)
  44. self.button_delete = tk.Button(self.toolbar, text='Удалить все', bg='#fafafa', font='Arial 12',
  45. command=self.delete_files)
  46. self.button_delete.pack(side=tk.LEFT, padx=5)
  47.  
  48. # CREATING SCROLLBAR, CANVAS, FRAME and PUT IMAGES INTO THE FRAME
  49. self.image_canvas = tk.Canvas(root)
  50. self.scroll_y = tk.Scrollbar(root, orient='vertical', command=self.image_canvas.yview)
  51. self.images_frame = tk.Frame(self.image_canvas)
  52. self.show_images()
  53. self.image_canvas.create_window(0, 0, anchor='nw', window=self.images_frame)
  54. self.image_canvas.update_idletasks()
  55. self.image_canvas.configure(scrollregion=self.image_canvas.bbox('all'), yscrollcommand=self.scroll_y.set)
  56. self.image_canvas.pack(fill='both', expand=True, side='left')
  57. self.scroll_y.pack(fill='y', side='right')
  58.  
  59. # PRINT PHOTOS TO WINDOW FROM DIRECTORY 'images'
  60. def show_images(self):
  61. self.clear_images_frame()
  62. counter = 0
  63. y = 1
  64. img_counter = 0
  65. self.images_list = [name for name in os.listdir('./images') if os.path.isfile('./images/'+name)]
  66. self.images = []
  67. for _img in self.images_list:
  68. try:
  69. self.img = Image.open('images/'+_img)
  70. except OSError:
  71. continue
  72. img_width = self.img.width
  73. img_height = self.img.height
  74. self.img = self.img.resize((158, 158), Image.BILINEAR)
  75. self.images.append(ImageTk.PhotoImage(self.img))
  76. if y == 7:
  77. y = 1
  78. counter += 1
  79. self.button_image = tk.Button(self.images_frame, image=self.images[img_counter])
  80. self.button_image.bind('<1>', self.open_image)
  81. self.image_buttons[self.button_image['image']] = (img_width, img_height, _img)
  82. self.button_image.grid(row=counter, column=y)
  83. y += 1
  84. img_counter += 1
  85.  
  86. # DELETE ALL FILES FROM 'IMAGES' DIRECTORY
  87. def clear_images_frame(self):
  88. list = self.images_frame.grid_slaves()
  89. for l in list:
  90. l.destroy()
  91.  
  92. # DOWNLOAD SCREENSHOTS FROM LIGHTSHOT VIA GENERATED URL
  93. def upload_files(self, last_url, amount):
  94. number = base36.loads(last_url)
  95. for _ in range(int(amount)):
  96. url = 'https://prnt.sc/{0}'.format(base36.dumps(number-1))
  97. number -= 1
  98. req = urllib2.Request(url, headers={'User-Agent': 'Magic Browser'})
  99. content1 = urllib2.urlopen(req).read().decode('utf-8')
  100. imgurl_temp = re.search(r'img .+src=".+" crossorigin', content1)
  101. img_url = re.search(r'http.+.png', imgurl_temp.group(0))
  102. if img_url != None:
  103. h = httplib2.Http('.cache')
  104. response, content = h.request(img_url.group(0))
  105. with open('./images/{0}.png'.format(base36.dumps(number)), 'wb') as out:
  106. out.write(content)
  107. self.redrawing_canvas()
  108.  
  109. def redrawing_canvas(self):
  110. self.image_canvas.destroy()
  111. self.scroll_y.destroy()
  112. self.images_frame.destroy()
  113. self.image_canvas = tk.Canvas(root)
  114. self.scroll_y = tk.Scrollbar(root, orient='vertical', command=self.image_canvas.yview)
  115. self.images_frame = tk.Frame(self.image_canvas)
  116. self.show_images()
  117. self.image_canvas.create_window(0, 0, anchor='nw', window=self.images_frame)
  118. self.image_canvas.update_idletasks()
  119. self.image_canvas.configure(scrollregion=self.image_canvas.bbox('all'), yscrollcommand=self.scroll_y.set)
  120. self.image_canvas.pack(fill='both', expand=True, side='left')
  121. self.scroll_y.pack(fill='y', side='right')
  122.  
  123. def delete_files(self):
  124. self.files = [file for file in os.listdir('./images')]
  125. for f in self.files:
  126. os.remove('./images/'+f)
  127. self.show_images()
  128.  
  129. def open_image(self, event):
  130. Child(event.widget['image'], self.image_buttons)
  131.  
  132.  
  133. # CREATING CHILD-WINDOW THAT MAKE IMAGE FULL SIZE
  134. class Child(tk.Toplevel):
  135. def __init__(self, _image_, image_buttons):
  136. tk.Toplevel.__init__(self)
  137. self._image_ = _image_
  138. self.image_buttons = image_buttons
  139. self.init_child()
  140.  
  141. def init_child(self):
  142. self.title('Image')
  143. self.w = self.image_buttons[self._image_][0]
  144. self.h = self.image_buttons[self._image_][1]
  145. while self.w > 1000 or self.h > 600:
  146. self.w = int(self.w*0.95)
  147. self.h = int(self.h*0.95)
  148. self.sw = int((root.winfo_screenwidth()-self.w)/2)
  149. self.sh = int((root.winfo_screenheight()-self.h)/2)
  150. self.geometry('{0}x{1}+{2}+{3}'.format(self.w+20, self.h+20, self.sw, self.sh))
  151. self.img = Image.open('images/'+self.image_buttons[self._image_][2])
  152. self.img = self.img.resize((self.w, self.h), Image.ANTIALIAS)
  153. self.image = ImageTk.PhotoImage(self.img)
  154. self.label_big_image = tk.Label(self, width=self.w, height=self.h, image=self.image)
  155. self.label_big_image.pack()
  156.  
  157.  
  158. # CREATING ROOT-WINDOW
  159. root = tk.Tk()
  160. app = Main(root)
  161. app.pack()
  162. root.title('Lightshot stealer')
  163. sw = int((root.winfo_screenwidth()-1000)/2)
  164. sh = int((root.winfo_screenheight()-600)/2)
  165. root.geometry('{0}x{1}+{2}+{3}'.format(1000, 600, sw, sh))
  166. root.resizable(False, False)
  167. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement