commit
2ecf62e88b
4 changed files with 145 additions and 0 deletions
@ -0,0 +1,31 @@ |
|||
from flask import Flask, jsonify, send_from_directory |
|||
|
|||
app = Flask(__name__, static_folder="public", static_url_path="") |
|||
|
|||
# 根路径返回 index.html |
|||
@app.route("/") |
|||
def serve_index(): |
|||
return send_from_directory(app.static_folder, "index.html") |
|||
|
|||
# API 子路径,提供《哪吒2》的宣传数据 |
|||
@app.route("/api/nezha2") |
|||
def api_nezha2(): |
|||
nezha2_data = { |
|||
"message": "《哪吒2》宣传信息", |
|||
"data": { |
|||
"title": "《哪吒2》", |
|||
"description": "《哪吒2》是继《哪吒之魔童降世》后的续作,讲述了哪吒的全新冒险故事。", |
|||
"trailer_url": "https://www.bilibili.com/video/BV11McieTEN5/", # 替换为实际预告片链接 |
|||
"cast": [ |
|||
{"name": "哪吒", "role": "主角", "description": "勇敢无畏的少年英雄"}, |
|||
{"name": "敖丙", "role": "配角", "description": "哪吒的挚友与对手"}, |
|||
{"name": "太乙真人", "role": "配角", "description": "哪吒的师父,搞笑又神秘"} |
|||
], |
|||
"release_date": "2025年12月25日", |
|||
"rating": "PG-13" |
|||
} |
|||
} |
|||
return jsonify(nezha2_data) |
|||
|
|||
if __name__ == "__main__": |
|||
app.run(debug=True, port=80) |
@ -0,0 +1,28 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="UTF-8"> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<title>《哪吒2》宣传网页</title> |
|||
<link rel="stylesheet" href="styles.css"> |
|||
</head> |
|||
<body> |
|||
<div class="container"> |
|||
<h1 id="title">《哪吒2》</h1> |
|||
<p id="description"></p> |
|||
<div class="trailer"> |
|||
<h2>预告片</h2> |
|||
<iframe id="trailer-iframe" width="560" height="315" src="" frameborder="0" allowfullscreen></iframe> |
|||
</div> |
|||
<div class="cast"> |
|||
<h2>主演介绍</h2> |
|||
<div id="cast-container"></div> |
|||
</div> |
|||
<div class="info"> |
|||
<p><strong>上映日期:</strong><span id="release-date"></span></p> |
|||
<p><strong>分级:</strong><span id="rating"></span></p> |
|||
</div> |
|||
</div> |
|||
<script src="script.js"></script> |
|||
</body> |
|||
</html> |
@ -0,0 +1,40 @@ |
|||
document.addEventListener("DOMContentLoaded", function () { |
|||
fetch("/api/nezha2") |
|||
.then(response => response.json()) |
|||
.then(data => { |
|||
const movieData = data.data; |
|||
|
|||
// 设置标题和描述
|
|||
document.getElementById("title").textContent = movieData.title; |
|||
document.getElementById("description").textContent = movieData.description; |
|||
|
|||
// 设置预告片链接
|
|||
const trailerIframe = document.getElementById("trailer-iframe"); |
|||
trailerIframe.src = movieData.trailer_url; |
|||
|
|||
// 渲染主演介绍
|
|||
const castContainer = document.getElementById("cast-container"); |
|||
movieData.cast.forEach(cast => { |
|||
const castItem = document.createElement("div"); |
|||
castItem.classList.add("cast-item"); |
|||
|
|||
const castName = document.createElement("div"); |
|||
castName.textContent = `${cast.name} - ${cast.role}`; |
|||
|
|||
const castDescription = document.createElement("div"); |
|||
castDescription.textContent = cast.description; |
|||
|
|||
castItem.appendChild(castName); |
|||
castItem.appendChild(castDescription); |
|||
|
|||
castContainer.appendChild(castItem); |
|||
}); |
|||
|
|||
// 设置上映日期和分级
|
|||
document.getElementById("release-date").textContent = movieData.release_date; |
|||
document.getElementById("rating").textContent = movieData.rating; |
|||
}) |
|||
.catch(error => { |
|||
console.error("Error fetching movie data:", error); |
|||
}); |
|||
}); |
@ -0,0 +1,46 @@ |
|||
body { |
|||
font-family: Arial, sans-serif; |
|||
background-color: #f4f4f9; |
|||
margin: 0; |
|||
padding: 0; |
|||
} |
|||
|
|||
.container { |
|||
max-width: 800px; |
|||
margin: 20px auto; |
|||
padding: 20px; |
|||
background: #fff; |
|||
border-radius: 8px; |
|||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); |
|||
} |
|||
|
|||
h1, h2 { |
|||
text-align: center; |
|||
color: #333; |
|||
} |
|||
|
|||
.trailer iframe { |
|||
display: block; |
|||
margin: 20px auto; |
|||
border-radius: 8px; |
|||
} |
|||
|
|||
.cast { |
|||
margin-top: 20px; |
|||
} |
|||
|
|||
.cast-item { |
|||
margin-bottom: 10px; |
|||
padding: 10px; |
|||
border-bottom: 1px solid #ddd; |
|||
} |
|||
|
|||
.cast-item:last-child { |
|||
border-bottom: none; |
|||
} |
|||
|
|||
.info { |
|||
margin-top: 20px; |
|||
text-align: center; |
|||
color: #666; |
|||
} |
Loading…
Reference in new issue