Spaces:
Running
Running
Upload 3 files
Browse files- README.md +96 -6
- app.py +49 -0
- requirements.txt +12 -0
README.md
CHANGED
@@ -1,12 +1,102 @@
|
|
1 |
---
|
2 |
-
title:
|
3 |
-
emoji:
|
4 |
-
colorFrom:
|
5 |
-
colorTo:
|
6 |
sdk: gradio
|
7 |
-
sdk_version:
|
8 |
app_file: app.py
|
9 |
pinned: false
|
|
|
10 |
---
|
11 |
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
+
title: Share YouTube App
|
3 |
+
emoji: 📺
|
4 |
+
colorFrom: red
|
5 |
+
colorTo: blue
|
6 |
sdk: gradio
|
7 |
+
sdk_version: 4.44.0
|
8 |
app_file: app.py
|
9 |
pinned: false
|
10 |
+
license: mit
|
11 |
---
|
12 |
|
13 |
+
# Share YouTube App 📺
|
14 |
+
|
15 |
+
แอปพลิเคชันง่ายๆ สำหรับแชร์ลิงก์ YouTube พร้อมโน๊ตสั้นๆ ที่ผู้ใช้สามารถถูกใจและคอมเมนต์ได้
|
16 |
+
|
17 |
+
## ฟีเจอร์
|
18 |
+
|
19 |
+
- ✅ แชร์ลิงก์ YouTube พร้อมโน๊ตสั้นๆ
|
20 |
+
- ✅ แสดงผลวิดีโอ YouTube แบบ embed
|
21 |
+
- ✅ ระบบถูกใจ (Like)
|
22 |
+
- ✅ ระบบคอมเมนต์
|
23 |
+
- ✅ UI ที่สวยงามและใช้งานง่าย
|
24 |
+
- ✅ รองรับการใช้งานบนมือถือ
|
25 |
+
|
26 |
+
## การใช้งาน
|
27 |
+
|
28 |
+
1. กรอกชื่อของคุณ
|
29 |
+
2. ใส่ลิงก์ YouTube ที่ต้องการแชร์
|
30 |
+
3. เขียนโน๊ตสั้นๆ เกี่ยวกับวิดีโอ
|
31 |
+
4. กดปุ่ม "แชร์"
|
32 |
+
5. ดูลิงก์ที่แชร์ในฟีดด้านล่าง
|
33 |
+
6. สามารถถูกใจและคอมเมนต์ได้
|
34 |
+
|
35 |
+
## เทคโนโลยีที่ใช้
|
36 |
+
|
37 |
+
- **Backend**: Flask (Python)
|
38 |
+
- **Database**: SQLite
|
39 |
+
- **Frontend**: HTML, CSS, JavaScript
|
40 |
+
- **UI Framework**: Font Awesome Icons
|
41 |
+
- **Styling**: Custom CSS with Gradient Background
|
42 |
+
|
43 |
+
## การติดตั้งและรันในเครื่อง
|
44 |
+
|
45 |
+
```bash
|
46 |
+
# Clone repository
|
47 |
+
git clone <repository-url>
|
48 |
+
cd facebook-clone
|
49 |
+
|
50 |
+
# สร้าง virtual environment
|
51 |
+
python -m venv venv
|
52 |
+
source venv/bin/activate # Linux/Mac
|
53 |
+
# หรือ venv\Scripts\activate # Windows
|
54 |
+
|
55 |
+
# ติดตั้ง dependencies
|
56 |
+
pip install -r requirements.txt
|
57 |
+
|
58 |
+
# รันแอป
|
59 |
+
python app.py
|
60 |
+
```
|
61 |
+
|
62 |
+
แอปจะรันที่ `http://localhost:7860`
|
63 |
+
|
64 |
+
## โครงสร้างโปรเจกต์
|
65 |
+
|
66 |
+
```
|
67 |
+
facebook-clone/
|
68 |
+
├── app.py # Main application file for Hugging Face Spaces
|
69 |
+
├── requirements.txt # Python dependencies
|
70 |
+
├── README.md # This file
|
71 |
+
├── src/
|
72 |
+
│ ├── main.py # Original Flask app
|
73 |
+
│ ├── models/ # Database models
|
74 |
+
│ │ ├── user.py # User model
|
75 |
+
│ │ └── post.py # Post and Comment models
|
76 |
+
│ ├── routes/ # API routes
|
77 |
+
│ │ ├── user.py # User routes
|
78 |
+
│ │ └── post.py # Post routes
|
79 |
+
│ ├── static/ # Frontend files
|
80 |
+
│ │ ├── index.html # Main HTML file
|
81 |
+
│ │ ├── style.css # CSS styles
|
82 |
+
│ │ └── script.js # JavaScript functionality
|
83 |
+
│ └── database/ # SQLite database
|
84 |
+
│ └── app.db # Database file
|
85 |
+
└── venv/ # Virtual environment
|
86 |
+
```
|
87 |
+
|
88 |
+
## API Endpoints
|
89 |
+
|
90 |
+
### Posts
|
91 |
+
- `GET /api/posts` - ดึงโพสต์ทั้งหมด
|
92 |
+
- `POST /api/posts` - สร้างโพสต์ใหม่
|
93 |
+
- `POST /api/posts/{id}/like` - ถูกใจโพสต์
|
94 |
+
|
95 |
+
### Comments
|
96 |
+
- `GET /api/posts/{id}/comments` - ดึงคอมเมนต์ของโพสต์
|
97 |
+
- `POST /api/posts/{id}/comments` - เพิ่มคอมเมนต์
|
98 |
+
|
99 |
+
## License
|
100 |
+
|
101 |
+
MIT License - ดูรายละเอียดในไฟล์ LICENSE
|
102 |
+
|
app.py
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import sys
|
3 |
+
# DON'T CHANGE THIS !!!
|
4 |
+
sys.path.insert(0, os.path.dirname(__file__))
|
5 |
+
|
6 |
+
from flask import Flask, send_from_directory
|
7 |
+
from flask_cors import CORS
|
8 |
+
from src.models.user import db
|
9 |
+
from src.routes.user import user_bp
|
10 |
+
from src.routes.post import post_bp
|
11 |
+
|
12 |
+
app = Flask(__name__, static_folder=os.path.join(os.path.dirname(__file__), 'src', 'static'))
|
13 |
+
app.config['SECRET_KEY'] = 'asdf#FGSgvasgf$5$WGT'
|
14 |
+
|
15 |
+
# Enable CORS for all routes
|
16 |
+
CORS(app)
|
17 |
+
|
18 |
+
app.register_blueprint(user_bp, url_prefix='/api')
|
19 |
+
app.register_blueprint(post_bp, url_prefix='/api')
|
20 |
+
|
21 |
+
# Database configuration
|
22 |
+
app.config['SQLALCHEMY_DATABASE_URI'] = f"sqlite:///{os.path.join(os.path.dirname(__file__), 'src', 'database', 'app.db')}"
|
23 |
+
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
24 |
+
db.init_app(app)
|
25 |
+
|
26 |
+
# Create database tables
|
27 |
+
with app.app_context():
|
28 |
+
db.create_all()
|
29 |
+
|
30 |
+
@app.route('/', defaults={'path': ''})
|
31 |
+
@app.route('/<path:path>')
|
32 |
+
def serve(path):
|
33 |
+
static_folder_path = app.static_folder
|
34 |
+
if static_folder_path is None:
|
35 |
+
return "Static folder not configured", 404
|
36 |
+
|
37 |
+
if path != "" and os.path.exists(os.path.join(static_folder_path, path)):
|
38 |
+
return send_from_directory(static_folder_path, path)
|
39 |
+
else:
|
40 |
+
index_path = os.path.join(static_folder_path, 'index.html')
|
41 |
+
if os.path.exists(index_path):
|
42 |
+
return send_from_directory(static_folder_path, 'index.html')
|
43 |
+
else:
|
44 |
+
return "index.html not found", 404
|
45 |
+
|
46 |
+
if __name__ == '__main__':
|
47 |
+
port = int(os.environ.get('PORT', 7860))
|
48 |
+
app.run(host='0.0.0.0', port=port, debug=False)
|
49 |
+
|
requirements.txt
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
blinker==1.9.0
|
2 |
+
click==8.2.1
|
3 |
+
Flask==3.1.1
|
4 |
+
flask-cors==6.0.0
|
5 |
+
Flask-SQLAlchemy==3.1.1
|
6 |
+
greenlet==3.2.4
|
7 |
+
itsdangerous==2.2.0
|
8 |
+
Jinja2==3.1.6
|
9 |
+
MarkupSafe==3.0.2
|
10 |
+
SQLAlchemy==2.0.41
|
11 |
+
typing_extensions==4.14.0
|
12 |
+
Werkzeug==3.1.3
|