md批量导入到notion其实网上已经有不少办法和解决思路了,这里讲一下上传图片过多出现的api请求问题的解决办法。

requests.exceptions.HTTPError: 429 Client Error: Too Many Requests for url:https://wuw.notion.so/api/v3/submitTransaction

Untitled

很明显网页端抓取流量可以知道图片是传到amazonaws上的,api调用过程是根据ip访问次数来进行限制的,那很简单的解决思路就是秒级切换的代理池。

pip install md2notion

这里我用这个来实现md导入,虽然还有enex2notion等,但是本质都一样。

python -m md2notion [token_v2] [page_url] [md_path_url](支持*通配符)

然后我采用clash自带的负载均衡来实现。

proxy-groups:
  - 
    name: "负载均衡"
    type: load-balance
    proxies:
      - 🔰国外流量
    url: '<http://www.gstatic.com/generate_204>'
    interval: 5
    strategy: round-robin 
    # strategy: consistent-hashing # or round-robin

这里可以修改自己的clash配置中的yaml,添加对应的代理组,proxies要改为你自己的代理,里面节点越多越好,然后interval表示切换ip的时间戳,这里的要和后面代码修改中的sleep时间对应起来。

Untitled

接下来到python目录下python\Lib\site-packages\notion中找到client.py

将代码修改如下,这样虽然慢,但能保证传图片时可以用ip池绕过策略了。

while True:
    try:
        self.post("submitTransaction", data)
        break
    except Exception as e:
        print(str(e))
        import time
        time.sleep(5)#这里的5和interval对应起来

特别的,如果你遇到了requests.exceptions.HTTPError: Invalid input.

检查你的token,如果没有问题那么说明你传的区块过大了。

Untitled

去python\Lib\site-packages\notion中找到store.py定位280行,修改为100即可。