No description
Find a file
xiaoman1221 bd42309f2e docs(readme): 更新项目文档完善结构说明和接口示例
- 添加了详细的项目目录结构说明
- 补充了完整的安装步骤和代码示例
- 更新了环境变量配置说明
- 添加了搜索接口的详细使用示例和返回结果
- 修正了API请求格式和字段说明
2026-03-20 15:08:07 +08:00
.idea feat(core): 初始化媒体搜索服务基础架构 2026-03-20 15:03:30 +08:00
entity feat(core): 初始化媒体搜索服务基础架构 2026-03-20 15:03:30 +08:00
.env feat(core): 初始化媒体搜索服务基础架构 2026-03-20 15:03:30 +08:00
go.mod feat(core): 初始化媒体搜索服务基础架构 2026-03-20 15:03:30 +08:00
go.sum feat(core): 初始化媒体搜索服务基础架构 2026-03-20 15:03:30 +08:00
main.go feat(core): 初始化媒体搜索服务基础架构 2026-03-20 15:03:30 +08:00
README.md docs(readme): 更新项目文档完善结构说明和接口示例 2026-03-20 15:08:07 +08:00
redis.go feat(core): 初始化媒体搜索服务基础架构 2026-03-20 15:03:30 +08:00
tmdb.go feat(core): 初始化媒体搜索服务基础架构 2026-03-20 15:03:30 +08:00

MediaSearch

基于 Go 语言的媒体资源搜索服务,集成 TMDBThe Movie DatabaseAPI支持电影和电视剧的搜索功能并提供 Redis 缓存以提高查询效率。

功能特性

  • 🔍 TMDB 搜索:支持多类型媒体资源搜索(电影、电视剧)
  • 💾 Redis 缓存:自动缓存搜索结果,减少 API 请求
  • 🌏 中文支持:返回中文本地化的搜索结果
  • 🖼️ 图片链接补全:自动生成完整的海报和背景图片 URL
  • 🚀 高性能:基于 Gin 框架的轻量级 HTTP 服务

项目结构

MediaSearch/ 
├── main.go # 主程序入口HTTP 路由配置 
├── tmdb.go # TMDB API 对接与数据处理 
├── redis.go # Redis 连接与操作封装 
├── entity/ # 数据模型定义 
│ └── TehMovieDB.go 
├── .env # 环境变量配置 
├── go.mod # Go 模块依赖管理 
└── README.md # 项目文档

环境要求

  • Go 1.26+
  • Redis 服务器
  • TMDB API Key需自行申请

安装步骤

1. 克隆项目

   git clone https://git.1v.fit/xiaoman1221/MediaSearch
   cd MediaSearch
   go mod tidy
   go run main.go
   

2. 安装依赖

3. 配置环境变量

编辑 .env 文件,配置以下环境变量: HOST=0.0.0.0 PORT=8080

REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASS=<REDIS_PASSWORD> REDIS_DB=0

TMDB_API_KEY=<YOUR_TMDB_API_KEY>

⚠️ 重要:请替换 TMDB_API_KEY 为你自己的 API 密钥
访问 TMDB 申请 API Key

4. 运行服务

服务启动后,访问 http://localhost:8080

API 接口

搜索媒体资源

请求格式: GET /api/v1/search/tmdb/流浪地球 返回结果:

{"page":1,"results":[{"backdrop_path":"/94cS0mzODEoNIXFT7nhPcI8V4IJ.jpg","full_backdrop_url":"https://image.tmdb.org/t/p/w1280/94cS0mzODEoNIXFT7nhPcI8V4IJ.jpg","full_poster_url":"https://image.tmdb.org/t/p/w780/cAS2e9hUwu6Ydsx7byXj16H00Ai.jpg","genre_ids":[878,28,12],"id":842675,"media_type":"movie","original_title":"流浪地球2","overview":"在并不遥远的未来,太阳急速衰老与膨胀,再过几百年整个太阳系将被它吞噬毁灭。为了应对这场史无前例的危机,地球各国放下芥蒂,成立联合政府,试图寻找人类存续的出路。通过摸索与考量,最终推着地球逃出太阳系的“移山计划”获得压倒性胜利。人们着手建造上万台巨大的行星发动机,带着地球踏上漫漫征程。满腔赤诚的刘培强和韩朵朵历经层层考验成为航天员大队的一员,并由此相知相恋。但是漫漫征途的前方,仿佛有一股神秘的力量不断破坏者人类的自救计划。看似渺小的刘培强、量子科学家图恒宇、联合政府中国代表周喆直以及无数平凡的地球人,构成了这项伟大计划的重要一环……本片根据刘慈欣同名科幻小说改编。","popularity":4.4009,"poster_path":"/cAS2e9hUwu6Ydsx7byXj16H00Ai.jpg","release_date":"2023-01-22","title":"流浪地球2","vote_average":7.287,"vote_count":697},{"backdrop_path":"/wIrqeoJHYtZmneqIufPtcOHMjOg.jpg","full_backdrop_url":"https://image.tmdb.org/t/p/w1280/wIrqeoJHYtZmneqIufPtcOHMjOg.jpg","full_poster_url":"https://image.tmdb.org/t/p/w780/tXuQCgx69DxVgeTsU0TkruR3i9O.jpg","genre_ids":[878,28,18],"id":535167,"media_type":"movie","original_title":"流浪地球","overview":"近未来科学家们发现太阳急速衰老膨胀短时间内包括地球在内的整个太阳系都将被太阳所吞没。为了自救人类提出一个名为“流浪地球”的大胆计划即倾全球之力在地球表面建造上万座发动机和转向发动机推动地球离开太阳系用2500年的时间奔往另外一个栖息之地。中国航天员刘培强在儿子刘启四岁那年前往国际空间站和国际同侪肩负起领航者的重任。转眼刘启长大他带着妹妹朵朵偷偷跑到地表偷开外公韩子昂的运输车结果不仅遭到逮捕还遭遇了全球发动机停摆的事件。为了修好发动机阻止地球坠入木星全球开始展开饱和式营救连刘启他们的车也被强征加入。在与时间赛跑的过程中无数的人前仆后继奋不顾身只为延续百代子孙生存的希望……","popularity":5.602,"poster_path":"/tXuQCgx69DxVgeTsU0TkruR3i9O.jpg","release_date":"2019-02-05","title":"流浪地球","vote_average":6.641,"vote_count":1120},{"backdrop_path":"/5t0NhBWc56c1zvQIe6DkiE55qp3.jpg","full_backdrop_url":"https://image.tmdb.org/t/p/w1280/5t0NhBWc56c1zvQIe6DkiE55qp3.jpg","full_poster_url":"https://image.tmdb.org/t/p/w780/kzRs3qB2Hd6gPmL8NKSHFs8E8CK.jpg","genre_ids":[878],"id":1381967,"media_type":"movie","original_title":"流浪地球飞跃2020特别版","overview":"太阳即将毁灭人类在地球表面建造出巨大的推进器寻找新家园。然而宇宙之路危机四伏为了拯救地球为了人类能在漫长的2500年后抵达新家园流浪地球时代的年轻人挺身而出展开争分夺秒的生死之战","popularity":1.1868,"poster_path":"/kzRs3qB2Hd6gPmL8NKSHFs8E8CK.jpg","release_date":"2020-11-26","title":"流浪地球飞跃2020特别版","vote_average":9,"vote_count":1},{"backdrop_path":"/n3XvbFpRbTSu4olOwu0Rjuirrdv.jpg","full_backdrop_url":"https://image.tmdb.org/t/p/w1280/n3XvbFpRbTSu4olOwu0Rjuirrdv.jpg","full_poster_url":"https://image.tmdb.org/t/p/w780/zQP6iW5Ya4MyMRXl0t28ckV1spp.jpg","genre_ids":[99],"id":1328632,"media_type":"movie","original_title":"流浪地球2再次冒险","overview":"  该纪录片将带观众深入探索《流浪地球2》的幕后世界导演、制片人、美术及特效团队等电影核心主创将亲自讲述这部科幻巨制的制作过程与他们的心路历程观众将看到他们在追求电影艺术极致的同时如何推动中国电影工业化进程、为中国科幻电影的未来开辟新道路。\r   此外,纪录片还特别邀请了中国知名科幻学者、作家回顾中国科幻的发展历程——从早期的科幻小说到如今的科幻电影,观众将了解到百年时光中,中国科幻从萌芽到茁壮成长的过程。这是一次不容错过的中国科幻电影冒险之旅,也是一次对中国科幻未来的深情展望。","popularity":0.917,"poster_path":"/zQP6iW5Ya4MyMRXl0t28ckV1spp.jpg","release_date":"2024-09-15","title":"流浪地球2再次冒险","vote_average":7,"vote_count":2},{"backdrop_path":"/cCzMePim8EXRHExizmBhJC063Ju.jpg","full_backdrop_url":"https://image.tmdb.org/t/p/w1280/cCzMePim8EXRHExizmBhJC063Ju.jpg","full_poster_url":"https://image.tmdb.org/t/p/w780/6J47ApJVOmNrHJezrxnRaTDXBfx.jpg","genre_ids":[878,28,12],"id":1231322,"media_type":"movie","original_title":"流浪地球3","overview":"太阳即将毁灭,人类在地球表面建造出巨大的推进器,寻找新的家园。然而宇宙之路危机四伏,为了拯救地球,流浪地球时代的年轻人第三次挺身而出,展开争分夺秒的生死之战……","popularity":1.8513,"poster_path":"/6J47ApJVOmNrHJezrxnRaTDXBfx.jpg","release_date":"2027-02-06","title":"流浪地球3","vote_average":0,"vote_count":0},{"backdrop_path":"","full_backdrop_url":"","full_poster_url":"https://image.tmdb.org/t/p/w780/xBbmSszVuZEFWt4AUZTQvEzd36t.jpg","genre_ids":[],"id":276672,"media_type":"tv","original_title":"","overview":"因为太阳氦闪爆炸的原因地球面临即将被毁灭的风险为了拯救地球拯救全人类在男主的带领下华夏开始实行流浪地球计划就在氦三发动机研发成功的下一刻由于米国隐瞒太阳爆炸提前50年的消息导致所有工作前功尽弃太阳提前爆炸整个地球除了米国提前逃跑所有人都全部被毁灭男主意外重生回到年轻时候研发出氦三发动机后带着发动机前往联合国大会意图改变已经投票结束的结果因为米国人根本就没打算拯救所有人所以为了拯救地球男主必须说服他们实行流浪地球计划但却受到米国以及整个西方世界的层层阻拦和故意抹黑质疑男主所带来的氦三发动机是假的根本不能启动男主开始一步步自证可是因为启动氦三发动机需要巨大能量没有辅助器件无法稳定启动关键是个钱兴国带着华夏志愿军前往冰封启动辅助器件虽然启动成功但是全员壮烈牺牲就在男主启动成功之后依旧被米国人质疑全都是华夏的魔术都是华夏营造的假象可就在男主进一步自证氦三发动机和流浪地球计划的可行性后米国竟然厚着脸皮想要把氦三发动机占为己有却不想男主早就有所准备藏好了炸弹......","popularity":0.0286,"poster_path":"/xBbmSszVuZEFWt4AUZTQvEzd36t.jpg","release_date":"","title":"","vote_average":0,"vote_count":0}],"total_pages":1,"total_results":6}

请求示例: curl -X GET "http://localhost:8080/api/v1/search/tmdb/流浪地球" -H "accept: application/json"

字段说明:

字段 类型 说明
id int TMDB 唯一标识符
title string 标题(中文)
original_title string 原始标题
overview string 剧情简介
poster_path string 海报图片相对路径
backdrop_path string 背景图片相对路径
full_poster_url string 完整海报图片 URLw780
full_backdrop_url string 完整背景图片 URLoriginal
release_date string 上映日期
vote_average float64 评分0-10
vote_count int 投票数
popularity float64 热度指数
media_type string 媒体类型movie/tv

技术栈

开发说明

图片尺寸选项

TMDB 提供多种图片尺寸,当前配置:

  • 海报图片w780 (780px 宽度)
  • 背景图片original (原始分辨率)

可选尺寸:

  • w92, w154, w185, w342, w500, w780, w1280, original

Redis 数据存储

  • 所有搜索结果会自动缓存到 Redis
  • 缓存键名格式:ms_{搜索关键词}
  • 数据以 JSON 格式存储,支持自动序列化和反序列化

注意事项

  1. TMDB API 限制

    • 每 24 小时最多 500 次请求
    • 建议充分利用 Redis 缓存减少请求次数
  2. 错误处理

    • Redis 连接失败会返回错误信息
    • TMDB API 调用失败会返回相应的错误描述
  3. 生产环境部署

    • 请勿将 .env 文件提交到版本控制
    • 建议使用环境变量或密钥管理服务存储敏感信息

License

MIT License

联系方式

如有问题或建议,请提交 Issue 或 Pull Request。