Compare commits
38 Commits
8051d4a027
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| b187a50878 | |||
| 826ff901cf | |||
| 66078799ff | |||
| 152bc9fd83 | |||
| 1a7828a850 | |||
| 7a195da164 | |||
| 29a0404643 | |||
| 57714ddd21 | |||
| 8cc72f50ee | |||
| fb3d7190b7 | |||
| 57f7f9252f | |||
| a7e630cd84 | |||
| 905b3dcef8 | |||
| dab5c40e31 | |||
| e64a56e4d0 | |||
| c7788c409f | |||
| fba2513b5f | |||
| 48074edc21 | |||
| 5ad3062457 | |||
| d3d4b30c9a | |||
| 6f93326ba0 | |||
| fc8976efba | |||
| 8a16672573 | |||
| e7971b6a03 | |||
| 6327c8f878 | |||
| 9233f0224d | |||
| f82c7db414 | |||
| 953a4b22f6 | |||
| ee0762b0b1 | |||
| 13d2081aff | |||
| 6e57862d26 | |||
| 319b4d2c79 | |||
| 7cb5e177fc | |||
| 406c78bf02 | |||
| 2032d20d89 | |||
| 87dc8562ab | |||
| bf4a54d611 | |||
| e18b71b7fa |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,4 +1,7 @@
|
||||
.idea
|
||||
.DS_Store
|
||||
__pycache__
|
||||
venv
|
||||
venv
|
||||
__pycache__/
|
||||
pictures/
|
||||
*/__pycache__/
|
||||
|
||||
Binary file not shown.
145
huaweitest.py
Normal file
145
huaweitest.py
Normal file
@@ -0,0 +1,145 @@
|
||||
from fastapi import FastAPI, Query, Request, HTTPException
|
||||
from datetime import datetime
|
||||
import random
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
|
||||
@app.get("/")
|
||||
async def root(request: Request):
|
||||
# 获取当前时间
|
||||
now = datetime.now()
|
||||
|
||||
# 格式化时间为 年-月-日 时:分:秒 的格式
|
||||
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
|
||||
print(f"请求IP地址: {request.client.host},请求时间{formatted_now},请求路径: /")
|
||||
return "welcome to fastAPI!"
|
||||
|
||||
|
||||
def random_bool():
|
||||
return "true" if random.random() > 0.5 else "false"
|
||||
|
||||
|
||||
@app.get("/script/getscriparam")
|
||||
async def getscriparam(request: Request):
|
||||
# 获取当前时间
|
||||
now = datetime.now()
|
||||
# 格式化时间为 年-月-日 时:分:秒 的格式
|
||||
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
|
||||
print(f"请求IP地址: {request.client.host},请求时间{formatted_now},请求路径: /script/getscriparam")
|
||||
language_list = ["English (United States)", "Spanish (Mexico)", "English (United Kingdom)", "English (Australia)"]
|
||||
data = {
|
||||
"interaction": {"from": 20, "to": 30},
|
||||
"bounceRate": {"from": 0.3, "to": 0.4},
|
||||
"pagesToViewPerSession": {"from": 2, "to": 3},
|
||||
"sessionsPerUser": {"from": 2, "to": 3},
|
||||
"ctr": {"from": 0.03, "to": 0.05},
|
||||
"shouldDoClick": "true",
|
||||
"shouldExecute": "true",
|
||||
"shouldBounce": "false",
|
||||
"languageFullName": random.choice(language_list),
|
||||
}
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@app.get("/script/success")
|
||||
async def do_success(request: Request):
|
||||
# 获取当前时间
|
||||
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# 获取请求者的IP地址
|
||||
client_host = request.client.host
|
||||
|
||||
# 打印上报成功的时间和IP地址
|
||||
# print(f"请求IP地址: {client_host},上报成功时间: {current_time}")
|
||||
print(f"请求IP地址: {client_host},请求时间{current_time},请求路径: /script/success")
|
||||
|
||||
data = {}
|
||||
return {
|
||||
"code": 0,
|
||||
"msg": "ok",
|
||||
"data": data
|
||||
}
|
||||
|
||||
|
||||
@app.get("/script/failed")
|
||||
async def do_failed(request: Request, reason: str = None, errortype: str = None):
|
||||
# 获取当前时间
|
||||
now = datetime.now()
|
||||
|
||||
# 格式化时间为 年-月-日 时:分:秒 的格式
|
||||
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
|
||||
print(f"请求IP地址: {request.client.host},请求时间{formatted_now},请求路径: /script/failed")
|
||||
# 假设这里记录失败原因到日志或数据库
|
||||
print(f"上报失败,Time: {formatted_now}, 失败原因: {reason},失败类型: {errortype}.") # 实际应用中应使用更专业的日志记录方式
|
||||
return {
|
||||
"code": 0,
|
||||
"msg": "ok",
|
||||
"data": {}
|
||||
}
|
||||
|
||||
|
||||
@app.get("/report/chrome/crash")
|
||||
async def report_chrome_crash(id: str, timestamp: str = Query(None)):
|
||||
# 获取当前时间
|
||||
now = datetime.now()
|
||||
|
||||
# 格式化时间为 年-月-日 时:分:秒 的格式
|
||||
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# 假设这里记录失败原因到日志或数据库
|
||||
print(f"Time: {formatted_now}, ID: {id}, 时间戳: {timestamp}") # 实际应用中应使用更专业的日志记录方式
|
||||
return {
|
||||
"code": 0,
|
||||
"msg": "ok",
|
||||
"data": {}
|
||||
}
|
||||
|
||||
|
||||
@app.get("/script/uploaddata")
|
||||
async def upload_ads_status(impressions: str, clicks: str):
|
||||
# 获取当前时间
|
||||
now = datetime.now()
|
||||
|
||||
# 格式化时间为 年-月-日 时:分:秒 的格式
|
||||
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# 假设这里记录失败原因到日志或数据库
|
||||
print(f"Time: {formatted_now}, impressions: {impressions}, clicks: {clicks}") # 实际应用中应使用更专业的日志记录方式
|
||||
return {
|
||||
"code": 0,
|
||||
"msg": "ok",
|
||||
"data": {}
|
||||
}
|
||||
|
||||
|
||||
@app.post("/api/account/")
|
||||
async def get_account(request: Request):
|
||||
server_token = "cT&Ur7AciCgL6P$2u!^mauI05r6jcD$A"
|
||||
accounts = [
|
||||
{"account": "reedavice8@gmail.com", "password": "L906lTeTlpelaq",
|
||||
"auxiliary_mailbox": "tcmuffin56@mailexpire.com"},
|
||||
{"account": "annist95g@gmail.com", "password": "28CUxUmygURereJ",
|
||||
"auxiliary_mailbox": "b1youngster983@yahoo.ie"},
|
||||
{"account": "vr8607864@gmail.com", "password": "J945YgaX", "auxiliary_mailbox": "sbqunmetal3@xtra.co.nz"},
|
||||
{"account": "ShimoGuagliardo537@gmail.com", "password": "94Ss9YYx3",
|
||||
"auxiliary_mailbox": "spigelmyerhalalikyzd185@yawua.us"},
|
||||
]
|
||||
|
||||
# 从请求头中获取token
|
||||
token = request.headers.get('Authorization')
|
||||
# 获取当前时间
|
||||
now = datetime.now()
|
||||
# 格式化时间
|
||||
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
|
||||
print(f"请求IP地址: {request.client.host}, 请求时间: {formatted_now}, 请求token: {token}, 请求路径: /api/account/")
|
||||
|
||||
# 检查token是否存在且匹配
|
||||
if not token or token != server_token:
|
||||
# 如果token不正确,返回401未授权状态
|
||||
raise HTTPException(status_code=401, detail="Unauthorized")
|
||||
|
||||
# 随机选择一个账户信息返回
|
||||
selected_account = random.choice(accounts)
|
||||
return selected_account
|
||||
24
main.py
24
main.py
@@ -1,6 +1,5 @@
|
||||
from fastapi import FastAPI, HTTPException, Request
|
||||
from fastapi.responses import FileResponse
|
||||
import base64
|
||||
import os
|
||||
|
||||
app = FastAPI()
|
||||
@@ -18,7 +17,6 @@ async def login(request: Request):
|
||||
username = data.get("username")
|
||||
password = data.get("password")
|
||||
print(f"username: {username},password: {password}")
|
||||
# Replace with your actual validation logic
|
||||
if username == "1" and password == "1":
|
||||
data1 = None
|
||||
return {"code": "0", "msg": "ok", "data": data1}
|
||||
@@ -108,24 +106,26 @@ async def get_policy_list():
|
||||
policy_list = [
|
||||
{"title": "政策标题1", "date": "2024-01-01"},
|
||||
{"title": "政策标题2", "date": "2023-01-02"},
|
||||
{"title": "政策标题3", "date": "2022-01-02"},
|
||||
{"title": "政策标题4", "date": "2023-01-02"},
|
||||
{"title": "政策标题5", "date": "2022-01-02"},
|
||||
{"title": "政策标题6", "date": "2023-01-02"},
|
||||
{"title": "政策标题7", "date": "2021-01-02"},
|
||||
{"title": "政策标题3", "date": "2022-01-03"},
|
||||
{"title": "政策标题4", "date": "2023-01-14"},
|
||||
{"title": "政策标题5", "date": "2022-01-14"},
|
||||
{"title": "政策标题6", "date": "2023-01-15"},
|
||||
{"title": "政策标题7", "date": "2021-01-16"},
|
||||
{"title": "政策标题8", "date": "2021-01-02"},
|
||||
{"title": "政策标题9", "date": "2024-02-02"},
|
||||
{"title": "政策标题10", "date": "2024-03-02"},
|
||||
{"title": "政策标题11", "date": "2024-04-02"},
|
||||
{"title": "政策标题12", "date": "2024-01-02"},
|
||||
{"title": "政策标题13", "date": "2024-01-02"},
|
||||
{"title": "政策标题14", "date": "2024-01-02"},
|
||||
{"title": "政策标题15", "date": "2024-01-02"},
|
||||
{"title": "政策标题16", "date": "2024-01-02"},
|
||||
{"title": "政策标题17", "date": "2024-01-02"}
|
||||
{"title": "政策标题13", "date": "2023-01-24"},
|
||||
{"title": "政策标题14", "date": "2022-01-02"},
|
||||
{"title": "政策标题15", "date": "2022-12-02"},
|
||||
{"title": "政策标题16", "date": "2021-04-02"},
|
||||
{"title": "政策标题17", "date": "2020-02-02"}
|
||||
]
|
||||
return {
|
||||
"code": 0,
|
||||
"msg": "ok",
|
||||
"data": policy_list
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,5 @@ sniffio==1.3.0
|
||||
starlette==0.32.0.post1
|
||||
typing_extensions==4.9.0
|
||||
uvicorn==0.25.0
|
||||
uvloop==0.19.0
|
||||
watchfiles==0.21.0
|
||||
websockets==12.0
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# Test your FastAPI endpoints
|
||||
|
||||
GET http://127.0.0.1:8000/
|
||||
Accept: application/json
|
||||
|
||||
###
|
||||
|
||||
GET http://127.0.0.1:8000/hello/User
|
||||
Accept: application/json
|
||||
|
||||
###
|
||||
34
utils/pictures_handle.py
Normal file
34
utils/pictures_handle.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import os
|
||||
|
||||
|
||||
def get_pictures_info(directory, page, page_size):
|
||||
pictures = []
|
||||
start_index = (page - 1) * page_size
|
||||
end_index = start_index + page_size
|
||||
counter = 0
|
||||
|
||||
for filename in os.listdir(directory):
|
||||
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
|
||||
if start_index <= counter < end_index:
|
||||
file_path = os.path.join(directory, filename)
|
||||
size = os.path.getsize(file_path)
|
||||
size_mb = size / (1024 * 1024)
|
||||
picture_info = {
|
||||
"id": counter + 1,
|
||||
"photo_name": filename,
|
||||
"photo_size": round(size_mb, 2),
|
||||
"photo_url": file_path
|
||||
}
|
||||
pictures.append(picture_info)
|
||||
counter += 1
|
||||
if counter >= end_index:
|
||||
break
|
||||
return pictures
|
||||
|
||||
|
||||
def get_total_pages(directory, page_size):
|
||||
total_photos = 0
|
||||
for filename in os.listdir(directory):
|
||||
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
|
||||
total_photos += 1
|
||||
return (total_photos + page_size - 1) // page_size
|
||||
72
website.py
Normal file
72
website.py
Normal file
@@ -0,0 +1,72 @@
|
||||
import os
|
||||
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.responses import FileResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from utils.pictures_handle import get_pictures_info
|
||||
from utils.pictures_handle import get_total_pages
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
app.mount("/static", StaticFiles(directory="assets/images/pictures/"), name="static")
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["http://localhost:5173"], # 允许的源列表
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"], # 允许的方法
|
||||
allow_headers=["*"], # 允许的头
|
||||
)
|
||||
|
||||
|
||||
@app.get("/")
|
||||
async def root():
|
||||
return "welcome to fastAPI!"
|
||||
|
||||
|
||||
@app.get("/api/get-menu")
|
||||
async def get_menu():
|
||||
menu_list = [
|
||||
{"id": 1, "menu_name": "首页", "url": "/", "src": "/index.svg"},
|
||||
{"id": 2, "menu_name": "图片", "url": "/photos", "src": "/photo.svg"},
|
||||
{"id": 3, "menu_name": "视频", "url": "/videos", "src": "/videos.svg"},
|
||||
{"id": 4, "menu_name": "关于", "url": "/about", "src": "/about.svg"}
|
||||
]
|
||||
return {
|
||||
"code": 0,
|
||||
"msg": "ok",
|
||||
"data": menu_list
|
||||
}
|
||||
|
||||
|
||||
@app.get("/api/get-photo-list")
|
||||
async def get_photo_list(page: int = 1, page_size: int = 10):
|
||||
dir_path = "assets/images/pictures"
|
||||
total_pages = get_total_pages(dir_path, page_size)
|
||||
photo_list = get_pictures_info(dir_path, page, page_size)
|
||||
for photo in photo_list:
|
||||
photo["photo_url"] = f"http://127.0.0.1:8000/static/{photo['photo_name']}"
|
||||
return {
|
||||
"code": 0,
|
||||
"msg": "ok",
|
||||
"data": photo_list,
|
||||
"page_count": total_pages
|
||||
}
|
||||
|
||||
|
||||
@app.get("/static/{photo_name}")
|
||||
async def get_photo(photo_name: str,request: Request):
|
||||
request_path = str(request.url)
|
||||
dir = "/assets/images/pictures"
|
||||
file_path = os.path.join(dir, photo_name)
|
||||
print(file_path)
|
||||
if os.path.exists(file_path):
|
||||
return FileResponse(file_path)
|
||||
else:
|
||||
print(f"ERROR: {request_path}")
|
||||
return {
|
||||
"code": -1,
|
||||
"msg": "error",
|
||||
"data": None
|
||||
}
|
||||
Reference in New Issue
Block a user