-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtpax_grabber.py
78 lines (64 loc) · 2.73 KB
/
tpax_grabber.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from bs4 import BeautifulSoup
import re
from urllib.request import urlopen
import logging
from configparser import ConfigParser
logging.basicConfig(level=logging.WARNING)
parser = ConfigParser()
parser.read('conf.ini')
customsender = parser.get('custom', 'sender')
customreceiver = parser.get('custom', 'receiver')
def get_state(id):
url = f"https://tipaxco.com/tracking?id={id}"
try:
page = urlopen(url)
except:
logging.error("Error opening the URL")
soup = BeautifulSoup(page, 'html.parser')
states_ = soup.find_all('span', attrs={"class": "SuccessState"})
dates_ = soup.find_all('span', attrs={"class":"fpoDateSpan"})
states = []
for state in states_:
states.append(state.text)
dates = []
for date in dates_:
dates.append(date.text)
fields = []
for i in range(len(states)):
temp = {}
temp['name'] = f"مرحله {str(i+1)}"
temp['value'] = f"{dates[i]} | {states[i]}"
fields.append(temp)
return fields
def get_info(id):
url = f"https://tipaxco.com/tracking?id={id}"
try:
page = urlopen(url)
except:
logging.error("Error opening the URL")
return ""
soup = BeautifulSoup(page, 'html.parser')
barcode = soup.find('span', attrs={"id": re.compile(".*lblBarcodeNo"),"class": "lightColor"}).text
contract_number = soup.find('span', attrs={"id": re.compile(".*lblContractCode2"),"class": "lightColor"}).text
sendercity = soup.find('span', attrs={"id": re.compile(".*lblSenderCityName")}).text
if customsender == "":
sendername = soup.find('span', attrs={"id": re.compile(".*lblSenderName")}).text
else:
sendername = customsender
receivercity = soup.find('span', attrs={"id": re.compile(".*lblReceiverCityName")}).text
if customreceiver == "":
receivername = soup.find('span', attrs={"id": re.compile(".*lblReceiverName")}).text
else:
receivername = customreceiver
paytype = soup.find('span', attrs={"id": re.compile(".*lblPayType")}).text
totalcost = soup.find('span', attrs={"id": re.compile(".*lblTotalCost")}).text
weight = soup.find('span', attrs={"id": re.compile(".*lblWeight")}).text
texts = [f"شماره بارکد: {barcode} | شماره قرارداد: {contract_number}",
f"نام فرستنده: {sendername} | شهر فرستنده: {sendercity}",
f"نام گیرنده: {receivername} | شهرگیرنده: {receivercity}",
f"نوع پرداخت: {paytype} | وزن: {weight}",
f"هزینه نهایی: {totalcost}"]
return "\n".join(texts)
if __name__ == "__main__":
id = input("Enter your id: ")
print(get_state(id))