惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
J
Java Code Geeks
I
InfoQ
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
V
Visual Studio Blog
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 叶小钗
有赞技术团队
有赞技术团队
月光博客
月光博客
Martin Fowler
Martin Fowler
量子位
L
LangChain Blog
B
Blog
Last Week in AI
Last Week in AI
博客园 - 司徒正美
Microsoft Security Blog
Microsoft Security Blog
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
微博 API 失效后 IFTTT 同步微博到 Day One 方法 - 少数派
2021-06-20 · via 少数派

原先一直用 IFTTT 自动同步微博到 Day One,可以把自己日常的事情笔记方便地记录到日记中。不过 2020 年开始,微博不开放这个 API 接口了。

失效之后,一直没管它。最近心血来潮,到在网上搜索一番,找到了方法——Python + IFTTT Webhooks + Crontab 定时抓取微博到 Day One

分三步:

  • 用爬虫抓取自己的微博,缓存到本地 CSV 文件中。
  • 读取本地 CSV 数据,用 Python 发给 IFTTT,IFTTT 自动发送 Day One。
  • 创建定时任务,可以定时爬取、发送,发送完后清除本地缓存。

1、下载自己微博内容

爬微博的代码不用自己写,Github 上有现成的脚本,功能很强大。把代码下载到本地,然后步骤如下:

1、打开 powershell,路径切换到weibo-crawler下。
2、安装依赖。前提是安装好了 python 和 pip。

pip install -r requirements.txt

3、修改配置文件config.jsonuser_id_list 改成自己微博 id。since_date设为 1,表示只取近 1 天的微博。
4、运行爬虫,如果微博的数据可以下载到本地 CSV 文件,代表成功了。

python weibo.py

IFTTT 网站设置

在 IFTTT 网站上设置一个动作:如果接收到一个 Web 请求,就创建一篇日记。

image-20210619162620755
image-20210619162200131
image-20210619162104426

本地 Python 脚本

然后在本地的weibo-crawler文件夹下创建一个ifttt.py的文件,将以下内容复制进去,注意pathevent_namekey根据自己情况修改。

  • path为本地 CSV 路径。
  • event_name为自己在 IFTTT 上创建的触发器名称。
  • key为 WebHooks 的密钥,可在 IFTTT 点击Documentation查看。
import weibo
import csv
import requests
import json
import os

class Ifttt(object):
        
    def __init__(self, path, event_name, key):
        self.path = path
        self.event_name = event_name
        self.key = key
        self.text = []
        self.image = []
        self.num = 0
		
    # 解析本地 CSV 文件
    def parse_post_info(self, path):
        with open(path, 'r', encoding='UTF-8') as f:
            csv_reader = csv.reader(f, delimiter=',')
            line_count = 0
            for row in csv_reader:
                if line_count == 0:
                    print("Header")
                else:
                    self.text.append(row[2])
                    self.image.append(row[4].split(",",1))
                line_count += 1
            self.num = line_count - 1

            print(self.text)
            print(self.image)
            print("Total posts: ", self.num)

		# 发送给 IFTTT
    def send_notice(self):
        url = f"https://maker.ifttt.com/trigger/{self.event_name}/with/key/{self.key}"
        for num in range(0, self.num):
            payload = {"value1": self.text[num], "value2": self.image[num]}
            headers = {"Content-Type": "application/json"}
            response = requests.request("POST", url, data=json.dumps(payload), headers=headers)
            print(payload)

def main():
    config = weibo.get_config()
    wb = weibo.Weibo(config)
    wb.start() 
    path = 'weibo/微博名/1234567.csv' # 爬虫爬下来的csv路径
    event_name = 'DayOne' # Webhooks 触发器名字
    key = 'IF17vD4nqU6wO' # Webhooks 的 key,每个人不同
    ifttt = Ifttt(path, event_name, key)
    ifttt.parse_post_info(path)
    ifttt.send_notice()
    os.remove(path) 
    
if __name__ == '__main__':
    main()

3、Win10 每日定时任务创建

前两步完成后,功能已经实现,然后每次需要手工触发显然太麻烦了,于是决定用 Win10 定时任务每天自动跑一遍,把微博下到本地 CSV 为保护,发送给 Day One,然后清除本地 CSV 文件。

定时任务设置方法如下:

在电脑-管理-系统工具-任务计划程序库-Miscrosoft 下右键,创建基本任务,设置定时任务名称、触发时间、触发频率、触发程序、触发程序代码及触发程序代码所在路径。注,触发程序代码所在路径不能不写,否则运行时不能自动删除上一次生成的 CSV。

image-20210619160457206

参考 Win10 定时任务自动运行python程序

说明:本文同步发表于个人博客