Skip to content

Commit 6119307

Browse files
committed
cleancode applied before reinvoke of the bot
1 parent 75de0fa commit 6119307

File tree

3 files changed

+108
-79
lines changed

3 files changed

+108
-79
lines changed

getmenu.py

+29-29
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,36 @@
33
class Menu():
44
def __init__(self):
55
pass
6-
def read_csv(self):
7-
z = 0
8-
status = []
6+
def csvToFormattedList(self):
7+
daysOfMonthCount = 0
8+
menuListOfMonth = []
99
with open("yemekhane.csv", encoding="utf-8") as csvfile:
10-
reader = csv.reader(csvfile)
11-
for row in reader:
12-
status.append(row)
13-
z += 1
14-
return status, z
10+
csvReader = csv.reader(csvfile)
11+
for row in csvReader:
12+
menuListOfMonth.append(row)
13+
daysOfMonthCount += 1
14+
return menuListOfMonth, daysOfMonthCount
1515

16-
def get_menu(self):
17-
y = 1
18-
date = []
19-
newList3 = []
20-
status, z = self.read_csv()
21-
for _ in range(z - 2):
22-
y += 1
23-
date.append(status[y][0])
24-
row2 = [status[y][2], status[y][3], status[y][4], status[y][5]]
25-
row2 = "\n".join(row2)
26-
newList3.append(row2)
27-
newList4 = []
28-
timer2 = 0
29-
for t in newList3:
30-
if t == '\n\n\n':
31-
d = newList3[timer2].replace('\n\n\n', 'Haftasonu Yemek Hizmeti Yoktur')
32-
newList4.append(d)
33-
timer2 += 1
16+
def getFormattedMenu(self):
17+
excelRowCount = 1
18+
dateOfMonth = []
19+
sortedMenuList = []
20+
menuListOfMonth, daysOfMonthCount = self.csvToFormattedList()
21+
for _ in range(daysOfMonthCount - 2):
22+
excelRowCount += 1
23+
dateOfMonth.append(menuListOfMonth[excelRowCount][0])
24+
tempMenuRow = [menuListOfMonth[excelRowCount][2], menuListOfMonth[excelRowCount][3], menuListOfMonth[excelRowCount][4], menuListOfMonth[excelRowCount][5]]
25+
tempMenuRow = "\n".join(tempMenuRow)
26+
sortedMenuList.append(tempMenuRow)
27+
finalFormOfMenuList = []
28+
daysOfMonthCount2 = 0
29+
for isEmpty in sortedMenuList:
30+
if isEmpty == '\n\n\n':
31+
weekendText = sortedMenuList[daysOfMonthCount2].replace('\n\n\n', 'Haftasonu Yemek Hizmeti Yoktur')
32+
finalFormOfMenuList.append(weekendText)
33+
daysOfMonthCount2 += 1
3434
else:
35-
newList4.append(t)
36-
timer2 += 1
37-
return newList4, date
35+
finalFormOfMenuList.append(isEmpty)
36+
daysOfMonthCount2 += 1
37+
return finalFormOfMenuList, dateOfMonth
3838

main.py

+48-50
Original file line numberDiff line numberDiff line change
@@ -5,46 +5,44 @@
55
import pytz
66
import requests
77
import getmenu
8-
import getpdf
8+
import scrap
99
import os
1010
import time
1111

12-
yearr = datetime.datetime.now().year
13-
monthh = datetime.datetime.now().month
14-
if monthh == 12:
15-
monthh = 1
16-
yearr += 1
12+
calculatedNextYearDate = datetime.datetime.now().year
13+
calculatedNextMonthDate = datetime.datetime.now().month
14+
if calculatedNextMonthDate == 12:
15+
calculatedNextMonthDate = 1
16+
calculatedNextYearDate += 1
1717
else:
18-
monthh += 1
18+
calculatedNextMonthDate += 1
1919

2020
try:
21-
newList4, date = getmenu.Menu().get_menu()
21+
menuList, date = getmenu.Menu().getFormattedMenu()
2222
except:
23-
getpdf.GetPdf().get_pdf()
24-
getpdf.GetPdf().convert_pdf()
25-
newList4, date = getmenu.Menu().get_menu()
26-
27-
t = True
23+
scrap.ScrapMenu().getPdf()
24+
scrap.ScrapMenu().convertPdfToCsv()
25+
menuList, date = getmenu.Menu().getFormattedMenu()
2826
Token = "TOKEN"
2927

3028
models = Models()
3129
models.create_table()
3230

3331
updater = telegram.ext.Updater(
34-
"TOKEN", use_context=True)
32+
Token, use_context=True)
3533
dispatcher = updater.dispatcher
3634
j = updater.job_queue
3735

3836

39-
def restart_every_month(context: CallbackContext):
37+
def restartEveryMonth(context: CallbackContext):
4038
os.system("rm yemekhane.csv")
4139
time.sleep(60)
4240
os.system("kill 1")
4341

4442

45-
j.run_monthly(restart_every_month,
46-
datetime.datetime(yearr,
47-
monthh,
43+
j.run_monthly(restartEveryMonth,
44+
datetime.datetime(calculatedNextYearDate,
45+
calculatedNextMonthDate,
4846
1,
4947
tzinfo=pytz.timezone('Europe/Istanbul')),
5048
day=1)
@@ -71,78 +69,78 @@ def help(update, context):
7169

7270
def getmenu(update, context):
7371
if context.args == []:
74-
number = datetime.datetime.now().day
72+
userInput = datetime.datetime.now().day
7573
else:
76-
number = context.args[0]
77-
if (int(number) > 0):
78-
bn = (date[int(number) - 1] + " Tarihli Günün Menüsü")
79-
bnm = newList4[int(number) - 1]
80-
obnm = bn + "\n" + bnm
81-
update.message.reply_text(obnm)
74+
userInput = context.args[0]
75+
if (int(userInput) > 0):
76+
daysDate = (date[int(userInput) - 1] + " Tarihli Günün Menüsü")
77+
daysMenu = menuList[int(userInput) - 1]
78+
daysMenuText = daysDate + "\n" + daysMenu
79+
update.message.reply_text(daysMenuText)
8280
#add message to database
8381
info = update.message
8482
messages_to_add(info)
8583

8684

87-
def morning(context: CallbackContext):
88-
kisilistesi = models.check_all()
89-
kisisayisi = len(kisilistesi)
90-
i = 0
91-
number = datetime.datetime.now().day
92-
bn = (date[int(number) - 1] + " Tarihli Günün Menüsü")
93-
bnm = newList4[int(number) - 1]
94-
obnm = bn + "\n" + bnm
85+
def sendDaysMenu(context: CallbackContext):
86+
kayitliKisiListesi = models.check_all()
87+
88+
89+
userInput = datetime.datetime.now().day
90+
daysDate = (date[int(userInput) - 1] + " Tarihli Günün Menüsü")
91+
daysMenu = menuList[int(userInput) - 1]
92+
daysMenuText = daysDate + "\n" + daysMenu
9593

96-
for i in range(kisisayisi):
97-
id = kisilistesi[i][0]
94+
for eachPerson in range(len(kayitliKisiListesi)):
95+
telegramId = kayitliKisiListesi[eachPerson][0]
9896
try:
99-
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={id}&text={obnm}"
97+
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={telegramId}&text={daysMenuText}"
10098
requests.get(url).json()
101-
i += 1
99+
eachPerson += 1
102100
except:
103-
print(f"{id} abone olmus ama yetki vermemis")
104-
i += 1
101+
print(f"{telegramId} abone olmus ama yetki vermemis")
102+
eachPerson += 1
105103

106104

107-
j.run_daily(morning,
105+
j.run_daily(sendDaysMenu,
108106
datetime.time(hour=9,
109107
minute=0,
110108
tzinfo=pytz.timezone('Europe/Istanbul')),
111-
days=(0, 1, 2, 3, 4, 5, 6))
109+
days=("mon", "tue", "wed", "thu", "fri"))
112110

113111

114112
def abonelik(update, context):
115113
user = update.message.from_user
116114
first_name = user["first_name"]
117115
last_name = user["last_name"]
118-
id = user["id"]
116+
telegramId = user["id"]
119117
check_id = models.check_person(id)
120118
if check_id is None:
121-
models.add_user(id, first_name, last_name)
119+
models.add_user(telegramId, first_name, last_name)
122120
text = "Abonelik kaydınız oluşturuldu! Her gün Saat 09:00'da günün menüsü sizinle paylaşılacaktır."
123-
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={id}&text={text}"
121+
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={telegramId}&text={text}"
124122
requests.get(url).json()
125123
else:
126124
text = "Zaten aboneliğiniz bulunmaktadır."
127-
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={id}&text={text}"
125+
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={telegramId}&text={text}"
128126
requests.get(url).json()
129127
info = update.message
130128
messages_to_add(info)
131129

132130

133131
def abonelikiptal(update, context):
134132
user = update.message.from_user
135-
id = user["id"]
133+
telegramId= user["id"]
136134
check_id = models.check_person(id)
137135
print(check_id)
138136
if check_id is None:
139137
text = "Aboneliğiniz bulunmamaktadır."
140-
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={id}&text={text}"
138+
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={telegramId}&text={text}"
141139
requests.get(url).json()
142140
else:
143141
models.delete_person(id)
144142
text = "Aboneliğiniz iptal edilmiştir."
145-
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={id}&text={text}"
143+
url = f"https://api.telegram.org/bot{Token}/sendMessage?chat_id={telegramId}&text={text}"
146144
requests.get(url).json()
147145
info = update.message
148146
messages_to_add(info)
@@ -152,9 +150,9 @@ def messages_to_add(info):
152150
user = info.from_user
153151
first_name = user["first_name"]
154152
last_name = user["last_name"]
155-
id = user["id"]
153+
telegramId = user["id"]
156154
message = info.text
157-
models.add_message(id, first_name, last_name, message)
155+
models.add_message(telegramId, first_name, last_name, message)
158156

159157

160158
dispatcher.add_handler(telegram.ext.CommandHandler('start', start))

scrap.py

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import requests
2+
from bs4 import BeautifulSoup
3+
from tabula import read_pdf
4+
from tabula import convert_into
5+
import os
6+
7+
class ScrapMenu:
8+
def __init__(self):
9+
pass
10+
11+
def getPdf(self):
12+
requests.packages.urllib3.disable_warnings()
13+
url = "https://sks.btu.edu.tr/index.php?sid=235"
14+
response = requests.get(url,verify=False)
15+
soup = BeautifulSoup(response.text, 'html.parser')
16+
links = soup.find_all("a")
17+
counter = 0
18+
for link in links:
19+
counter += 1
20+
if ('.pdf' in link.get('href', [])):
21+
print(counter ,"Adet Dosya Indiriliyor")
22+
response = requests.get(link.get('href'),verify=False)
23+
pdf = open("pdf"+str(counter)+".pdf", 'wb')
24+
pdf.write(response.content)
25+
pdf.close()
26+
print("PDF Dosyasi Indirildi")
27+
def convertPdfToCsv(self):
28+
df = read_pdf("pdf62(BU KISIM BOT CALISINCA DEGISECEK.pdf", pages='all')[0]
29+
convert_into("pdf62(BU KISIM BOT CALISINCA DEGISECEK.pdf", "yemekhane.csv", output_format="csv", pages='all')
30+
os.rename("pdf62(BU KISIM BOT CALISINCA DEGISECEK.pdf", "pdfs/pdf62(BU KISIM BOT CALISINCA DEGISECEK.pdf")
31+

0 commit comments

Comments
 (0)