「打造你的赛博名片📇」我在Github做天气预报☀️☁️⛅️⛈️ WeatherPainting开源整活

Hi!这里是JustHappy,上周北京大风天,闲来无事,听着窗外呼呼的大风,突然来灵感了,于是乎......我写了一个天气预报。有什么不一样呢,快来看看吧!

先向大家展示一下我的Github个人页,是不是有些特别?

哈哈,这就是我打造的一个Github个人页的天气组件,每天更新四次天气信息

  • 仓库已经开源:需要的朋友自取哈,用起来很简单,仓库中有文档,下面是链接

  • WeatherPainting

所以这个东西是怎么整的?

🛠️ 实现原理

整个项目的核心是通过 GitHub Actions 定时获取天气数据,生成 SVG 图片,并展示在 GitHub 个人页上。其实很简单,我们从几个方面入手吧

⛅️天气数据从哪里来?

既然是开源的项目,我们就用开源免费的Api去获取天气数据,我找到的是 open-meteo.com/

很简单,我们只需要把需要查询地址的经纬度传给它就行了

js 复制代码
const latitude = 26.3174;
const longitude = 119.5384;
const url = `https://api.open-meteo.com/v1/forecast?latitude=${latitude}&longitude=${longitude}&daily=weathercode,temperature_2m_max,temperature_2m_min&timezone=Asia%2FShanghai&forecast_days=7`;

const response = await fetch(url);

如何去构建我们想要的图像?

我为什么选择SVG?有以下几点原因吧:

  1. 可以从Iconfont上直接找到很多好看的图标物料,这是我选择的 天气-填充

  2. 方便JS操作构建最终的图像,标签化,逻辑简单明了

  3. 有后期升级为动态图片的潜力

我尝试过不同类型的动态图片,各有各的优缺点,比如Gif帧率不高观感不行、canvas没有SVG方便操作

如何更新天气数据?

.github/workflows 目录下,我配置了一个 GitHub Actions 工作流,设置为每天运行四次。每次运行时,会执行以下操作:

  • 获取最新的天气数据
  • 生成新的 SVG 图片
  • 将图片推送到 GitHub 仓库中

如何挂载我们的图像?

直接通过仓库下对应的地址去引用?抱歉,我发现了一下问题

⚠️ 1. GitHub 对 .svg 的 MIME 类型处理有一定安全策略

SVG 文件是可以嵌入 JavaScript 脚本的,所以 GitHub 对 SVG 文件(尤其是来自 main 分支的 raw.githubusercontent.com 地址)做了更严格的 防 XSS 限制在某些上下文(比如 Profile README)会被拒绝加载

于是呼我也只能使用骚操作

使用 GitHub Pages 托管 SVG

你可以用 GitHub Pages 创建一个静态站,然后把 SVG 放里面,比如:

你只需要在主仓库启用 GitHub Pages,然后把图片放进目录,你就可以在GitHub个人页的README中引用啦。于是呼我们的开源项目也是有了github page😂😂

有关开源的思考?

我想每个参与开源或者想参与开源的朋友都听说过Linus吧?对!就是那个创造了Linux和Git的男人

Linus认为驱动人类的是三点动机:生存,人在社会秩序中的位置,以及娱乐

这可能是他自传叫《just for fun》的原因之一吧,

有时候我会想为什么有那么多朋友参与开源,却始终是带着某个"目的"来的,为了完成某个"指标"而来的,却丢失了最开始的乐趣,也有很多人问:"你做这个的目的是什么?有什么意义?"

所以我回答:名利固然重要,但是有的时候你可以暂时忘掉,享受纯粹,但行好事莫问前程,Just for fun, Just Happy 也许你会收获不同的东西

哈哈!最后,如果你觉得不错,可以给小弟点个star吗?

➡️ 链接直达 github WeatherPainting

相关推荐
初辰ge2 分钟前
做个大屏既要不留白又要不变形还要没滚动条,我直接怒斥领导,大屏适配就这四种模式
前端·javascript
Face5 分钟前
路由Vue-router 及 异步组件
前端·javascript·vue.js
Nano6 分钟前
Axios 进阶指南:掌握请求取消与进度监控的艺术
前端
工呈士6 分钟前
Context API 应用与局限性
前端·react.js·面试
ArcX6 分钟前
从 JS 到 Rust 的旅程
前端·javascript·rust
胡gh7 分钟前
深入理解React,了解React组件化,脱离”切图崽“,迈向高级前端开发师行列
前端·react.js
技术小丁8 分钟前
使用 HTML + JavaScript 实现自定义富文本编辑器开发实践(附完整代码)
前端·javascript·html
Alla T33 分钟前
【前端】缓存相关
前端·缓存
christine-rr44 分钟前
征文投稿:如何写一份实用的技术文档?——以软件配置为例
运维·前端·网络·数据库·软件构建