Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Hisoblagichlar balansi by @sharipovlive
- #Requests library talab etiladi, o'rnatish uchun ```pip install requests```
- # -*- coding: utf-8 -*-
- import requests
- import sys
- reload(sys)
- sys.setdefaultencoding('utf-8')
- 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'}
- http = requests.Session()
- http.headers.update(user_agent)
- url = 'http://ek.uz/ru/cabinet/payment-public/balance?id={}'
- meta = None
- def get_meta(service_id):
- global meta
- if meta == None:
- response = http.get(url.format(service_id))
- headers = response.headers['Set-Cookie'].split('path=/;')
- phpsessid = headers[0].split('; ')[0]
- _csrf = headers[1].split(', ')[1].split('; ')[0]
- csrf_token = response.text.split('name="csrf-token" content="')[1].split('">')[0]
- meta = {'phpsessid': phpsessid, '_csrf': _csrf, 'csrf_token': csrf_token}
- return meta
- def write(filename, data):
- with open(filename, 'w') as file:
- file.write(data)
- def read(filename):
- try:
- with open(filename, 'r') as file:
- last_balance = file.read()
- if last_balance == '':
- last_balance = 0
- return last_balance
- except:
- with open(filename, 'w') as file:
- file.write('0')
- return '0'
- def get_balance(meta_data, service_data):
- request_headers = {
- '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',
- 'Accept-Encoding': 'gzip, deflate',
- 'Accept-Language': 'ru,en-US;q=0.9,en;q=0.8,uz;q=0.7,fy;q=0.6',
- 'Cache-Control': 'no-cache',
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Cookie': meta_data['phpsessid'] + '; ' + meta_data['_csrf']
- }
- request_data = {
- '_csrf': meta_data['csrf_token'],
- 'Balance[personal_account]': service_data['account_id'],
- 'Balance[service_id]': service_data['service_id'],
- 'Balance[region_id]': service_data['region_id'],
- 'Balance[sub_region_id]': service_data['sub_region_id']
- }
- response = http.post(url.format(service_data['service_id']), data=request_data, headers=request_headers)
- balance = response.text.split('<table class="table table-striped">')[1].split('</table>')[0]
- client_name = balance.split('<td>Абонент</td>')[1].split('</td>')[0].split('<td>')[1]
- client_balance = balance.split('<td>Баланс</td>')[1].split(' с')[0].split('green"> ')[1]
- try:
- client_tarif = balance.split('<td>Тариф</td>')[1].split(' с')[0].split('<td>')[1]
- except:
- client_tarif = 'Topilmadi'
- balance_file = 'balance{}.txt'.format(service_data['service_id'])
- last_balance = read(balance_file)
- spended = str( float(last_balance) - float(client_balance))
- write(balance_file, client_balance)
- 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)
- return message
- def send_message_to_bot(message):
- token = '1128546153:AAHy_wS5MGwXvaGmkpLg8nUtiwN6G8E9-9c'
- user_id = '' #telegam foydalanuvchining ID raqami, @getmyid_bot orqali bilib olish mumkin
- url = 'https://api.telegram.org/bot{}/sendMessage?chat_id={}&text={}&parse_mode=markdown'.format(token, user_id, message)
- http.get(url)
- if __name__ == '__main__':
- #Parametrlar
- electricity_data = {
- 'account_id': '', #hisob raqami
- 'service_id': '3', #servis raqami, elektr toki uchun 3, o'zgartirish shart emas
- 'service_name': 'Elektr energiyasi hisobi', #Istalgan narsa yozish mumkin
- 'region_id': '', #Viloyat raqami, hisoblagich kitobchasi yuzidan yoki ek.uz sayti orqali kirib bilish mumkin, ikkita raqamdan iborat
- 'sub_region_id': '405' #Tuman raqami, uni ham yuqoridagi kabi bilish mumkin, uchta raqamdan iborat
- };
- gas_data = {
- 'account_id': '', #hisob raqami
- 'service_id': '166', #servis raqami, gaz uchun 3, o'zgartirish shart emas
- 'service_name': 'Tabiiy gaz hisobi', #Istalgan narsa yozish mumkin
- 'region_id': '', #Viloyat raqami, hisoblagich kitobchasi yuzidan yoki ek.uz sayti orqali kirib bilish mumkin, bitta raqamdan iborat
- 'sub_region_id': '' #Tuman raqami, uni ham yuqoridagi kabi bilish mumkin, ikkita raqamdan iborat
- }
- #Elektr uchun hisoblab yuboradi
- meta = get_meta('3')
- message = get_balance(meta, electricity_data)
- send_message_to_bot(message)
- #Gaz uchun hisoblab yuboradi
- meta = get_meta('166')
- message = get_balance(meta, gas_data)
- send_message_to_bot(message)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement