import streamlit as st
from datasets import load_dataset
import os
import sys
import requests
import progressbar
import numpy as np
import pandas as pd
import numpy as np
import random
import time
# Set the app title
st.title('Siêu phẩm dự đoán lô đề')
# Add a welcome message
st.write('Dự đoán lô đề dựa vào kết quả xổ số miền Bắc')
st.write('Cờ bạc là hành vi bị pháp luật nghiêm cấm, chơi cờ bạc ảnh hưởng xấu tới gia đình và xã hội. Vậy chúng ta vui thôi, đừng vui quá!')
st.write('Dự đoán có tính chất tham khảo, giúp gia đình và xã hội bớt rủi ro có thêm 1 con nợ.')
def getTop(plist):
rt = []
grt = 0
#st.write(len(plist))
while grt < 3:
start = 0
tmp = 0
x = 0
while x < len(plist):
if plist[x] >= start:
if x not in rt:
start = plist[x]
tmp = x
x += 1
#st.write(tmp)
rt.append(tmp)
grt += 1
return rt
# Create a text input
#user_input = st.text_input('Enter a custom message:', 'Hello, Streamlit!')
# Display the customized message
#st.write('Customized Message:', user_input)
click = 0
st.html("
Lựa chọn môn thể thao muốn chơi hôm nay nào:
")
first_button = st.button("Đê huyền đề",type='primary')
second_button = st.button("Đoán lô",type="secondary")
kt = "1"
lo_rs = []
de_rs = []
if first_button:
click = 1
st.html(
"Oánh đề à?
Thử đoán xem có trúng không nhé?
"
)
kt = "1"
elif second_button:
click = 1
st.write("Oánh lô nhé")
st.html(
"Hôm nay chọn chơi lô à?
Ăn nhớ báo nhé.
"
)
kt = "2"
path = os.getcwd()
print(de_rs)
print(lo_rs)
if click == 1 and kt == "1" and len(de_rs) > 2:
click = 0
loadbar = st.progress(0,"Chuẩn bị mở bát")
t = 1
while t <= 10:
if t < 7:
loadbar.progress(t,"Đang mở bát được - "+str(t*100/10)+"% - hồi hộp không?")
time.sleep(1)
elif t < 10:
loadbar.progress(t,"Đang mở bát được - "+str(t*100/10)+"% - hồi hộp không?")
time.sleep(2)
else:
loadbar.progress(t,"Đã xong")
st.write("\nKẾT QUẢ DỰ ĐOÁN ĐỀ NGÀY HÔM NAY\n")
st.write("Kết quả dự đoán gồm 3 số: "+str(de_rs)+"")
t += 1
elif click == 1 and kt == "2" and len(lo_rs) > 2:
click = 0
loadbar = st.progress(0,"Chuẩn bị mở bát")
t = 1
while t <= 10:
if t < 7:
loadbar.progress(t,"Đang mở bát được - "+str(t*100/10)+"% - hồi hộp không?")
time.sleep(1)
elif t < 10:
loadbar.progress(t,"Đang mở bát được - "+str(t*100/10)+"% - hồi hộp không?")
time.sleep(2)
else:
loadbar.progress(t,"Đã xong")
st.write("\nKẾT QUẢ DỰ ĐOÁN LÔ NGÀY HÔM NAY\n")
st.write("Kết quả dự đoán gồm 3 số: "+str(lo_rs)+"")
t += 1
#st.write('Current Path:', path)
if click == 1:
st.write("Quá trình tổng hợp dữ liệu ...")
rolldate = []
results = []
maxdate = ""
maxid = ""
lastresult = []
baseurl = "https://github.com/khiemdoan/vietnam-lottery-xsmb-analysis/raw/main/data/xsmb.csv"
url = baseurl
i = 1
FILE_TO_SAVE_AS = path+"/xsmb.txt" # the name you want to save file as
resp = requests.get(url) # making requests to server
with open(FILE_TO_SAVE_AS, "wb") as f:
f.write(resp.content) # writing content to file
#if os.path.isfile(FILE_TO_SAVE_AS):
# st.write("File exists")
# st.write(os.path.getsize(FILE_TO_SAVE_AS))
#else:
# st.write("Không có file")
fo = open(FILE_TO_SAVE_AS)
i = 1
lines = fo.readlines()
bar = progressbar.ProgressBar(maxval=len(lines), \
widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()])
bar.start()
lx = 0
#results = []
for l in lines:
if lx > 0:
rss = l.split(",")
maxdate = rss[0]
lastresult = []
for x in rss:
if x != maxdate:
lastresult.append(str(x.strip()))
rolldate.append(maxdate)
results.append(lastresult)
bar.update(i+1)
lx += 1
fo.close()
bar.finish()
rs = []
rd = []
i = 366
while i > 0 :
#print(results[len(results)-i])
rd.append(rolldate[len(rolldate)-i])
rs.append(results[len(results)-i])
i = i - 1
results = rs
rolldate = rd
randFix = random.randint(0,999999)
#st.write(str(len(rolldate)))
#st.write(str(len(results)))
st.write("Kỳ quay cuối cùng ngày: "+maxdate+" - kết quả: "+str(lastresult))
st.write("Kết thúc tổng hợp dữ liệu")
st.write("Bắt đầu quá trình dự đoán...")
loadrs = path+"/xsmb_"+str(randFix)+".txt"
ws = open(loadrs,"w+")
if kt == "1":
i = 0
ws.write("special\n")
while i < len(rolldate):
if len(results[i])==27:
vdata = results[i][0]
vdata = vdata.strip()+"\n"
ws.write(vdata)
i += 1
ws.close()
#st.write("Lọc dữ liệu hoàn thành")
else:
i = 0
ws.write("special\tprize1\tprize2_1\tprize2_2\tprize3_1\tprize3_2\tprize3_3\tprize3_4\tprize3_5\tprize3_6\tprize4_1\tprize4_2\tprize4_3\tprize4_4\tprize5_1\tprize5_2\tprize5_3\tprize5_4\tprize5_5\tprize5_6\tprize6_1\tprize6_2\tprize6_3\tprize7_1\tprize7_2\tprize7_3\tprize7_4\n")
while i < len(rolldate):
if len(results[i])==27:
vdata = ""
for rs in results[i]:
vdata += "\t"+str(int(rs.strip()) % 100)
vdata = vdata.strip()+"\n"
ws.write(vdata)
i += 1
ws.close()
#st.write("Lọc dữ liệu hoàn thành")
data = np.loadtxt(loadrs,delimiter="\t",dtype="int",skiprows=1)
#st.write(data)
X = []
#nếu là đề, chỉ lấy danh sách kết quả đề
if kt == "1":
rs1 = data.tolist()
rs = []
for rx in rs1:
rs.append(int(rx)%100)
else:
#nếu là lô lấy tất tần tật
X = data[1:, :]
str(X)
rs = [i for z in X.tolist() for i in z]
#st.write(rs)
#tạo ds kết quả
results = []
#add sẵn mỗi số 1 lượt
z1 = 0
while z1 < 100:
results.append(z1)
z1 += 1
#add kết quả thực vào danh sách kết quả, nếu là đề mỗi kết quả bổ sung 10 lượt, và 1 lượt cho 2 vị trí liền kề, nếu là lô bổ sung mỗi kết quả 4 lượt
#for r in rs:
idx = 0
h = 1
lenrs = len(rs)-1
while idx < len(rs):
if kt == "1":
if idx == (-1 + 7*h):
results.append(int(rs[lenrs-idx])-1)
results.append(int(rs[lenrs-idx])+1)
ii = 0
while ii < 25:
results.append(int(rs[lenrs-idx]))
ii += 1
h += 1
else:
results.append(int(rs[lenrs-idx])-1)
results.append(int(rs[lenrs-idx])+1)
ii = 0
while ii < 10:
results.append(int(rs[lenrs-idx]))
ii += 1
#h += 1
else:
if idx >= (-1 + 7*h)*27 and idx < 7*h*27 + 1:
ii = 0
while ii < 7:
results.append(int(rs[lenrs-idx]))
ii += 1
if idx == 7*h*27:
h += 1
else:
ii = 0
while ii < 3:
results.append(int(rs[lenrs-idx]))
ii += 1
idx = idx + 1
#chạy lấy danh sách ngẫu nhiên
runiter = len(results)*10
zz = 0
countTot = [] #danh sách đếm
#results = []
randList = [] #danh sách random số
randCount = [] #danh sách random số và số lượt lấy ngẫu nhiên
#st.write(len(results))
runbar = st.progress(0.0, "Chuẩn bị dự đoán")
while zz < runiter:
rand = random.randint(0,len(results)-1) #lấy ngẫu nhiên 1 số thuộc vị trí ds kết quả
if rand not in randList:
randList.append(rand) #add vào ds random số nếu chưa có
randCount.append([rand,1]) #add vào danh sách số và số lượt đếm bằng 1
else:
idx = randList.index(rand)
randCount[idx][1] = randCount[idx][1]+1 # cộng thêm 1 lượt vào randCount
run_percentage = round(zz/runiter,2)
if run_percentage < 1.0:
runbar.progress(run_percentage,text="Chờ tí, đang chạy dự đoán rồi nhá, đừng nóng ruột. Muốn nhanh phải từ từ")
else:
runbar.progress(run_percentage,text="Xong rồi đấy, chờ tí, có kết quả ngay đây.")
zz += 1
#print("Xong randCount")
tmp = 0
for z in randCount:
tmp = int(z[1])
countTot.append(tmp)
getRS = getTop(countTot)
if kt == "1":
st.write("\nKẾT QUẢ DỰ ĐOÁN ĐỀ NGÀY HÔM NAY\n")
else:
st.write("\nKẾT QUẢ DỰ ĐOÁN LÔ NGÀY HÔM NAY\n")
for rs in getRS:
#st.write(countTot[rs])
st.write("Kết quả dự đoán lần "+str(getRS.index(rs)+1)+": "+str(results[rs])+"")
if kt == "1":
de_rs.append(results[rs])
print(de_rs)
else:
lo_rs.append(results[rs])
print(lo_rs)
os.system("rm "+loadrs)
st.html(
"Này này, chơi mà trúng là phải chia lộc đấy nhé, ghi log hết rồi nhé, nuốt hết là ko trôi đâu.
"
+ "
"
)
st.link_button("Chia lộc ở đây", "https://www.paypal.com/ncp/payment/MHKWQ9BEP2Y34")