This commit is contained in:
2025-12-17 00:42:01 +08:00
commit 990963cd70
9 changed files with 219 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
.DS_Store
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
.idea/*
xml_files/
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
# Translations
*.mo
*.pot
# Django stuff:
*.log
# Sphinx documentation
docs/_build/
# PyBuilder
target/
other/split_clash_config/split_config
ai_news/save_data
daily/*.txt
+48
View File
@@ -0,0 +1,48 @@
syntax = "v1"
info(
title: "HD4K漫画下载服务"
desc: "下载HD4K漫画图片的API服务"
author: "hd4k-downloader"
version: "v1.0.0"
)
type (
// 下载请求
DownloadRequest {
Title string `json:"title"`
Imgs map[string]string `json:"imgs"`
}
// 下载进度详情
ProgressDetail {
Key string `json:"key"`
URL string `json:"url"`
Status string `json:"status"`
Message string `json:"message"`
SavedAs string `json:"saved_as,optional"`
}
// 下载响应
DownloadResponse {
Success bool `json:"success"`
Message string `json:"message"`
Title string `json:"title"`
Folder string `json:"folder"`
JsonPath string `json:"json_path"`
Total int `json:"total"`
Saved int `json:"saved"`
Skipped int `json:"skipped"`
Failed int `json:"failed"`
Details []ProgressDetail `json:"details"`
}
)
@server(
middleware: Cors
timeout: 300000ms # 添加时间单位ms
)
service hd4k_downloader {
@handler SaveImages
post /api/save_imgs (DownloadRequest) returns (DownloadResponse)
}
+3
View File
@@ -0,0 +1,3 @@
Name: hd4k_downloader
Host: 0.0.0.0
Port: 8888
+5
View File
@@ -0,0 +1,5 @@
module hd4k-downloader
go 1.24.7
require github.com/zeromicro/go-zero v1.9.3 // indirect
+2
View File
@@ -0,0 +1,2 @@
github.com/zeromicro/go-zero v1.9.3 h1:dJ568uUoRJY0RUxo4aH4htSglbEUF60WiM1MZVkTK9A=
github.com/zeromicro/go-zero v1.9.3/go.mod h1:JBAtfXQvErk+V7pxzcySR0mW6m2I4KPhNQZGASltDRQ=
+34
View File
@@ -0,0 +1,34 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package main
import (
"flag"
"fmt"
"hd4k-downloader/internal/config"
"hd4k-downloader/internal/handler"
"hd4k-downloader/internal/svc"
"github.com/zeromicro/go-zero/core/conf"
"github.com/zeromicro/go-zero/rest"
)
var configFile = flag.String("f", "etc/hd4kdownloader.yaml", "the config file")
func main() {
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
server := rest.MustNewServer(c.RestConf)
defer server.Stop()
ctx := svc.NewServiceContext(c)
handler.RegisterHandlers(server, ctx)
fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
server.Start()
}
+10
View File
@@ -0,0 +1,10 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package config
import "github.com/zeromicro/go-zero/rest"
type Config struct {
rest.RestConf
}
+22
View File
@@ -0,0 +1,22 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package svc
import (
"github.com/zeromicro/go-zero/rest"
"hd4k-downloader/internal/config"
"hd4k-downloader/internal/middleware"
)
type ServiceContext struct {
Config config.Config
Cors rest.Middleware
}
func NewServiceContext(c config.Config) *ServiceContext {
return &ServiceContext{
Config: c,
Cors: middleware.NewCorsMiddleware().Handle,
}
}
+30
View File
@@ -0,0 +1,30 @@
// Code generated by goctl. DO NOT EDIT.
// goctl 1.9.2
package types
type DownloadRequest struct {
Title string `json:"title"`
Imgs map[string]string `json:"imgs"`
}
type DownloadResponse struct {
Success bool `json:"success"`
Message string `json:"message"`
Title string `json:"title"`
Folder string `json:"folder"`
JsonPath string `json:"json_path"`
Total int `json:"total"`
Saved int `json:"saved"`
Skipped int `json:"skipped"`
Failed int `json:"failed"`
Details []ProgressDetail `json:"details"`
}
type ProgressDetail struct {
Key string `json:"key"`
URL string `json:"url"`
Status string `json:"status"`
Message string `json:"message"`
SavedAs string `json:"saved_as,optional"`
}