Advertisement
Guest User

Untitled

a guest
Dec 29th, 2017
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 22.60 KB | None | 0 0
  1. from tkinter import Button, Checkbutton, Radiobutton, Frame, Tk, GROOVE, SOLID, Label, StringVar, IntVar, Entry, Text, END, DISABLED, Toplevel, Message
  2. from tkinter.ttk import Progressbar, Treeview, Scrollbar
  3. import tkinter.font as tkFont
  4. from urllib.request import urlopen, urlretrieve
  5. from json import loads
  6. import datetime
  7. from time import sleep
  8. from os import getenv, mkdir, chdir, system
  9. import _thread
  10. from win32clipboard import OpenClipboard, GetClipboardData, CloseClipboard
  11. from requests import get
  12. from multiprocessing import Queue
  13.  
  14. global users
  15. global table_
  16. global proxy
  17. global header_
  18.  
  19.  
  20. proxy = []
  21.  
  22. homePath = getenv('HOMEPATH')
  23. path = homePath + "\AppData\Roaming\Jotler"
  24.  
  25. apikey = ''
  26. try:
  27.     mkdir(path)
  28. except:
  29.     pass
  30. chdir(path)
  31.  
  32.  
  33.  
  34. root=Tk()
  35. root.title('Jotler')
  36. root.geometry('220x125+100+100') # ширина=500, высота=400, x=300, y=200
  37. root.resizable(False, False) # размер окна может быть изменён только по горизонтали
  38.  
  39. relief = GROOVE
  40. relief_ = SOLID
  41.  
  42.  
  43. users = []
  44. # /*/~~~~~~~~~~~ LOGIN ~~~~~~~~~~~~~
  45. def log_in(login, password, remember, r):
  46.     login = str(login)
  47.     password = str(password)
  48.     if r == 0:
  49.         if remember == 1:
  50.             open('login.txt', 'w+').write(login + '\n' + password)
  51.  
  52.     url = r'http://mailf.tk/check.php?login=' + login + '&password=' + password
  53.     result = urlopen(url).read().decode('utf-8')
  54.     if r == 0 and remember == 1 and result == 1:
  55.         open('login.txt', 'w+').write(login+'\n'+password)
  56.     if result == '1':
  57.         programm()
  58.     else:
  59.         result_label['text'] = 'Error!'
  60.  
  61. def login():
  62.  
  63.     url = 'http://mailf.tk/check.php?login=' + login + '&password=' + password
  64.     result = urlopen(url).read().decode('utf-8')
  65.  
  66.     if result == '1':
  67.         programm()
  68.     else:
  69.         result_label['text'] = 'Error!'
  70.  
  71.     def programm():
  72.         try:
  73.             frame1.destroy()
  74.         except:
  75.             pass
  76.         root.geometry('270x900+100+100')
  77.         frame2 = Frame(root, bd=5, width=250, height=105, highlightbackground='black', highlightthickness=1, bg='white')
  78.         whatscan = Label(frame2, text='Game: ', bg='white')
  79.         selectgame = StringVar(frame2, '2')
  80.         selectgame_rbtn_dota = Radiobutton(frame2, text='Dota 2', variable=selectgame, value='1', bg='white',
  81.                                            tristatevalue=0)
  82.         selectgame_rbtn_cs = Radiobutton(frame2, text='CS:GO', variable=selectgame, value='2', bg='white',
  83.                                          tristatevalue=0)
  84.  
  85.         source_lbl = Label(frame2, text='Source: ', bg='white')
  86.         source = StringVar(frame2, '2')
  87.         source_group = Radiobutton(frame2, text='Steam group', variable=source, value='1', bg='white', tristatevalue=0)
  88.         source_friend = Radiobutton(frame2, text='Friend list', variable=source, value='2', bg='white', tristatevalue=0)
  89.         id_lbl = Label(frame2, text='ID: ', bg='white')
  90.         id_txt = Entry(frame2, width=30, relief=relief_, bg='white')
  91.         scan_btn = Button(frame2, text='Start scanning', width=32, relief=relief_, bg='white', bd=1)
  92.  
  93.         source_friend.select()
  94.  
  95.         frame2.place(x=10, y=10)
  96.         whatscan.place(x=0, y=0)
  97.         selectgame_rbtn_dota.place(x=50, y=0)
  98.         selectgame_rbtn_cs.place(x=110, y=0)
  99.         source_lbl.place(x=0, y=20)
  100.         source_group.place(x=50, y=20)
  101.         source_friend.place(x=150, y=20)
  102.         id_lbl.place(x=0, y=40)
  103.         id_txt.place(x=50, y=42)
  104.         scan_btn.place(x=0, y=70)
  105.  
  106.         pb_hd = Progressbar(root, orient='horizontal', mode='determinate', length=250)
  107.  
  108.         pb_hd.place(x=10, y=120)
  109.  
  110. def check_acc():
  111.     url = 'http://mailf.tk/check.php?login=' + login + '&password=' + password
  112.     a = urlopen(url).read().decode('utf-8')
  113.     return a
  114.  
  115. def sort_(arr):
  116.     temp = 0
  117.     for i in range(0, len(arr)):
  118.         for j in range(0, len(arr)-1):
  119.             if (arr[j][1] > arr[j + 1][1]):
  120.                 temp = arr[j]
  121.                 arr[j] = arr[j + 1]
  122.                 arr[j + 1] = temp
  123.     arr_ = []
  124.     for k in range(0, len(arr)):
  125.         d = len(arr)-1
  126.         arr_.append(arr[d-k])
  127.  
  128.  
  129.     return arr_
  130. # ~~~~~~~~~~~~~~~~~ LOGIN ~~~~~~~~~~~~~~~~~~~~~~
  131. # def add_friend(users_):
  132. #     cmd = []
  133. #     for k in range(0, len(users_)-1):
  134. #         cmd.append('start steam://friends/add/' + str(users_[k]))
  135. #     for k in range(0, len(cmd)):
  136. #         if k / 5 == 0:
  137. #             sleep(5)
  138. #         system(cmd[k])
  139.  
  140. # def open_b(users):
  141. #     pass
  142.  
  143. class AddProxyWindow():
  144.     def __init__(self):
  145.         self._create_window()
  146.  
  147.     def _create_window(self):
  148.         self.window = Toplevel()
  149.         self.window.geometry('300x645')
  150.         self.textbox = Text(self.window, height=37, width=37)
  151.         self.textbox.place(x=0,y=25)
  152.         self.button = Button(self.window, height=1, width=42, text='Paste', bg='grey', command=lambda: self.paste())
  153.         self.button.place(x=0, y=0)
  154.         self.button_apply = Button(self.window, height=1, width=42, text='Save', bg='grey', command=lambda: self.save())
  155.         self.button_apply.place(x=0,y=620)
  156.  
  157.     def paste(self):
  158.         OpenClipboard()
  159.         data = GetClipboardData()
  160.         f = open('file.txt', 'w+')
  161.         f.write(self.textbox.get(0.0, END))
  162.         if self.textbox.get(0.0, END) != '\n':
  163.             self.textbox.insert(END, '\r\n')
  164.         self.textbox.insert(END, data)
  165.         CloseClipboard()
  166.     def save(self):
  167.         text = self.textbox.get("1.0", END)
  168.         text = text.split('\r\n')
  169.         for k in text:
  170.             proxy.append(k)
  171.         self.window.destroy()
  172.  
  173. class McListBox():
  174.     """use a ttk.TreeView as a multicolumn list_Box"""
  175.     def __init__(self, header_):
  176.         self.tree = None
  177.         self._setup_widgets(header_)
  178.     def _setup_widgets(self, header_):
  179.         container = Frame(root, bd=0, width=240, height=230, highlightbackground='black', highlightthickness=1, bg='white', padx=0, pady=0)
  180.         container.pack(fill=None, expand=False, in_=frame3)
  181.         # create a treeview with dual scrollbars
  182.        
  183.         self.tree = Treeview(columns=header_, show="headings")
  184.         self.tree.grid(column=0, row=0, sticky='ns', in_=container)
  185.         vsb = Scrollbar(orient="vertical",
  186.             command=self.tree.yview)
  187.         vsb.grid(column=1, row=0, sticky='ns', in_=container)
  188.         for col in header_:
  189.             self.tree.heading(col, text=col.title(),
  190.                 command=lambda c=col: sortby(self.tree, c))
  191.             # adjust the column's width to the header_ string
  192.             self.tree.column(col, width=55)
  193.     def _build_tree(self, list_):
  194.         header_ = ['Steam id', 'Value']
  195.         for item in list_:
  196.             self.tree.insert('', 'end', values=item)
  197.             # adjust column's width if necessary to fit each value
  198.             for ix, val in enumerate(item):
  199.                 self.tree.column(header_[ix],width=55)
  200.     def _add_in_tree(self, item):
  201.         header_ = ['Steam id', 'Value']
  202.         self.tree.insert('', 'end', values=item)
  203.         # adjust column's width if necessary to fit each value
  204.         # for ix, val in enumerate(item):
  205.         #   print(item[3])
  206.         #   self.tree.column(header_[ix],width=55)
  207.     def add_selected(self):
  208.         add_btn['text'] = 'Adding..'
  209.         add_btn['state'] = DISABLED
  210.         curItems = self.tree.selection()
  211.         items = []
  212.         cmd = []
  213.         for k in range(0, len(curItems)):
  214.             item = self.tree.item(curItems[k])
  215.             item = item['values'][0]
  216.             items.append(item)
  217.         for k in range(0, len(items)):
  218.             cmd.append('start steam://friends/add/' + str(items[k]))
  219.         for k in range(0, len(cmd)):
  220.             if k != 0:
  221.                 if k % 5 == 0:
  222.                     sleep(5)
  223.             system(cmd[k])
  224.         self.tree.delete(curItems)
  225.         add_btn['text'] = 'Add selected'
  226.         add_btn['state'] = 'normal'
  227.  
  228.         # add_friend(item)
  229.  
  230.  
  231.     def open_browser(self):
  232.         open_btn['text'] = 'Opening..'
  233.         open_btn['state'] = DISABLED
  234.         curItems = self.tree.selection()
  235.         items = []
  236.         cmd = []
  237.         for k in range(0, len(curItems)):
  238.             item = self.tree.item(curItems[k])
  239.             item = item['values'][0]
  240.             items.append(item)
  241.         for k in range(0, len(items)):
  242.             cmd.append('start http://steamcommunity.com/profiles/' + str(items[k]))
  243.         for k in range(0, len(cmd)):
  244.             system(cmd[k])
  245.         self.tree.delete(curItems)
  246.         open_btn['text'] = 'Open in browser'
  247.         open_btn['state'] = 'normal'
  248.  
  249. def sortby(tree, col):
  250.     """sort tree contents when a column header is clicked on"""
  251.     # grab values to sort
  252.     data = [(tree.set(child, col), child) \
  253.         for child in tree.get_children('')]
  254.     # if the data to be sorted is numeric change to float
  255.     #data =  change_numeric(data)
  256.     # now sort the data in place
  257.     data.sort(reverse=1, key=lambda x: float(x[0]))
  258.     for ix, item in enumerate(data):
  259.         tree.move(item[1], '', ix)
  260.     # switch the heading so it will sort in the opposite direction
  261.     tree.heading(col, command=lambda col=col: sortby(tree, col))
  262.  
  263.     # switch the heading so it will sort in the opposite direction
  264.  
  265.  
  266. # /*/~~~~~~~~~~~~~~~ SCANNER ~~~~~~~~~~~~~~~~~
  267. def LastRow(file):
  268.     now = datetime.datetime.now()
  269.     year = str(now.year)
  270.     month = str(now.month)
  271.     day = str(now.day)
  272.     try:
  273.         lines = file.readlines()
  274.         last_line = lines[-1]
  275.         str1 = last_line.split('.')
  276.         year1 = str1[0]
  277.         month1 = str1[1]
  278.         day1 = str1[2]
  279.         if year == year1 and month == month1:
  280.             if (int(day) - int(day1)) > 2:
  281.                 file.close()
  282.                 file = open('download.log', 'w+')
  283.                 file.write(year + '.' + month + '.' + day)
  284.                 file.close()
  285.                 return 0
  286.         else:
  287.             return 1
  288.     except:
  289.         file.close()
  290.         file = open('download.log', 'w+')
  291.         file.write(year + '.' + month + '.' + day)
  292.         file.close()
  293.         return 0
  294.  
  295.  
  296. def start_scan(selectgame, source, id):
  297.     table_.tree.delete(*table_.tree.get_children())
  298.  
  299.     scan_btn['text'] = 'Scanning...'
  300.     scan_btn['state'] = DISABLED
  301.     progress_bar['mode']='indeterminate'
  302.     progress_bar.start(50)
  303.     load_pric = load_price(selectgame)
  304.     prices_c = load_pric[0]
  305.     gameid = load_pric[1]
  306.     gamename = load_pric[2]
  307.  
  308.     data = take_data()
  309.  
  310.     find_m = find_members(source, id)
  311.  
  312.     parsel = parse_lvl.get()
  313.     parseh = parse_hours.get()
  314.  
  315.     success_api_key = 1
  316.     global parse
  317.     parse = 0
  318.  
  319.     if parsel == 1 and parseh == 1:
  320.         header_ = ['Steam id', 'Value', 'Hours', 'Level']
  321.         parse = 1
  322.     if parsel == 1 and parseh == 0:
  323.         header_ = ['Steam id', 'Value', 'Level']
  324.         parse = 2
  325.     if parsel == 0 and parseh == 1:
  326.         header_ = ['Steam id', 'Value', 'Hours']
  327.         parse = 3
  328.     if parsel == 0 and parseh == 0:
  329.         header_ = ['Steam id', 'Value']
  330.         parse = 0
  331.  
  332.     if parsel == 1 or parseh == 1 or (parsel == 1 and parseh == 1):
  333.         try:
  334.             r = get('http://api.steampowered.com/IPlayerService/GetSteamLevel/v1/?key='+apikey+'&steamid=76561198086405826').text
  335.             if r != '<html><head><title>Forbidden</title></head><body><h1>Forbidden</h1>Access is denied. Retrying will not help. Please verify your <pre>key=</pre> parameter.</body></html>':
  336.                 success_api_key =1
  337.             else: success_api_key = 0
  338.         except: success_api_key = 0
  339.  
  340.     if find_m != 'error' and success_api_key == 1:
  341.         members_ = find_m[0]
  342.         group_id = find_m[1]
  343.  
  344.         progress_bar.stop()
  345.         progbar_proc.set(0)
  346.         progress_bar['mode'] = 'determinate'
  347.         proxy_len = len(proxy)
  348.         u_p = use_proxy.get()
  349.         try:
  350.             m = len(members_) // proxy_len
  351.         except:
  352.             m = 1
  353.  
  354.         global p
  355.         progress_bar['max'] = len(members_)
  356.  
  357.         if u_p == 1:
  358.             for k in range(0, proxy_len):
  359.                 if k != 0:
  360.                     if u_p == 1: proxy_={"http": "http://" + str(proxy[k])}
  361.                     delta = (k+1)*m
  362.  
  363.                     if m != 1:
  364.  
  365.                         members = members_[:delta][-m:]
  366.                         if u_p == 1:
  367.                             _thread.start_new_thread(check_members, (members, gameid, prices_c, data, proxy_))
  368.                         else:
  369.                              _thread.start_new_thread(check_members, (members, gameid, prices_c, data, 'a'))
  370.                     else:
  371.                         members = members_[k]
  372.                         if u_p == 1:
  373.                             _thread.start_new_thread(check_members, (members, gameid, prices_c, data, proxy_))
  374.                         else: _thread.start_new_thread(check_members, (members, gameid, prices_c, data, 'a'))
  375.                 else:
  376.                     members = members_[:m]
  377.                     _thread.start_new_thread(check_members, (members, gameid, prices_c, data, 'a'))
  378.         else:
  379.             check_members(members_, gameid, prices_c, data, 'a')
  380.  
  381.  
  382.  
  383.         scan_btn['text'] = 'Start scanning'
  384.         scan_btn['state'] = 'normal'
  385.     else:
  386.         if find_m == 'error': error(1)
  387.         if success_api_key == 0: error(2)
  388.  
  389. def error(a):
  390.     error = Toplevel()
  391.     error.title = 'Error'
  392.     error.geometry('100x50+150+150')
  393.     if a == 1:
  394.         msg = 'Broken id'
  395.     if a == 2:
  396.         msg = 'Broken apikey'
  397.     Message(error, text=msg).pack()
  398.     scan_btn['text'] = 'Start scanning'
  399.     scan_btn['state'] = 'normal'
  400.     progress_bar.stop()
  401.     progress_bar['mode'] = 'indeterminate'
  402.     progbar_proc.set(0)
  403.  
  404.  
  405.  
  406. def load_price(selectgame):
  407.     try:
  408.         file = open('download.log', 'r+')
  409.     except:
  410.         file = open('download.log', 'w+')
  411.         file.close()
  412.         file = open('download.log', 'r+')
  413.     s = LastRow(file)
  414.     if s == 0:
  415.         urlretrieve('https://files.opskins.media/file/opskins-static/pricelist/730.json', '730.json')
  416.         urlretrieve('https://files.opskins.media/file/opskins-static/pricelist/570.json', '570.json')
  417.     urlretrieve('https://files.opskins.media/file/opskins-static/pricelist/578080.json', '578080.json')
  418.     if selectgame == '2':
  419.         prices_c = loads(open('730.json', 'r').read())
  420.         gameid = 730
  421.         gamename = 'cs'
  422.        
  423.     elif selectgame == '1':
  424.         prices_c = loads(open('570.json', 'r').read())
  425.         gameid = 570
  426.         gamename = 'dota'
  427.  
  428.     elif selectgame == '3':
  429.         prices_c = loads(open('578080.json', 'r').read())
  430.         gameid = 578080
  431.         gamename = 'pubg'
  432.        
  433.                
  434.     return [prices_c, gameid, gamename]
  435.  
  436. def take_data():
  437.     now = datetime.datetime.now()
  438.     year = str(now.year)
  439.     month = str(now.month-1)
  440.     day = str(15)
  441.     if len(month) == 1:
  442.         month = '0' + month
  443.     if len(day) == 1:
  444.         day = '0' + day
  445.     data = year + '-' + month + '-' + day
  446.     return data
  447.  
  448. def find_members(source, id):
  449.     # http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=347F01AC698549C49568B7063C80B41F&steamid=76561198378856393&relationship=friend
  450.     # group_id = 'team1avalanche'
  451.         s = source
  452.         members_ = []
  453.         if s == '1':
  454.             # try:
  455.                 url = 'http://steamcommunity.com/groups/' + id + '/memberslistxml/?xml=1'
  456.                 html = urlopen(url).read().decode('utf-8')
  457.                 pages = html.split('<totalPages>')[1].split('</totalPages>')[0]
  458.                
  459.                 for k in range(1, int(pages) + 1):
  460.                     url = 'http://steamcommunity.com/groups/' + id + '/memberslistxml/?xml=1&p=' + str(k)
  461.                     html = urlopen(url).read().decode('utf-8')
  462.                     members = html.split('<members>')[1].split('</members>')[0].split('\r\n')
  463.                     for k in range(1, (len(members) - 1)):
  464.                         members_.append(str(members[k]).split('>')[1].split('<')[0])
  465.                 b = 0
  466.                 return [members_, id]
  467.             # except:
  468.             #     return 'error'
  469.         elif s == '2':
  470.             try:
  471.                 url = 'http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=347F01AC698549C49568B7063C80B41F&steamid=' + id + '&relationship=friend'
  472.                 js = loads(urlopen(url).read().decode('utf-8'))
  473.                 js = js['friendslist']['friends']
  474.                 members_ = []
  475.                 for k in range(0, len(js)):
  476.                     members_.append(js[k]['steamid'])
  477.                 b = 0
  478.                 return [members_, id]
  479.             except:
  480.                 return 'error'
  481.  
  482. def check_members(members_, gameid, prices_c, data, proxy_):
  483.     for k in range(0, len(members_) - 1):
  484.         root.update()
  485.         steamid = members_[k]
  486.         user = check(steamid, gameid, prices_c, data, proxy_)
  487.  
  488.         if user != 'hvnt':
  489.             j = 0
  490.             users.append(user)
  491.         progress_bar.step(1)
  492.  
  493.  
  494. def check_hours(steamid, gameid):
  495.     try:
  496.         json_ = loads(get('https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?key=' + str(apikey) + '&steamid=' + str(steamid) + '&format=json').text)['response']['games']
  497.         for k in range(len(json_)):
  498.             if json_[k]['appid'] == gameid:
  499.                 hours = int(int(json_[k]['playtime_forever']) / 60)
  500.                 break
  501.         return hours
  502.     except: return 0
  503.  
  504. def check_lvl(steamid, gameid):
  505.     try:
  506.         lvl = loads(get('http://api.steampowered.com/IPlayerService/GetSteamLevel/v1/?key=' + str(apikey) + '&steamid=' + str(steamid)).text)['response']['player_level']
  507.         lvl = int(lvl)
  508.         return lvl
  509.     except: return 0
  510.  
  511. def check(steamid, gameid, prices_c, data, proxy_):
  512.     url = 'http://steamcommunity.com/inventory/' + steamid + '/' + str(gameid) + '/2?l=english&count=5000'
  513.     try:
  514.         if proxy_ != 'a':
  515.             json_ = loads(get(url, proxies=proxy_).text)
  516.         else:
  517.             json_ = loads(get(url).text)
  518.         t = json_['descriptions']
  519.     except:
  520.         return 'hvnt'
  521.  
  522.  
  523.  
  524.  
  525.  
  526.     hash_name = []
  527.     for i in range(0, len(t) - 1):
  528.         hash_name.append(t[i]['market_hash_name'])
  529.     summ = 0.00
  530.     for i in range(0, len(hash_name) - 1):
  531.         try:
  532.             price = prices_c[hash_name[i]][data]['price']
  533.             summ += float(price)
  534.         except:
  535.             pass
  536.     url = steamid
  537.     summ = float(round(summ / 100, 2))
  538.  
  539.  
  540.  
  541.     if parse == 1:
  542.         hours = check_hours(steamid, gameid)
  543.         lvl = check_lvl(steamid, gameid)
  544.         user = [url, summ, hours, lvl]
  545.     if parse == 2:
  546.         lvl = check_lvl(steamid, gameid)
  547.         user = [url, summ, lvl]
  548.     if parse == 3:
  549.         hours = check_hours(steamid, gameid)
  550.         user = [url, summ, hours]
  551.     if parse == 0:
  552.         user = [url, summ]
  553.     table_._add_in_tree(user)
  554.     return user
  555. # ~~~~~~~~~~~~ SCANNER ~~~~~~~~~~~~~~~~~
  556.  
  557. def programm():
  558.     try:
  559.         frame1.destroy()
  560.     except: pass
  561.     root.geometry('270x590')
  562.     frame2 = Frame(root, bd=5, width=250, height=105, highlightbackground='black', highlightthickness=1, bg='white')
  563.     whatscan = Label(frame2, text='Game: ', bg='white')
  564.     selectgame = StringVar(frame2, '2')
  565.     selectgame_rbtn_dota = Radiobutton(frame2, text='Dota', variable=selectgame, value='1', bg='white', tristatevalue=0)
  566.     selectgame_rbtn_cs = Radiobutton(frame2, text='CS', variable=selectgame, value='2', bg='white', tristatevalue=0)
  567.     selectgame_rbtn_pubg = Radiobutton(frame2, text='PUBG', variable=selectgame, value='3', bg='white', tristatevalue=0)
  568.  
  569.     source_lbl = Label(frame2, text='Source: ', bg='white')
  570.     source = StringVar(frame2, '2')
  571.     source_group = Radiobutton(frame2, text='Steam group', variable=source, value='1', bg='white', tristatevalue=0)
  572.     source_friend = Radiobutton(frame2, text='Friend list', variable=source, value='2', bg='white', tristatevalue=0)
  573.     id_lbl = Label(frame2, text='ID: ', bg='white')
  574.     global id_txt
  575.     id_txt = Entry(frame2, width=20, relief=relief_, bg='white')
  576.     btn_paste = Button(frame2, text='Paste', width=8, relief=relief_, bg='white', command=lambda: paste(id_txt), bd=0)
  577.     global scan_btn
  578.     scan_btn = Button(frame2, text='Start scanning', width=32, relief=relief_, bg='white', bd=1, command=lambda: _thread.start_new_thread(start_scan, (selectgame.get(), source.get(), id_txt.get())))
  579.  
  580.  
  581.     source_friend.select()
  582.  
  583.  
  584.  
  585.     frame2.place(x=10, y=10)
  586.     whatscan.place(x=0, y=0)
  587.     selectgame_rbtn_dota.place(x=50, y=0)
  588.     selectgame_rbtn_cs.place(x=100, y=0)
  589.     selectgame_rbtn_pubg.place(x=145, y=0)
  590.     source_lbl.place(x=0, y=20)
  591.     source_group.place(x=50, y=20)
  592.     source_friend.place(x=150, y=20)
  593.     id_lbl.place(x=0, y=40)
  594.     id_txt.place(x=50, y=42)
  595.     btn_paste.place(x=177, y=40)
  596.     scan_btn.place(x=0, y=70)
  597.  
  598.     global progress_bar
  599.     global progbar_proc
  600.     progbar_proc = IntVar()
  601.     progress_bar = Progressbar(root, orient='horizontal', mode='determinate', length=250, variable=progbar_proc)
  602.     progress_bar.place(x=10, y=120)
  603.  
  604.     global frame3
  605.     frame3 = Frame(root, bd=5, width=250, height=240, highlightbackground='black', highlightthickness=1, bg='white')
  606.     frame3.place(x=10,y=150)
  607.  
  608.     global add_btn
  609.     global open_btn
  610.    
  611.     frame4 = Frame(root, bd=5, width=250, height=35, highlightbackground='black', highlightthickness=1, bg='white')
  612.     add_btn = Button(frame4, text='Add selected', width=15, relief=relief_, bg='white', bd=1, command=lambda: table_.add_selected())
  613.     open_btn = Button(frame4, text='Open in browser', width=15, relief=relief_, bg='white', bd=1, command=lambda: table_.open_browser())
  614.    
  615.     global table_
  616.     header_ = ['Steam id', 'Value', 'Hours', 'Level']
  617.     table_ = McListBox(header_)
  618.  
  619.     frame4.place(x=10, y=400)
  620.     add_btn.place(x=0, y=0)
  621.     open_btn.place(x=125, y=0)
  622.  
  623.     frame_proxy = Frame(root, bd=5, width=250, height=35, highlightbackground='black', highlightthickness=1, bg='white')
  624.     frame_proxy.place(x=10, y=445)
  625.     global use_proxy
  626.     use_proxy = IntVar()
  627.     use_proxy_btn = Checkbutton(frame_proxy, text='Use proxy', variable=use_proxy, onvalue=1, offvalue=0, bg='white')
  628.     add_proxy_btn = Button(frame_proxy, text='Add proxy', width=21, relief=relief_, bg='white', bd=1, command=lambda: AddProxyWindow())
  629.     add_proxy_btn.place(x=83, y=0)
  630.     use_proxy_btn.place(x=0, y=0)
  631.  
  632.     frame_settings = Frame(root, bd=5, width=250, height=90, highlightbackground='black', highlightthickness=1, bg='white')
  633.     frame_settings.place(x=10, y=490)
  634.     global parse_hours
  635.     parse_hours = IntVar()
  636.     parse_hours_btn = Checkbutton(frame_settings, text='Get hours', variable=parse_hours, onvalue=1, offvalue=0, bg='white')
  637.     global parse_lvl
  638.     parse_lvl = IntVar()
  639.     parse_lvl_btn = Checkbutton(frame_settings, text='Get lvl', variable=parse_lvl, onvalue=1, offvalue=0, bg='white')
  640.     parse_hours_btn.place(x=0,y=0)
  641.     parse_lvl_btn.place(x=80,y=0)
  642.     steamapi_lbl = Label(frame_settings, text='Steam API Key:', bg='white')
  643.     steamapi_lbl.place(x=150,y=2)
  644.     global steamapi_entry
  645.     steamapi_entry = Entry(frame_settings, width=30, relief=relief_, bg='white')
  646.     steamapi_entry.place(x=0, y=27)
  647.     btn_paste = Button(frame_settings, text='Paste', width=7, relief=relief_, bg='white', command=lambda: paste(steamapi_entry), bd=0)
  648.     btn_paste.place(x=185, y=25)
  649.     btn_submit = Button(frame_settings, text='Submit', width=33, relief=relief_, bg='white', command=save_apikey, bd=1)
  650.     btn_submit.place(x=0, y=52)
  651.  
  652.     try:
  653.         f_api = open('api.txt', 'r')
  654.         global apikey
  655.         api = f_api.read()
  656.         steamapi_entry.insert(0, api)
  657.         apikey = api
  658.     except: pass
  659.  
  660. def paste(ent):
  661.     OpenClipboard()
  662.     data = GetClipboardData()
  663.     ent.delete(0, END)
  664.     ent.insert(0, data)
  665.     CloseClipboard()
  666.  
  667. def save_apikey():
  668.     global apikey
  669.     apikey = steamapi_entry.get()
  670.     try:
  671.         f = open('api.txt', 'r')
  672.     except:
  673.         f = open('api.txt', 'w+')
  674.         f.write(apikey)
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681. root.config(relief=relief_, bg='white')
  682. # ~~~~~~~~~~~~~~~~~ LOGIN ~~~~~~~~~~~~~~~~~~
  683.  
  684. lg = 0
  685. try:
  686.     file = open('login.txt', 'r').read().split('\n')
  687.     password = file[1]
  688.     login = file[0]
  689.     url = r'http://mailf.tk/check.php?login=' + login + '&password=' + password
  690.     result = urlopen(url).read().decode('utf-8')
  691.     if result == '1':
  692.         lg = 1
  693.  
  694. except: pass
  695.  
  696. # /*/~~~~~~~~~~~~~~~~~ LOGIN ~~~~~~~~~~~~~~~~~~/*/
  697. if lg == 0:
  698.     frame1 = Frame(root, bd=5, width=200, height=105, highlightbackground='black', highlightthickness=1, bg='white')
  699.     login_l = Label(frame1, text='Login: ', bg='white')
  700.     login_ = StringVar()
  701.     password_ = StringVar()
  702.     login_txt = Entry(frame1, relief=relief_, textvariable=login_)
  703.     password_l = Label(frame1, text='Password: ', bg='white')
  704.     password_txt = Entry(frame1, show='•', relief=relief_, textvariable=password_)
  705.     save_pass = IntVar()
  706.     save_pass_btn = Checkbutton(frame1, text='Remember me', variable=save_pass, onvalue=1, offvalue=0, bg='white')
  707.     login_btn = Button(frame1, text='Login', width=14, relief=relief_, highlightthickness=1, bd=1, bg='white',
  708.                        command=lambda: log_in(login_.get(), password_.get(), save_pass.get(), 0))
  709.     result_label = Label(frame1, text='', width=8, height=1, fg='red', bg='white')
  710.  
  711.     frame1.place(x=10, y=10)
  712.     login_l.place(x=0, y=0)
  713.     login_txt.place(x=60, y=0)
  714.     password_l.place(x=0, y=25)
  715.     password_txt.place(x=60, y=25)
  716.     save_pass_btn.place(x=0, y=45)
  717.     login_btn.place(x=0, y=70)
  718.     result_label.place(x=115, y=70)
  719. elif lg == 1:
  720.     programm()
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement