无服务器每日自动推送 B 站热门视频

有的人用 Amazon Lambda 跑业务,有的人用它省运维,而我------用它无成本推送 B 站热门视频,早上起床就能看到热门视频,地铁上没刷完的,还能留着上班偷偷挂后台刷会,再也不用跑到首页去找热门视频了~

新用户可获得高达 200 美元的服务抵扣金

亚马逊云科技新用户可以免费使用亚马逊云科技免费套餐(Amazon Free Tier)。注册即可获得 100 美元的服务抵扣金,在探索关键亚马逊云科技服务时可以再额外获得最多 100 美元的服务抵扣金。使用免费计划试用亚马逊云科技服务,最长可达 6 个月,无需支付任何费用。

前言:为啥要用 Lambda 干这事?

Lambda 是 Amazon 的无服务器计算服务,你写好函数,它帮你在云上跑。 最重要的是------它免费额度永久有效

  • 100 万次请求 / 月
  • 40 万 GB-秒计算时间 / 月

对这种每天跑一次的任务来说,这基本等于无限。你连家里的树莓派电费都省了。

所以今天我们就用 Lambda,搞个每天早上 9 点自动推送 B 站热门视频到企业微信的机器人。

1. 注册账号 & 创建 Lambda

如果你没 Amazon 账号,先去 Amazon 官网 注册一个:

  • 手机号、账单信息可以直接用国内资料填写;
  • 选择基础支持计划(无需额外开支);
  • 注册完成后等待身份验证通过,即可进行下一步。

登录后搜索 Lambda,点击"创建函数":

  • 名称随便,比如 bilibili-hot-bot
  • 运行时选 Python 3.12(Node.js 也行)
  • 权限直接用默认执行角色(Amazon 会自动帮你创建)

2. 核心代码:抓 B 站热门排行榜

B 站提供官方开放接口,直接返回 JSON 数据,无需登录。 下面是 Python 版本的 Lambda 函数示例:

python 复制代码
import json
import requests


def lambda_handler(event, context):
    url = "https://api.bilibili.com/x/web-interface/popular?ps=5"
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
                      "AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/115.0.0.0 Safari/537.36"
    }

    try:
        res = requests.get(url, headers=headers)
        res.raise_for_status()
        data_json = res.json()
    except Exception as e:
        print("请求 B 站热门排行榜失败:", e)
        return


    if 'data' not in data_json or 'list' not in data_json['data']:
        print("返回数据格式不对:", json.dumps(data_json, indent=2, ensure_ascii=False))
        return


    hot_list = []
    for i, item in enumerate(data_json['data']['list'], start=1):
        title = item.get('title', 'No Title')
        bvid = item.get('bvid', '')
        link = f"https://www.bilibili.com/video/{bvid}" if bvid else 'No Link'
        hot_list.append(f"{i}. {title}\n{link}")


    content = "\n\n".join(hot_list)


    # 本地测试
    print("=== B 站热门前 5 ===")
    print(content)


    # 企业微信推送
    send_to_wechat(content)


    return {
        'statusCode': 200,
        'body': json.dumps('Pushed hot list!')
    }


# 企业微信推送函数
def send_to_wechat(content):
    webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你自己的key"
    requests.post(webhook, json={
        "msgtype": "text",
        "text": {
            "content": content
        }
    })


# 本地调试
if __name__ == "__main__":
    lambda_handler({}, {})

3. 上传依赖

因为 Lambda 默认没 requests,你得本地打包:

perl 复制代码
mkdir package
pip install requests -t package
cp lambda_function.py package/
cd package
zip -r ../function.zip .

然后在 Lambda 控制台上传 function.zip,保存。

4. 设置每天 9 点自动执行

最后一步,我们需要让这个函数自动运行。

  1. 在 Lambda 函数页面,点击 "添加触发器" (Add trigger)
  2. 在下拉菜单中选择 EventBridge (or CloudWatch Events)
  3. 选择 "创建新规则" (Create a new rule)
  4. 计划表达式 (Schedule expression): 选择 Cron 表达式 cron(0 1 * * ? *)(注意 Amazon 用 UTC,这里 1 点就是北京时间早上 9 点)
  5. 点击 "添加" (Add)

大功告成!

5. 效果展示

第二天早上 9 点,你就能在企业微信收到这样的推送:

总结

免费的就是好用,量大管饱,爽吃就完了~ 不用买服务器、不用关心运维,代码更新点保存就行。

同样的思路,你还可以推送微博热搜、掘金热榜,甚至 TG / Discord 频道内容。

云计算是别人的电脑,免费额度是别人的钱。用别人的电脑帮你干活,还不用给钱,芜湖起飞🛫🛫~

友情提示:如果用完了之后不再需要使用服务的话,记得要在控制台关闭服务,以防超过免费额度产生扣费

相关推荐
你的人类朋友1 小时前
说说git的变基
前端·git·后端
阿杆1 小时前
玩转 Amazon ElastiCache 免费套餐:小白也能上手
后端
公众号_醉鱼Java3 小时前
Elasticsearch 字段膨胀使用 Flattened类型
后端·掘金·金石计划
JohnYan3 小时前
工作笔记 - CentOS7环境运行Bun应用
javascript·后端·容器
探索java4 小时前
Netty Channel详解:从原理到实践
java·后端·netty
追逐时光者4 小时前
2025 年全面的 C#/.NET/.NET Core 学习路线集合,学习不迷路!
后端·.net
ankleless5 小时前
Spring Boot 实战:从项目搭建到部署优化
java·spring boot·后端
百锦再6 小时前
一文精通 Swagger 在 .NET 中的全方位配置与应用
后端·ui·.net·接口·配置·swagger·访问
用户4822137167756 小时前
C++——静态数组、动态数组
后端