Skip to content

Auto-scrubbing of articles and auto-likes in discourse

License

Notifications You must be signed in to change notification settings

jiashu1024/auto-read-liunxdo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

英文文档

使用方法一:油猴脚本

油猴脚本代码在 index_passage_list 中,建议在使用前将浏览器页面缩小,这样子可以一次读更多的回复 油猴:https://greasyfork.org/en/scripts/489464-auto-read

使用方法二:后台puppeteer运行(Windows默认有头,Linux默认无头)

1.设置环境变量

.env 里面设置用户名 密码

2.运行

Windows

npm install
node .\bypasscf.js

Linux 额外安装以下包,运行命令相同

sudo apt update
wget -qO- https://deb.nodesource.com/setup_20.x | sudo -E bash - #安装node的最新源
sudo apt install nodejs  -y
sudo apt install -y wget unzip fontconfig locales gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget xvfb
sudo snap install chromium

使用方法 2.1:puppeteer 有头运行(有浏览器界面)

在目录新建.env.local,添加 ENVIRONMENT=dev,就可以有头运行

npm install
node .\bypasscf.js

使用方法三:GitHub Action 每天 4 点阅读

每天运行,每次二十分钟(可自行修改启动时间和持续时间,代码.github\workflows\cron_bypassCF.yaml)

1. fork 仓库

2.设置环境变量

在 GitHub action 的 secrets 设置用户名密码(变量名参考.env 中给出的),未设置则会使用.env文件中定义的 alt text

3.启动 workflow

教程:https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web?tab=readme-ov-file#enable-automatic-updates

使用方法四:docker 运行

1.立刻执行

克隆仓库,在docker-compose.yml里面设置环境变量,然后运行

 docker-compose up -d

查看日志

docker-compose logs -f

2.定时运行

chmod +x cron.sh

crontab -e

手动添加以下内容(功能是每天六点执行)

0 6 * * *  /root/auto-read-liunxdo/cron.sh  # 注意这是示例目录,要改为所在仓库目录的cron.sh(使用pwd查看所在目录)

如何增加基于 discourse 的其它网站的支持?

  1. 修改 index_passage_list 中的// @match ,根据其它示例网站,填写新的 url,此外在脚本开头的 possibleBaseURLs 中也添加 url
  2. 服务器运行时,还需要修改.env 下的 WEBSITE 变量为对应的网址(如果网址是不存在原先脚本的,需要修改 external.js 中对应的部分,重新构建镜像)
  3. 小众软件论坛只能在Windows下运行,所以需要使用定制版action: .github\workflows\windows_cron_bypassCF.yaml

其它

external 是作为 puppeteer 的脚本使用的,由 index_passage_list.js 改造,主要是去除了按钮以及设置为自动阅读和自动点赞启动

   localStorage.setItem("read", "true"); // 自动滚动
    localStorage.setItem("autoLikeEnabled", "true"); //自动点赞

      // document.body.appendChild(button);
  // document.body.appendChild(toggleAutoLikeButton);

随笔

开发中遇到的问题: 问:TimeoutError: Navigation timeout of 30000 ms exceeded 为什么 puppeteer 经常出现这个错误? 答:linux 使用{waitUntil: 'domcontentloaded'}后,情况大大好转,但还是有时出现,Windows 未曾出现此问题 见文章分析

待做

  1. TimeoutError 时候可以捕获错误然后关掉当前浏览器重新再开一次

About

Auto-scrubbing of articles and auto-likes in discourse

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 97.1%
  • Dockerfile 2.0%
  • Shell 0.9%