Spaces:
Sleeping
Sleeping
import gradio as gr | |
from PIL import Image | |
import requests | |
import openpyxl | |
from openpyxl import load_workbook | |
all_content = [] | |
def append_to_excel(content): | |
# Tên tệp Excel | |
file_path = "lienhoan.xlsx" | |
# Mở hoặc tạo mới tệp Excel | |
try: | |
workbook = load_workbook(file_path) | |
sheet = workbook.active | |
except FileNotFoundError: | |
workbook = openpyxl.Workbook() | |
sheet = workbook.active | |
sheet.append(["Số thứ tự", "Nội dung"]) # Thêm tiêu đề cột | |
# Tìm số thứ tự mới | |
new_row_number = sheet.max_row | |
# Thêm nội dung vào tệp Excel | |
sheet.append([new_row_number, content]) | |
# Lưu tệp Excel | |
workbook.save(file_path) | |
return f"Nội dung '{content}' đã được thêm vào dòng {new_row_number} của tệp {file_path}" | |
def check_status_banking(): | |
api_token = 'BDKRUEDQ7VPL6Z2HRMSGS3SEN0T4OA9NCFYAZ1BGK8LMQXBEQVUPY6IOFIIPMJB7' | |
# URL API MBBank để lấy danh sách giao dịch ngân hàng | |
url = 'https://my.sepay.vn/userapi/transactions/list' | |
# Header với API Token | |
headers = { | |
'Authorization': f'Bearer {api_token}', | |
'Content-Type': 'application/json' | |
} | |
# Tham số lọc (tùy chọn) | |
params = { | |
'account_number': '73899918092007', # Thay thế bằng số tài khoản của bạn | |
# 'transaction_date_min': '2023-01-01', # Thay thế bằng ngày bắt đầu | |
# 'transaction_date_max': '2023-12-31', # Thay thế bằng ngày kết thúc | |
'limit': 1 # Số lượng giao dịch trả về | |
} | |
# Gửi yêu cầu GET tới API | |
response = requests.get(url, headers=headers) | |
# print(response) | |
# Kiểm tra mã trạng thái HTTP của phản hồi | |
# Kiểm tra mã trạng thái HTTP của phản hồi | |
if response.status_code == 200: | |
# In nội dung phản hồi JSON | |
transactions = response.json() | |
transaction_content = transactions['transactions'] | |
for value in transaction_content: | |
transaction_content = value['transaction_content'] | |
all_content.append(transaction_content) | |
print(all_content) | |
return all_content | |
else: | |
print(f'Error: {response.status_code}') | |
print(response.text) | |
def get_qr_code(context_bank): | |
amount = "50000" | |
url = f"https://img.vietqr.io/image/MBBank-73899918092007-compact2.jpg?amount={amount}&addInfo={context_bank}&accountName=TRAN%20DINH%20NHAT" | |
print(url) | |
result = requests.get(url) | |
with open("qr_code.png", "wb") as f: | |
f.write(result.content) | |
qr_image = Image.open("qr_code.png") | |
return qr_image | |
def display_info(): | |
# Thông tin tài khoản | |
account_name = "Trần Đình Nhật" | |
account_number = "738999918092007" | |
content = "Điền nội dung chuyển khoản" | |
# Ảnh QR code | |
return account_name, account_number, content | |
def check_payment_status(content): | |
# Giả sử kiểm tra trạng thái thanh toán và trả về thông báo | |
print("content", content) | |
content_banking = check_status_banking() | |
for i in content_banking: | |
if content in i: | |
result = append_to_excel(content) | |
return "Được rồi đó bạn iu" | |
else: | |
return "Tao chưa nhận được xiền, gửi lại mau thồn lằng" | |
# Tạo form Gradio | |
with gr.Blocks() as demo: | |
with gr.Row(): | |
with gr.Column(): | |
qr_image = gr.Image(label="QR Code", type="pil") | |
with gr.Column(): | |
account_name = gr.Textbox(label="Tên tài khoản:", value="Trần Đình Nhật", interactive=False) | |
account_number = gr.Textbox(label="Số tài khoản:", value="738999918092007", interactive=False) | |
content = gr.Textbox(label="Nội dung:", value="chuyển khoản", interactive=True) | |
get_qr_button = gr.Button("Lấy mã qr") | |
get_qr_button.click(get_qr_code, inputs=content, outputs=qr_image) | |
payment_status_output = gr.Textbox(label="Trạng Thái Thanh Toán", interactive=False) | |
check_status_button = gr.Button("Check Trạng Thái Thanh Toán") | |
check_status_button.click(check_payment_status, inputs=content, outputs=payment_status_output) | |
with gr.Row(): | |
gr.Markdown("© 2024 Trần Đình Nhật") | |
# Hiển thị thông tin và ảnh | |
get_qr_code(content) | |
demo.load(display_info, outputs=[account_name, account_number, content]) | |
# Chạy ứng dụng | |
demo.launch(inline=False) | |