夜航船夫

微博 API 失效后 IFTTT 同步微博到 Day One 方法

点击返回顶部

首页

归档

好物

工具

摄影

关于

首页

归档

好物

工具

摄影

关于

  1. 1、下载自己微博内容
  2. 2、用 IFTTT 发送 Day One
    1. IFTTT 网站设置
    2. 本地 Python 脚本
  3. 3、Win10 每日定时任务创建
Python

微博 API 失效后 IFTTT 同步微博到 Day One 方法

2021-06-19

weibo_ifttt_dayone

原先一直用 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.json,user_id_list 改成自己微博 id。since_date设为 1,表示只取近 1 天的微博。 4、运行爬虫,如果微博的数据可以下载到本地 CSV 文件,代表成功了。

python weibo.py

2、用 IFTTT 发送 Day One

IFTTT 网站设置

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

image-20210619162620755

image-20210619162200131

image-20210619162104426

本地 Python 脚本

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

  • path为本地 CSV 路径。
  • event_name为自己在 IFTTT 上创建的触发器名称。
  • key为 WebHooks 的密钥,可在 [IFTTT](Webhooks works better with 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

    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)

    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程序

上一页: 《悬崖之上》还不错下一页: 北京的浙江村

Copyright ©夜航船夫 2015-2026

浙ICP备15005499号