thoptk commited on
Commit
77952af
·
verified ·
1 Parent(s): 118ff13

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +72 -0
app.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ from flask import Flask, render_template
3
+
4
+ # Khởi tạo ứng dụng Flask
5
+ app = Flask(__name__)
6
+
7
+ # --- LINK CSV CỦA BẠN ---
8
+ PRODUCT_SHEET_URL = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSHOvfG4hGVCBQYsjOpC0QhamhVKWwFojz4IRc32B6HOvRDaEqc9dNRy8E8pLyJDnDo2mGvJ4oJANtk/pub?gid=319581950&single=true&output=csv"
9
+ VIDEO_SHEET_URL = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSHOvfG4hGVCBQYsjOpC0QhamhVKWwFojz4IRc32B6HOvRDaEqc9dNRy8E8pLyJDnDo2mGvJ4oJANtk/pub?gid=1503614356&single=true&output=csv"
10
+ # -------------------------------------
11
+
12
+ def load_data(url):
13
+ """
14
+ Hàm tải dữ liệu từ Google Sheet CSV và trả về danh sách (list of dictionaries).
15
+ """
16
+ try:
17
+ df = pd.read_csv(url, dtype=str)
18
+ df = df.fillna("")
19
+ return df.to_dict('records')
20
+ except Exception as e:
21
+ print(f"[LỖI LOAD_DATA] Lỗi khi tải dữ liệu từ {url}: {e}")
22
+ return []
23
+
24
+ @app.route('/')
25
+ def home():
26
+ """Trang chủ của website"""
27
+ products_raw = load_data(PRODUCT_SHEET_URL)
28
+ videos = load_data(VIDEO_SHEET_URL)
29
+
30
+ products_processed = []
31
+
32
+ for product in products_raw:
33
+ try:
34
+ # === SỬA LỖI 1: Đọc đúng tên cột Cột D ===
35
+ # Đọc từ cột 'image_id' (thay vì 'image_url' như code trước)
36
+ file_id = product.get('image_id')
37
+
38
+ if file_id:
39
+ # Tạo biến mới 'image_url_processed'
40
+ product['image_url_processed'] = f"https://drive.google.com/thumbnail?id={file_id}&sz=w500"
41
+ else:
42
+ # Nếu không có ID, dùng ảnh dự phòng
43
+ product['image_url_processed'] = "https://placehold.co/300x300/eee/333?text=No+Image"
44
+
45
+
46
+ # === SỬA LỖI 2: Đọc đúng tên cột Cột E ===
47
+ # Đọc từ cột 'link_shopee' (thay vì 'shopee_link' như code trước)
48
+ shopee_link = product.get('link_shopee', '')
49
+
50
+ if shopee_link and not shopee_link.startswith(('http://', 'https://')):
51
+ # Tự động thêm https:// nếu thiếu
52
+ product['shopee_link_processed'] = f"https://{shopee_link}"
53
+ elif not shopee_link:
54
+ # Nếu ô bị rỗng, đặt link là '#' để tránh lỗi
55
+ product['shopee_link_processed'] = '#'
56
+ else:
57
+ # Nếu link đã đúng, giữ nguyên
58
+ product['shopee_link_processed'] = shopee_link
59
+
60
+ # Thêm sản phẩm đã xử lý vào danh sách
61
+ products_processed.append(product)
62
+
63
+ except Exception as e:
64
+ print(f"Lỗi xử lý sản phẩm {product.get('name')}: {e}")
65
+ continue
66
+
67
+ # Render file 'index.html' và truyền 2 biến mới vào
68
+ return render_template('index.html', products=products_processed, videos=videos)
69
+
70
+ if __name__ == '__main__':
71
+ # Chạy ứng dụng trên cổng 7860 (cổng chuẩn cho Hugging Face Spaces)
72
+ app.run(host='0.0.0.0', port=7860)