-
Notifications
You must be signed in to change notification settings - Fork 0
/
simple3.py
72 lines (59 loc) · 2.25 KB
/
simple3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from http.server import SimpleHTTPRequestHandler, HTTPServer
from pathlib import Path
import socket
import json
def create_media_folder():
home_dir = Path.home()
downloads_dir = home_dir / "Downloads"
media_dir = downloads_dir / "media"
if not media_dir.exists():
media_dir.mkdir(parents=True)
return media_dir
# Créer le dossier media
media_dir = create_media_folder()
# Définir le chemin du fichier index.html
current_dir = Path(__file__).parent
index_file = current_dir / "index.html"
class CustomHandler(SimpleHTTPRequestHandler):
def translate_path(self, path):
# Définir le chemin racine pour servir les fichiers
path = super().translate_path(path)
relpath = Path(path).relative_to(Path.cwd())
return str(media_dir / relpath)
def do_GET(self):
if self.path == '/':
self.path = '/index.html'
self.serve_index()
elif self.path == '/files':
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
file_list = [
{"name": f.name, "url": f"/{f.name}"}
for f in media_dir.iterdir() if f.is_file()
]
self.wfile.write(json.dumps({"files": file_list}).encode())
else:
return super().do_GET()
def serve_index(self):
try:
with open(index_file, 'rb') as file:
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(file.read())
except Exception as e:
self.send_error(404, f"File not found: {self.path}")
def end_headers(self):
if not self.path.endswith('/index.html') and not self.path.endswith('/files'):
self.send_header('Content-Disposition', 'attachment')
super().end_headers()
# Configuration du serveur
server_address = ('', 8000) # Écoute sur le port 8000
httpd = HTTPServer(server_address, CustomHandler)
# Obtenir l'adresse IP locale
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
print(f"Serving HTTP on http://{local_ip}:8000 from {media_dir}...")
# Démarrer le serveur
httpd.serve_forever()