BaleAccountApi 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- baleaccountapi-1.0.0/BaleAccountApi/__init__.py +1 -0
- baleaccountapi-1.0.0/BaleAccountApi/core.py +152 -0
- baleaccountapi-1.0.0/BaleAccountApi.egg-info/PKG-INFO +93 -0
- baleaccountapi-1.0.0/BaleAccountApi.egg-info/SOURCES.txt +11 -0
- baleaccountapi-1.0.0/BaleAccountApi.egg-info/dependency_links.txt +1 -0
- baleaccountapi-1.0.0/BaleAccountApi.egg-info/requires.txt +2 -0
- baleaccountapi-1.0.0/BaleAccountApi.egg-info/top_level.txt +1 -0
- baleaccountapi-1.0.0/LICENSE +1 -0
- baleaccountapi-1.0.0/PKG-INFO +93 -0
- baleaccountapi-1.0.0/README.md +69 -0
- baleaccountapi-1.0.0/pyproject.toml +3 -0
- baleaccountapi-1.0.0/setup.cfg +4 -0
- baleaccountapi-1.0.0/setup.py +25 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .core import BaleAccountApi
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
from bs4 import BeautifulSoup
|
|
2
|
+
from html import unescape
|
|
3
|
+
import re
|
|
4
|
+
from time import sleep
|
|
5
|
+
|
|
6
|
+
from selenium import webdriver
|
|
7
|
+
from selenium.webdriver.common.by import By
|
|
8
|
+
from selenium.webdriver.firefox.options import Options as firefox_option_driver
|
|
9
|
+
|
|
10
|
+
firefox_option = firefox_option_driver()
|
|
11
|
+
#firefox_option.add_argument("--headless")
|
|
12
|
+
firefox_option.add_argument("--no-sandbox")
|
|
13
|
+
firefox_option.add_argument("--disable-dev-shm-usage")
|
|
14
|
+
firefox_option.add_argument("--window-size=1280,720")
|
|
15
|
+
firefox_option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def wait_full_xpath(driver, xp):
|
|
19
|
+
while True:
|
|
20
|
+
try:driver.find_element(By.XPATH,xp);break
|
|
21
|
+
except:sleep(3)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def extract_message(message_html):
|
|
26
|
+
soup = BeautifulSoup(message_html, "html.parser")
|
|
27
|
+
root = soup.find(attrs={"data-sid": True})
|
|
28
|
+
|
|
29
|
+
message_id = None
|
|
30
|
+
message_date = None
|
|
31
|
+
if root:
|
|
32
|
+
message_id = root.get("data-sid")
|
|
33
|
+
message_date = root.get("data-date")
|
|
34
|
+
|
|
35
|
+
texts = []
|
|
36
|
+
for node in soup.select(".KTwPFW.YjkWXv"):
|
|
37
|
+
for img in node.find_all("img"):
|
|
38
|
+
img.replace_with(img.get("alt", ""))
|
|
39
|
+
|
|
40
|
+
for br in node.find_all("br"):
|
|
41
|
+
br.replace_with("\n")
|
|
42
|
+
|
|
43
|
+
text = node.get_text("\n", strip=True)
|
|
44
|
+
|
|
45
|
+
if text:
|
|
46
|
+
texts.append(text)
|
|
47
|
+
|
|
48
|
+
text = "\n\n".join(texts)
|
|
49
|
+
|
|
50
|
+
text = unescape(text)
|
|
51
|
+
text = re.sub(r"\n{3,}", "\n\n", text)
|
|
52
|
+
text = re.sub(r"[ \t]+", " ", text)
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
"id": message_id,
|
|
56
|
+
"date": message_date,
|
|
57
|
+
"text": text.strip(),
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
avg_sleep = 0.2
|
|
63
|
+
class BaleAccountApi:
|
|
64
|
+
def start(hide=True):
|
|
65
|
+
if hide == True:
|
|
66
|
+
firefox_option.add_argument("--headless")
|
|
67
|
+
driver = webdriver.Firefox()
|
|
68
|
+
driver.get("https://web.bale.ai/login?redirectTo=/")
|
|
69
|
+
sleep(avg_sleep)
|
|
70
|
+
return driver
|
|
71
|
+
|
|
72
|
+
def send_otp_code(driver, phone_number):
|
|
73
|
+
wait_full_xpath(driver, '/html/body/div[1]/div/div/div/div/div[3]/div[2]/div/button')
|
|
74
|
+
driver.find_element(By.XPATH,'/html/body/div[1]/div/div/div/div/div[3]/div[2]/div/button').click()
|
|
75
|
+
|
|
76
|
+
wait_full_xpath(driver, '//*[@id="Mobile number"]')
|
|
77
|
+
driver.find_element(By.XPATH,'//*[@id="Mobile number"]').send_keys(phone_number)
|
|
78
|
+
driver.find_element(By.XPATH,'/html/body/div[1]/div/div/div/div[2]/div/button').click()
|
|
79
|
+
|
|
80
|
+
sleep(avg_sleep)
|
|
81
|
+
try:
|
|
82
|
+
driver.find_element(By.XPATH,'//*[@id="Login Code"]')
|
|
83
|
+
return True
|
|
84
|
+
except:
|
|
85
|
+
return False
|
|
86
|
+
|
|
87
|
+
def login(driver, otp_code):
|
|
88
|
+
wait_full_xpath(driver, '//*[@id="Login Code"]')
|
|
89
|
+
driver.find_element(By.XPATH,'//*[@id="Login Code"]').clear()
|
|
90
|
+
driver.find_element(By.XPATH,'//*[@id="Login Code"]').send_keys(str(otp_code))
|
|
91
|
+
sleep(avg_sleep)
|
|
92
|
+
try:
|
|
93
|
+
driver.find_element(By.XPATH,'/html/body/div[1]/div/div/div/div[1]/div/div[1]')
|
|
94
|
+
sleep(1)
|
|
95
|
+
return True
|
|
96
|
+
except:
|
|
97
|
+
return False
|
|
98
|
+
|
|
99
|
+
def get_page_source(driver):
|
|
100
|
+
return driver.page_source
|
|
101
|
+
|
|
102
|
+
def open_chat(driver, chat_uid):
|
|
103
|
+
driver.get(f"https://web.bale.ai/chat?uid={chat_uid}")
|
|
104
|
+
sleep(avg_sleep)
|
|
105
|
+
try:
|
|
106
|
+
driver.find_element(By.XPATH,'/html/body/div[1]/div/div/div/div[4]/div[3]/div[3]/div').click()
|
|
107
|
+
sleep(avg_sleep)
|
|
108
|
+
except:
|
|
109
|
+
pass
|
|
110
|
+
|
|
111
|
+
def send_message(driver,message):
|
|
112
|
+
try:
|
|
113
|
+
driver.find_element(By.XPATH,'//*[@id="editable-message-text"]').send_keys(message)
|
|
114
|
+
driver.find_element(By.XPATH,'/html/body/div[1]/div/div/div/div[4]/div[4]/div[1]/div[4]').click()
|
|
115
|
+
sleep(avg_sleep)
|
|
116
|
+
return True
|
|
117
|
+
except:
|
|
118
|
+
return False
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def convert_id_to_uid(driver, ID):
|
|
122
|
+
driver.get(f"https://ble.ir/{ID}")
|
|
123
|
+
sleep(avg_sleep)
|
|
124
|
+
wait_full_xpath(driver, '/html/body/div/div[2]/div/div[4]/a[2]')
|
|
125
|
+
driver.find_element(By.XPATH,'/html/body/div/div[2]/div/div[4]/a[2]').click()
|
|
126
|
+
sleep(avg_sleep)
|
|
127
|
+
r1 = driver.current_url
|
|
128
|
+
while True:
|
|
129
|
+
if r1 != driver.current_url and 'uid=' in driver.current_url:
|
|
130
|
+
break
|
|
131
|
+
sleep(1)
|
|
132
|
+
return ((driver.current_url).split('uid=')[1])
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def readmessages(driver):
|
|
137
|
+
sleep(1.5)
|
|
138
|
+
wait_full_xpath(driver, "/html/body/div[1]/div/div/div/div[4]/div[3]")
|
|
139
|
+
soup = BeautifulSoup(driver.page_source, "html.parser")
|
|
140
|
+
|
|
141
|
+
result = []
|
|
142
|
+
|
|
143
|
+
for msg in soup.select(".message-item"):
|
|
144
|
+
data = extract_message(str(msg))
|
|
145
|
+
|
|
146
|
+
if data["text"]:
|
|
147
|
+
result.append(data)
|
|
148
|
+
|
|
149
|
+
return {
|
|
150
|
+
"number": len(result),
|
|
151
|
+
"messages": result
|
|
152
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: BaleAccountApi
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A Python library for control Bale Account.
|
|
5
|
+
Author: Mohammad Taha Gorji
|
|
6
|
+
Author-email: MohammadTahaGorjiProfile@gmail.com
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >=3.6
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Requires-Dist: BeautifulSoup
|
|
14
|
+
Requires-Dist: selenium
|
|
15
|
+
Dynamic: author
|
|
16
|
+
Dynamic: author-email
|
|
17
|
+
Dynamic: classifier
|
|
18
|
+
Dynamic: description
|
|
19
|
+
Dynamic: description-content-type
|
|
20
|
+
Dynamic: license-file
|
|
21
|
+
Dynamic: requires-dist
|
|
22
|
+
Dynamic: requires-python
|
|
23
|
+
Dynamic: summary
|
|
24
|
+
|
|
25
|
+
# چیست و چرا؟
|
|
26
|
+
کتابخانه های زیادی برای اتصال و ساخت ربات بله که به آن بازوی بله هم می گویند وجود دارد.
|
|
27
|
+
اما تا کنون هیچ کتابخانه رو ندیدم که امکان کنترل خود اکانت رو فراهم بکنه و بله هم مستندات در این باره منتشر نکرده.
|
|
28
|
+
برای یه پروژه به کنترل حساب بله نیاز پیدا کردم پس این کتابخانه رو ساختم
|
|
29
|
+
در مراحل آزمایشی هست و گسترده و پشتیبانی از تمام امکانات رو نداره چون در حد نیازه پروژه خودم نوشته شده
|
|
30
|
+
|
|
31
|
+
اگر کسی مایل بود می تونه درخواست های توسعه رو به گیت هاب بفرسته و د گسترش این کتابخانه کمک کنه
|
|
32
|
+
|
|
33
|
+
https://github.com/mr-r0ot/BaleAccountApi
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# مستندات
|
|
37
|
+
### نصب
|
|
38
|
+
```
|
|
39
|
+
pip install BaleAccountApi
|
|
40
|
+
```
|
|
41
|
+
### استفاده
|
|
42
|
+
```
|
|
43
|
+
#افزودن
|
|
44
|
+
import BaleAccountApi
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# ساخت یک سشن جدید
|
|
48
|
+
home = BaleAccountApi.start(hide=False) # اگر می خواهید مرورگر مخفی بشه
|
|
49
|
+
#home = BaleAccountApi.start(hide=True) # اگر می خواید نمایش داده بشه
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
# ارسال یه کد تایید(سشن همواره باید به تابع ها پاس داده شود)
|
|
54
|
+
if BaleAccountApi.send_otp_code(home, "09123456789"):
|
|
55
|
+
print("با موفقیت ارسال شد")
|
|
56
|
+
else:
|
|
57
|
+
print("خطا")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# گرفتن کد تایید و ورود به حساب
|
|
61
|
+
while True:
|
|
62
|
+
code = input("Enter code: ")
|
|
63
|
+
if BaleAccountApi.login(home, code):
|
|
64
|
+
print("خوش اومدی :)")
|
|
65
|
+
break
|
|
66
|
+
else:
|
|
67
|
+
print("کد اشتباه بود")
|
|
68
|
+
|
|
69
|
+
# در بله دو نوع id وجود دارد:
|
|
70
|
+
# یکی به صورت متنی و رشته است و یکی آیدی ععدی
|
|
71
|
+
# برای استفاده در این کتابخانه نیاز به آیدی عددی داریم پس با این تابع می توانیم:
|
|
72
|
+
# تبدیل آیدی رشته به آیدی ععدی قابل استفاده
|
|
73
|
+
ID='EnterYourBaleStringID'
|
|
74
|
+
chat_uid = BaleAccountApi.convert_id_to_uid(home, ID)
|
|
75
|
+
print(f' Caht UID : {chat_uid}')
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
# باز کردن یه چت با آیدی عددی
|
|
80
|
+
# می تواند گروه کانال پیوی و... باشد
|
|
81
|
+
BaleAccountApi.open_chat(home, chat_uid=chat_uid)
|
|
82
|
+
|
|
83
|
+
# مثال خواندن پیام ها
|
|
84
|
+
out = BaleAccountApi.readmessages(home)
|
|
85
|
+
print(out)
|
|
86
|
+
|
|
87
|
+
# مثال ارسال پیام
|
|
88
|
+
if BaleAccountApi.send_message(home, 'HIII :) '):
|
|
89
|
+
print("Sended :)")
|
|
90
|
+
else:
|
|
91
|
+
print('My bad :(')
|
|
92
|
+
|
|
93
|
+
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
setup.py
|
|
5
|
+
BaleAccountApi/__init__.py
|
|
6
|
+
BaleAccountApi/core.py
|
|
7
|
+
BaleAccountApi.egg-info/PKG-INFO
|
|
8
|
+
BaleAccountApi.egg-info/SOURCES.txt
|
|
9
|
+
BaleAccountApi.egg-info/dependency_links.txt
|
|
10
|
+
BaleAccountApi.egg-info/requires.txt
|
|
11
|
+
BaleAccountApi.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
BaleAccountApi
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
MIT License
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: BaleAccountApi
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A Python library for control Bale Account.
|
|
5
|
+
Author: Mohammad Taha Gorji
|
|
6
|
+
Author-email: MohammadTahaGorjiProfile@gmail.com
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >=3.6
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Requires-Dist: BeautifulSoup
|
|
14
|
+
Requires-Dist: selenium
|
|
15
|
+
Dynamic: author
|
|
16
|
+
Dynamic: author-email
|
|
17
|
+
Dynamic: classifier
|
|
18
|
+
Dynamic: description
|
|
19
|
+
Dynamic: description-content-type
|
|
20
|
+
Dynamic: license-file
|
|
21
|
+
Dynamic: requires-dist
|
|
22
|
+
Dynamic: requires-python
|
|
23
|
+
Dynamic: summary
|
|
24
|
+
|
|
25
|
+
# چیست و چرا؟
|
|
26
|
+
کتابخانه های زیادی برای اتصال و ساخت ربات بله که به آن بازوی بله هم می گویند وجود دارد.
|
|
27
|
+
اما تا کنون هیچ کتابخانه رو ندیدم که امکان کنترل خود اکانت رو فراهم بکنه و بله هم مستندات در این باره منتشر نکرده.
|
|
28
|
+
برای یه پروژه به کنترل حساب بله نیاز پیدا کردم پس این کتابخانه رو ساختم
|
|
29
|
+
در مراحل آزمایشی هست و گسترده و پشتیبانی از تمام امکانات رو نداره چون در حد نیازه پروژه خودم نوشته شده
|
|
30
|
+
|
|
31
|
+
اگر کسی مایل بود می تونه درخواست های توسعه رو به گیت هاب بفرسته و د گسترش این کتابخانه کمک کنه
|
|
32
|
+
|
|
33
|
+
https://github.com/mr-r0ot/BaleAccountApi
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# مستندات
|
|
37
|
+
### نصب
|
|
38
|
+
```
|
|
39
|
+
pip install BaleAccountApi
|
|
40
|
+
```
|
|
41
|
+
### استفاده
|
|
42
|
+
```
|
|
43
|
+
#افزودن
|
|
44
|
+
import BaleAccountApi
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# ساخت یک سشن جدید
|
|
48
|
+
home = BaleAccountApi.start(hide=False) # اگر می خواهید مرورگر مخفی بشه
|
|
49
|
+
#home = BaleAccountApi.start(hide=True) # اگر می خواید نمایش داده بشه
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
# ارسال یه کد تایید(سشن همواره باید به تابع ها پاس داده شود)
|
|
54
|
+
if BaleAccountApi.send_otp_code(home, "09123456789"):
|
|
55
|
+
print("با موفقیت ارسال شد")
|
|
56
|
+
else:
|
|
57
|
+
print("خطا")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# گرفتن کد تایید و ورود به حساب
|
|
61
|
+
while True:
|
|
62
|
+
code = input("Enter code: ")
|
|
63
|
+
if BaleAccountApi.login(home, code):
|
|
64
|
+
print("خوش اومدی :)")
|
|
65
|
+
break
|
|
66
|
+
else:
|
|
67
|
+
print("کد اشتباه بود")
|
|
68
|
+
|
|
69
|
+
# در بله دو نوع id وجود دارد:
|
|
70
|
+
# یکی به صورت متنی و رشته است و یکی آیدی ععدی
|
|
71
|
+
# برای استفاده در این کتابخانه نیاز به آیدی عددی داریم پس با این تابع می توانیم:
|
|
72
|
+
# تبدیل آیدی رشته به آیدی ععدی قابل استفاده
|
|
73
|
+
ID='EnterYourBaleStringID'
|
|
74
|
+
chat_uid = BaleAccountApi.convert_id_to_uid(home, ID)
|
|
75
|
+
print(f' Caht UID : {chat_uid}')
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
# باز کردن یه چت با آیدی عددی
|
|
80
|
+
# می تواند گروه کانال پیوی و... باشد
|
|
81
|
+
BaleAccountApi.open_chat(home, chat_uid=chat_uid)
|
|
82
|
+
|
|
83
|
+
# مثال خواندن پیام ها
|
|
84
|
+
out = BaleAccountApi.readmessages(home)
|
|
85
|
+
print(out)
|
|
86
|
+
|
|
87
|
+
# مثال ارسال پیام
|
|
88
|
+
if BaleAccountApi.send_message(home, 'HIII :) '):
|
|
89
|
+
print("Sended :)")
|
|
90
|
+
else:
|
|
91
|
+
print('My bad :(')
|
|
92
|
+
|
|
93
|
+
```
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# چیست و چرا؟
|
|
2
|
+
کتابخانه های زیادی برای اتصال و ساخت ربات بله که به آن بازوی بله هم می گویند وجود دارد.
|
|
3
|
+
اما تا کنون هیچ کتابخانه رو ندیدم که امکان کنترل خود اکانت رو فراهم بکنه و بله هم مستندات در این باره منتشر نکرده.
|
|
4
|
+
برای یه پروژه به کنترل حساب بله نیاز پیدا کردم پس این کتابخانه رو ساختم
|
|
5
|
+
در مراحل آزمایشی هست و گسترده و پشتیبانی از تمام امکانات رو نداره چون در حد نیازه پروژه خودم نوشته شده
|
|
6
|
+
|
|
7
|
+
اگر کسی مایل بود می تونه درخواست های توسعه رو به گیت هاب بفرسته و د گسترش این کتابخانه کمک کنه
|
|
8
|
+
|
|
9
|
+
https://github.com/mr-r0ot/BaleAccountApi
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# مستندات
|
|
13
|
+
### نصب
|
|
14
|
+
```
|
|
15
|
+
pip install BaleAccountApi
|
|
16
|
+
```
|
|
17
|
+
### استفاده
|
|
18
|
+
```
|
|
19
|
+
#افزودن
|
|
20
|
+
import BaleAccountApi
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# ساخت یک سشن جدید
|
|
24
|
+
home = BaleAccountApi.start(hide=False) # اگر می خواهید مرورگر مخفی بشه
|
|
25
|
+
#home = BaleAccountApi.start(hide=True) # اگر می خواید نمایش داده بشه
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# ارسال یه کد تایید(سشن همواره باید به تابع ها پاس داده شود)
|
|
30
|
+
if BaleAccountApi.send_otp_code(home, "09123456789"):
|
|
31
|
+
print("با موفقیت ارسال شد")
|
|
32
|
+
else:
|
|
33
|
+
print("خطا")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# گرفتن کد تایید و ورود به حساب
|
|
37
|
+
while True:
|
|
38
|
+
code = input("Enter code: ")
|
|
39
|
+
if BaleAccountApi.login(home, code):
|
|
40
|
+
print("خوش اومدی :)")
|
|
41
|
+
break
|
|
42
|
+
else:
|
|
43
|
+
print("کد اشتباه بود")
|
|
44
|
+
|
|
45
|
+
# در بله دو نوع id وجود دارد:
|
|
46
|
+
# یکی به صورت متنی و رشته است و یکی آیدی ععدی
|
|
47
|
+
# برای استفاده در این کتابخانه نیاز به آیدی عددی داریم پس با این تابع می توانیم:
|
|
48
|
+
# تبدیل آیدی رشته به آیدی ععدی قابل استفاده
|
|
49
|
+
ID='EnterYourBaleStringID'
|
|
50
|
+
chat_uid = BaleAccountApi.convert_id_to_uid(home, ID)
|
|
51
|
+
print(f' Caht UID : {chat_uid}')
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
# باز کردن یه چت با آیدی عددی
|
|
56
|
+
# می تواند گروه کانال پیوی و... باشد
|
|
57
|
+
BaleAccountApi.open_chat(home, chat_uid=chat_uid)
|
|
58
|
+
|
|
59
|
+
# مثال خواندن پیام ها
|
|
60
|
+
out = BaleAccountApi.readmessages(home)
|
|
61
|
+
print(out)
|
|
62
|
+
|
|
63
|
+
# مثال ارسال پیام
|
|
64
|
+
if BaleAccountApi.send_message(home, 'HIII :) '):
|
|
65
|
+
print("Sended :)")
|
|
66
|
+
else:
|
|
67
|
+
print('My bad :(')
|
|
68
|
+
|
|
69
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import setuptools
|
|
2
|
+
|
|
3
|
+
with open("README.md", "r", encoding="utf-8") as fh:
|
|
4
|
+
long_description = fh.read()
|
|
5
|
+
|
|
6
|
+
setuptools.setup(
|
|
7
|
+
name="BaleAccountApi",
|
|
8
|
+
version="1.0.0",
|
|
9
|
+
author="Mohammad Taha Gorji",
|
|
10
|
+
author_email="MohammadTahaGorjiProfile@gmail.com",
|
|
11
|
+
description="A Python library for control Bale Account.",
|
|
12
|
+
long_description=long_description,
|
|
13
|
+
long_description_content_type="text/markdown",
|
|
14
|
+
packages=setuptools.find_packages(),
|
|
15
|
+
classifiers=[
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Operating System :: OS Independent",
|
|
19
|
+
],
|
|
20
|
+
python_requires='>=3.6',
|
|
21
|
+
install_requires=[
|
|
22
|
+
"BeautifulSoup",
|
|
23
|
+
"selenium",
|
|
24
|
+
],
|
|
25
|
+
)
|