Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.82 KB | None | 0 0
  1. #Hisoblagichlar balansi by @sharipovlive
  2. #Requests library talab etiladi, o'rnatish uchun ```pip install requests```
  3. # -*- coding: utf-8 -*-
  4. import requests
  5. import sys
  6. reload(sys)
  7. sys.setdefaultencoding('utf-8')
  8.  
  9. user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'}
  10. http = requests.Session()
  11. http.headers.update(user_agent)
  12. url = 'http://ek.uz/ru/cabinet/payment-public/balance?id={}'
  13. meta = None
  14.  
  15. def get_meta(service_id):
  16.     global meta
  17.     if meta == None:
  18.         response = http.get(url.format(service_id))
  19.         headers = response.headers['Set-Cookie'].split('path=/;')
  20.         phpsessid = headers[0].split('; ')[0]
  21.         _csrf = headers[1].split(', ')[1].split('; ')[0]
  22.         csrf_token = response.text.split('name="csrf-token" content="')[1].split('">')[0]
  23.         meta = {'phpsessid': phpsessid, '_csrf': _csrf, 'csrf_token': csrf_token}
  24.     return meta
  25. def write(filename, data):
  26.     with open(filename, 'w') as file:
  27.         file.write(data)
  28.  
  29. def read(filename):
  30.     try:
  31.         with open(filename, 'r') as file:
  32.             last_balance = file.read()
  33.             if last_balance == '':
  34.                 last_balance = 0
  35.             return last_balance
  36.     except:
  37.         with open(filename, 'w') as file:
  38.             file.write('0')
  39.             return '0'
  40.            
  41. def get_balance(meta_data, service_data):
  42.     request_headers = {
  43.         'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
  44.         'Accept-Encoding': 'gzip, deflate',
  45.         'Accept-Language': 'ru,en-US;q=0.9,en;q=0.8,uz;q=0.7,fy;q=0.6',
  46.         'Cache-Control': 'no-cache',        
  47.         'Content-Type': 'application/x-www-form-urlencoded',
  48.         'Cookie': meta_data['phpsessid'] + '; ' +  meta_data['_csrf']
  49.     }
  50.     request_data = {
  51.         '_csrf': meta_data['csrf_token'],
  52.         'Balance[personal_account]': service_data['account_id'],
  53.         'Balance[service_id]': service_data['service_id'],
  54.         'Balance[region_id]': service_data['region_id'],
  55.         'Balance[sub_region_id]': service_data['sub_region_id']        
  56.     }
  57.     response = http.post(url.format(service_data['service_id']), data=request_data, headers=request_headers)
  58.     balance = response.text.split('<table class="table table-striped">')[1].split('</table>')[0]
  59.     client_name = balance.split('<td>Абонент</td>')[1].split('</td>')[0].split('<td>')[1]
  60.     client_balance = balance.split('<td>Баланс</td>')[1].split(' с')[0].split('green"> ')[1]
  61.     try:
  62.         client_tarif = balance.split('<td>Тариф</td>')[1].split(' с')[0].split('<td>')[1]
  63.     except:
  64.         client_tarif = 'Topilmadi'
  65.    
  66.     balance_file = 'balance{}.txt'.format(service_data['service_id'])
  67.     last_balance = read(balance_file)
  68.     spended = str( float(last_balance) - float(client_balance))
  69.     write(balance_file, client_balance)
  70.    
  71.     message = '*Xizmat:* {}\n*Mijoz:* {}\n*Hozirgi balans:* {}\n*Bir sutkada sarflangan:* {}\n*Tarif:* {}'.format(service_data['service_name'], client_name, client_balance, spended, client_tarif)
  72.     return message
  73.  
  74. def send_message_to_bot(message):
  75.     token = '1128546153:AAHy_wS5MGwXvaGmkpLg8nUtiwN6G8E9-9c'
  76.     user_id = '' #telegam foydalanuvchining ID raqami, @getmyid_bot orqali bilib olish mumkin
  77.     url = 'https://api.telegram.org/bot{}/sendMessage?chat_id={}&text={}&parse_mode=markdown'.format(token, user_id, message)
  78.     http.get(url)
  79.  
  80. if __name__ == '__main__':
  81.     #Parametrlar
  82.     electricity_data = {
  83.         'account_id': '', #hisob raqami
  84.         'service_id': '3', #servis raqami, elektr toki uchun 3, o'zgartirish shart emas
  85.         'service_name': 'Elektr energiyasi hisobi', #Istalgan narsa yozish mumkin
  86.         'region_id': '', #Viloyat raqami, hisoblagich kitobchasi yuzidan yoki ek.uz sayti orqali kirib bilish mumkin, ikkita raqamdan iborat
  87.         'sub_region_id': '405' #Tuman raqami, uni ham yuqoridagi kabi bilish mumkin, uchta raqamdan iborat
  88.         };
  89.     gas_data = {
  90.         'account_id': '',  #hisob raqami
  91.         'service_id': '166', #servis raqami, gaz uchun 3, o'zgartirish shart emas
  92.         'service_name': 'Tabiiy gaz hisobi', #Istalgan narsa yozish mumkin
  93.         'region_id': '', #Viloyat raqami, hisoblagich kitobchasi yuzidan yoki ek.uz sayti orqali kirib bilish mumkin, bitta raqamdan iborat
  94.         'sub_region_id': ''  #Tuman raqami, uni ham yuqoridagi kabi bilish mumkin, ikkita raqamdan iborat    
  95.     }
  96.     #Elektr uchun hisoblab yuboradi
  97.     meta = get_meta('3')
  98.     message = get_balance(meta, electricity_data)
  99.     send_message_to_bot(message)
  100.    
  101.     #Gaz uchun hisoblab yuboradi
  102.     meta = get_meta('166')
  103.     message = get_balance(meta, gas_data)
  104.     send_message_to_bot(message)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement