# gitee-stargazers **Repository Path**: fork-code/gitee-stargazers ## Basic Information - **Project Name**: gitee-stargazers - **Description**: 通过chart图表显示gitee项目的 star 趋势 - **Primary Language**: NodeJS - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.whnb.wang - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2021-06-17 - **Last Updated**: 2021-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gitee-stargazers 将 Gitee 项目的 Star 数显示到统计图上。 官方示例:[https://www.whnb.wang](https://www.whnb.wang) ## 开发背景 目前开发者最常用的查看 star 趋势的工具一般都是 [starchart.cc](https://starchart.cc/),比如: [![Stargazers over time](https://starchart.cc/justauth/JustAuth.svg)](https://starchart.cc/justauth/JustAuth) 但是这个工具不支持 Gitee 中的仓库,那怎么行!必须安排上! ## 使用方式 ### Npm 需要先修改配置 `config/config.js`: 将标记为 `'本地启动时需要修改该参数'` 的部分替换为自己的实际内容 ```console npm run start ``` ### Docker ```bash # 1. 拉取镜像 docker pull justauth/gitee-stargazers:v1.11 # 2. 自建 redis,可使用 docker 或者使用本地安装(需要保证可被容器访问) # 3. 运行容器 docker run \ -d \ -p 3000:3000 \ -e GITEE_USERNAME={your gitee username} \ -e GITEE_PASSWORD={your gitee password} \ -e GITEE_CLIENT_ID={your gitee oauth app clientId} \ -e GITEE_CLIENT_SECRET={your gitee oauth app clientSecret} \ -e REDIS_HOST={redis host, default is 127.0.0.1} \ -e REDIS_PORT={redis port, default is 6379} \ -e REDIS_PASSWORD={redis password, required} \ -e REDIS_DB_INDEX={default is 1} \ -e REDIS_EXPIRE={redis cache expire time, default is 3600s} \ -e REDIS_CONNECT_TIMEOUT={redis connect timeout, default is 3000} \ -e CONTRIBUTORS_DIR={Directory for storing contributors' avatars} \ -e PROD=true \ -v /var/log/gitee-stargazers/:/usr/src/app/log/ \ -v /var/gs/contributors/:/usr/src/gs/contributors/ \ --name gitee-stargazers \ justauth/gitee-stargazers:v1.11 ``` - `GITEE_USERNAME`: 你的 Gitee 账号名 - `GITEE_PASSWORD`: 你的 Gitee 账号密码 - `GITEE_CLIENT_ID`: 你的 Gitee OAuth 应用的 clientId - `GITEE_CLIENT_SECRET`: 你的 Gitee OAuth 应用的 clientSecret - `REDIS_HOST`: redis host,默认 `127.0.0.1` - `REDIS_PORT`: redis 端口号,默认 `6379` - `REDIS_PASSWORD`: redis 密码,必须 - `REDIS_DB_INDEX`: redis 数据库索引,默认 1 - `REDIS_EXPIRE`: redis 缓存的过期时间,可选,默认 3600, 单位 秒 - `REDIS_CONNECT_TIMEOUT`: redis 连接过期时间,可选,默认 3000, 单位秒 - `CONTRIBUTORS_DIR`: 存放贡献者头像文件的路径 - `PROD`: 是否为线上环境,字符串类型,当为 'true' 时, 会将 console 日志写入文件 启动 docker 后,可以通过以下命令查看日志: - 查看控制台业务日志:`tail -f /var/log/gitee-stargazers/console-xxx.log` - 查看请求访问日志:`tail -f /var/log/gitee-stargazers/access-xxx.log` ### Docker Compose 新建 docker-compose.yml ```yaml version: '3.3' services: app: image: "justauth/gitee-stargazers:v1.11" container_name: "gitee-stargazers" volumes: - /var/log/gitee-stargazers/:/usr/src/app/log/ environment: # 是否为线上环境,字符串类型,当为 'true' 时, 会将 console 日志写入文件 PROD: "true" # 你的 Gitee 账号名 GITEE_USERNAME: "xx" # 你的 Gitee 账号密码 GITEE_PASSWORD: "xx" # 你的 Gitee OAuth 应用的 clientId GITEE_CLIENT_ID: "xx" # 你的 Gitee OAuth 应用的 clientSecret GITEE_CLIENT_SECRET: "xx" # redis 连接 host,默认 127.0.0.1 REDIS_HOST: 'redis' # redis 端口,默认 6379 REDIS_PORT: 6379 # redis 密码,必须,此处的密码为下方 redis 容器启动时指定的密码(--requirepass) REDIS_PASSWORD: "gs123456" # redis 连接超时时间,单位秒 REDIS_CONNECT_TIMEOUT: 3 # redis 缓存过期时间,单位秒 REDIS_EXPIRE: 3600 # redis 数据库索引,默认 1 REDIS_DB_INDEX: 2 # 存放贡献者头像文件的路径 CONTRIBUTORS_DIR: /usr/src/gs/contributors ports: - "3000:3000" depends_on: - redis links: - redis redis: image: redis container_name: "gs_redis" command: redis-server --appendonly yes --requirepass gs123456 ports: - "6379:6379" volumes: - /var/redis/:/data/ ``` 将上方 `yml` 文件中的 `environment` ,按照注释说明,修改为真实内容后通过 `docker-compose` 运行项目 ```bash docker-compose up -d ``` ### 访问 浏览器访问:http://localhost:3000/{owner}/{repo} . - owner: 项目所有者,支持组织名、用户名、企业名 - repo:仓库名 例如:[http://localhost:3000/fujieid/jap](http://localhost:3000/fujieid/jap) 示例: ![](docs/img/3399b37c.png) ## 关于配置项 - 项目中使用的密码模式获取 token, 所以需要配置 gitee 的账号密码,如果开发者介意此点,可以单独申请一个 gitee 账号。 - OAuth 应用申请的时候 回调地址可以随便填,主要的是应用创建完成后的 `clientId` 和 `clientSecret` - `expire` 参数不建议太低(默认 3600 秒),太低的话容易触发 Gitee 限流,**谨记谨记谨记**,程序中已经限制了不可低于 3600。 - 可以通过在 url 后面追加参数(e)的形式指定某一项目的缓存时间(不低于 3600 s),如:`http://localhost:3000/{owner}/{repo}?e=10000`,此种方式可以针对那种 star 数比较多的项目,因为短期的 star 增长趋势已经对整体不构成明显影响,为了提高访问速度,可以使用该方式。 - 注意:如果已经通过`http://localhost:3000/{owner}/{repo}` 方式获取过数据,则`?e=xx`不会重置缓存,在缓存有效期内(1小时)不会重置缓存,只能等原缓存过期后才可使用`?e=xx`参数启用新的缓存时间 - **`console-xxx.log` 中会打印出 redis 和 gitee 的账号密码!**请勿公开该文件! ## 特别说明 ~~由于受 Gitee 接口限制,目前此项目暂时只能获取到两个月内的 star 数据,获取更多数据的方式,正在和 Gitee 技术沟通。~~ 该问题已经得到解决,再次感谢官方大大的大力支持! ## 参考资料 `index.html` 和 `style.css` 文件参考并改造自 [caarlos0/starcharts](https://github.com/caarlos0/starcharts)项目 ## 资源 - GraphicsMagick: ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/1.3/ ## 参考命令 ### 通过 Dockerfile 构建镜像 docker build -t justauth/gitee-stargazers:v1.11 . ### push docker push justauth/gitee-stargazers:v1.11