mirror of
https://github.com/ProudMuBai/GoFilm.git
synced 2026-02-13 21:44:42 +08:00
151 lines
4.4 KiB
Markdown
151 lines
4.4 KiB
Markdown
# Film Server
|
|
|
|
## 简介
|
|
|
|
- server 是本项目的后端项目
|
|
- 主要用于提供前端项目需要的 API数据接口, 以及数据搜集和更新
|
|
- 实现思路 :
|
|
- 使用 gocolly 获取公开的影视资源,
|
|
- 将请求数据通过程序处理整合成统一格式后使用redis进行暂存
|
|
- 使用 mysql 存储收录的影片的检索信息, 用于影片检索, 分类
|
|
- 使用 gin 作为web服务, 提供相应api接口
|
|
- 项目依赖
|
|
|
|
```go
|
|
# gin web服务框架, 用于处理与前端工程的交互
|
|
github.com/gin-gonic/gin v1.9.0
|
|
# gocolly go语言爬虫框架, 用于搜集公共影视资源
|
|
github.com/gocolly/colly/v2 v2.1.0
|
|
# go-redis redis交互程序
|
|
github.com/redis/go-redis/v9 v9.0.2
|
|
# gorm 用于处理与mysql数据库的交互
|
|
gorm.io/gorm v1.24.6
|
|
gorm.io/driver/mysql v1.4.7
|
|
```
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
> 项目主要目录结构
|
|
|
|
- config 用于存放项目中使用的配置信息和静态常量
|
|
- controller 请求处理控制器
|
|
- logic 请求处理逻辑实现
|
|
- model 数据模型结构体以及与数据库交互
|
|
- plugin 项目所需的插件工具集合
|
|
- common 公共依赖
|
|
- db 数据库配置信息
|
|
- spider gocolly配置, 执行逻辑, 数据前置处理等
|
|
|
|
```text
|
|
server
|
|
├─ config
|
|
│ └─ DataConfig.go
|
|
├─ controller
|
|
│ ├─ IndexController.go
|
|
│ └─ SpiderController.go
|
|
├─ logic
|
|
│ └─ IndexLogic.go
|
|
├─ model
|
|
│ ├─ Categories.go
|
|
│ ├─ LZJson.go
|
|
│ ├─ Movies.go
|
|
│ └─ Search.go
|
|
├─ plugin
|
|
│ ├─ common
|
|
│ │ ├─ JsonUtils.go
|
|
│ │ ├─ ProcessCategory.go
|
|
│ │ └─ ProcessMovies.go
|
|
│ ├─ db
|
|
│ │ ├─ mysql.go
|
|
│ │ └─ redis.go
|
|
│ └─ spider
|
|
│ ├─ Spider.go
|
|
│ ├─ SpiderCron.go
|
|
│ └─ SpiderRequest.go
|
|
├─ router
|
|
│ └─ router.go
|
|
├─ go.mod
|
|
├─ go.sum
|
|
├─ main.go
|
|
└─ README.md
|
|
```
|
|
|
|
|
|
|
|
## 启动方式
|
|
|
|
### 本地运行
|
|
|
|
1. 修改 /server/plugin/db 目录下的 mysql.go 和 redis.go 中的连接地址和用户名密码
|
|
2. 在 server 目录下执行 `go run main.go`
|
|
|
|
|
|
|
|
|
|
|
|
## 数据库信息简介
|
|
|
|
#### 1.Mysql
|
|
|
|
> 连接信息(以docker compose部署为例) :
|
|
|
|
```yaml
|
|
mysql:
|
|
ip: 部署的服务器IP
|
|
port: 3610
|
|
username: root
|
|
password: root
|
|
database: FilmSite
|
|
```
|
|
|
|
> 数据库结构
|
|
|
|
- 数据库: FilmSite
|
|
- 数据表 search
|
|
|
|
> search 表 (用于记录影片的相关检索信息, 主要用于影片的 搜索, 分类, 排序 等)
|
|
|
|
| 字段名称 | 类型 | 字段释义 |
|
|
| ------------ | -------- | ---------------------- |
|
|
| id | bigint | 自增主键 |
|
|
| created_at | datetime | 记录创建时间 |
|
|
| updated_at | datetime | 记录更新时间 |
|
|
| deleted_at | datetime | 逻辑删除字段 |
|
|
| mid | bigint | 影片ID |
|
|
| cid | bigint | 二级分类ID |
|
|
| pid | bigint | 一级分类ID |
|
|
| name | varchar | 影片名称 |
|
|
| sub_title | varchar | 子标题(影片别名) |
|
|
| c_name | varchar | 分类名称 |
|
|
| class_tag | varchar | 剧情标签 |
|
|
| area | varchar | 地区 |
|
|
| language | varchar | 语言 |
|
|
| year | bigint | 上映年份 |
|
|
| initial | varchar | 首字母 |
|
|
| score | double | 豆瓣评分 |
|
|
| update_stamp | bigint | 影片更新时间戳 |
|
|
| hits | bigint | 热度(播放次数) |
|
|
| state | varchar | 状态(正片) |
|
|
| remarks | varchar | 更新状态(完结 \| xx集) |
|
|
| release_data | bigint | 上映时间戳 |
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.Redis
|
|
|
|
> 连接信息(以docker compose部署为例) :
|
|
|
|
```yaml
|
|
## 部署时默认使用如下信息
|
|
redis:
|
|
ip: 部署的服务器IP
|
|
port: 3620
|
|
password: root
|
|
DB: 0 ##使用的redis数据库为0号库
|
|
```
|
|
|