用github action搭建一个telegram的MIUIOTA推送

使用github的action有很多好处

第一个就是人家服务器在国外,推送到TG还是很方便的,不会要什么科学技术。


因为一直手里在维护一个叫做“FIIME ROM”的项目,因此也要找过国际版的用户,所以才会有这样一个推送存在!

第一步,申请推送bot

参考这篇:https://zhuanlan.zhihu.com/p/30450761  毕竟我们重点是玩推送


第二步,使用github action

这里有很多的坑,我踩过我也告诉大家,比如你的action脚本有误,设置的定时执行就会报错,甚至有缓存,所以就等第二天看修改的结果吧

或者说哪位大佬指点下,其他的方案,留言告诉我。

这两个需要你导出你本地的python环境依赖,直接丢上去,脚本也丢上去。

脚本如下:

# -*- coding: utf-8 -*-
# @Author: aoao
# @Date:   2022-06-10 09:09:34
# @Last Modified by:   aoao
# @Last Modified time: 2022-06-15 17:49:23

import urllib.request
import urllib.parse
import json
import urllib.error
from lxml import etree
import os
import time
from datetime import datetime, date

def getnewROM(send):
    try:
        send = urllib.parse.quote(send)
        url = "TGAPI密匙填写在这里/sendMessage?chat_id=@fiimerom&text=" + send  # 注意改个密匙
        headers = {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Mobile Safari/537.36'
        }
        request = urllib.request.Request(url=url,headers=headers)
        reponse = urllib.request.urlopen(request)
    except:
        pass



dayOfWeek = datetime.now().weekday()
if dayOfWeek in [0,1,2,3]:
    ppppp = "1"
elif dayOfWeek in [4]:
    ppppp = "1b"
else:
    print('今天是非工作日!跳过')
    exit()


getnewROM('FiimeROM提示:检测到MIUI更新,推送1分钟后开始')
time.sleep(60)

# 接口地址
url = "https://miui.511i.cn/?index=rom_list"
headers = {
    'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Mobile Safari/537.36'
}
# vab机型数据
d = ['ALIOTH','ODIN','RUBENS','MATISSE','INGRES','MONA','ELISH','HAYDN','PSYCHE','RENOIR','STAR','THYME','VENUS','APOLLO','CAS','CUPID','ZEUS','PSYCHE','XAGA','ZIJIN']
n = 0
for a in d:
    data = {
        'dh':a,
         # lx参数: 0稳定版,1开发版内测,1b开发版公测
        'lx':ppppp
    }
    data = urllib.parse.urlencode(data).encode("utf-8")
    if a == 'ALIOTH':
        name = '红米K40 / POCO F3'
    elif a == 'ODIN':
        name = '小米MIX4'
    elif a == 'RUBENS':
        name = '红米K50' 
    elif a == 'MATISSE':
        name = '红米K50 Pro' 
    elif a == 'INGRES':
        name = '红米K50 电竞版'
    elif a == 'MONA':
        name = '小米CIVI'
    elif a == 'ELISH':
        name = '小米平板5 Pro (WiFi)'
    elif a == 'HAYDN':
        name = '红米K40 Pro系列'
    elif a == 'PSYCHE':
        name = '小米12X'
    elif a == 'RENOIR':
        name = '小米11 青春版'
    elif a == 'STAR':
        name = '小米11 Pro / Ultra'
    elif a == 'THYME':
        name = '小米10S'
    elif a == 'VENUS':
        name = '小米11'
    elif a == 'APOLLO':
        name = '红米K30S 至尊纪念版'
    elif a == 'CAS':
        name = '小米10 UITra'
    elif a == 'CUPID':
        name = '小米12'
    elif a == 'ZEUS':
        name = '小米12 Pro'
    elif a == 'PSYCHE':
        name = '小米12X'
    elif a == 'XAGA':
        name = '红米Note11T Pro / Pro+'
    elif a == 'ZIJIN':
        name = '小米CIVI 1S'
    try:
        request = urllib.request.Request(url=url,data=data,headers=headers)
        reponse = urllib.request.urlopen(request)
        contant = etree.HTML(reponse.read().decode("utf-8"))
        list_td = contant.xpath("//td//a[@href]/@href")
        today = datetime.today().strftime('%Y-%m-%d')
        try:
            # print(list_td[0]) 获取最新的一个内测版本地址
            # getnewROM("获取到更新:代号【" + a + "】\n下载地址:" + str(list_td[0]))
            if str(list_td[0]) == '':
                pass
            else:
                n += 1
                getnewROM("获取到第" + str(n) + "个更新:\n机型:" + name + "\n代号:【" + a + "】\n发布时间:" + today + "\n下载地址:\n" + str(list_td[0]))
                with open('/www/wwwroot/mi.fiime.cn/0相关资料/sql.txt','a') as f:
                    f.write(str(list_td[0])+'\n')
        except Exception as e:
            print(e)
            continue
    except urllib.error.HTTPError:
        print('网络错误,获取异常!')
    except urllib.error.URLError:
        print('当前%sROM无有效链接!'%(a))

getnewROM('今日获取MIUI更新结束!\n 技术支持: https://mi.fiime.cn')

然后进入到action的yml配置文件修改:

不懂action的看下这个:https://zhuanlan.zhihu.com/p/164744104

具体代码:

# 当有改动推送到master分支时,启动Action
name: MIUIOTA
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
  schedule:
  # 定时任务  这个时间有个坑 中国时间比他快8小时  所以要自己推一下!
   - cron: '0 12 * * *'
   
jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: 检查分支
        uses: actions/checkout@v2

      - name: 安装 Python 3.9.13
        uses: actions/setup-python@v1
        with:
          python-version: 3.9.13

      - name: 安装模块
        run: |
          pip install -r requirements.txt

      - name: 开始推送MIUI升级信息
        run: |
          python MIUIOTA.py


完毕,每天晚上8点等着推送就是了!

当然推送失败也会邮件告诉你,到时候你看下什么问题 具体修一下吧!

Katen Doe

Fiime分享

专业分享,共建知识殿堂

猜你喜欢

wave

按 ECS 键退出搜索