rrweb-io - 利用现代浏览器所提供的强大 API 录制并回放任意 Web 界面中的用户操作
https://github.com/rrweb-io/rrweb
https://github.com/rrweb-io/rrweb
github 地址:https://github.com/lukechilds/merge-images
github 地址:https://github.com/fengyuanchen/cropperjs
示例地址:https://fengyuanchen.github.io/cropperjs/
github 地址:https://github.com/benhowdle89/grade
示例地址:https://benhowdle89.github.io/grade/
github 地址:https://github.com/fengyuanchen/compressorjs
示例地址:https://fengyuanchen.github.io/compressorjs/
update wp_posts set id = 430 where id = 404; |
如果页面指定了 DTD,即指定了 DOCTYPE 时,使用 document.documentElement.scrollTop/Left 可以获取到正确的结果
页面没有 DTD,即没指定 DOCTYPE 时,使用 document.body.scrollTop/Left 可以获取到正确的结果
获取页面向左、向上卷动的距离的兼容性方式
function getScroll() { |
document.body 与 document.documentElement 区别
document.body 返回 dom 中的 body 节点即 <body>
document.documentElement 返回 dom 中的 root 节点即 <html>
设置页面卷曲距离
// X: 向左卷曲距离 |
# 卸载openssh-client |
局域网内的其他终端无法连接: 不要忘了,还要配置防火墙开启端口才能被其他 PC 访问
从本地服务器传输到 Google Team Drive
从他人分享的链接拷贝到 Google Team Drive
从一个 Google Team Drive 传输到另一个 Google Team Drive
以上都不受 750G 流量限制
如果没有团队盘,可以参考这里自助申请
本文以 ubuntu 为例,当然直接在本地 Windows 上也是可以的
apt-get update |
若出现如下问题
Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-bx50pf21/progress/
You are using pip version 8.1.1, however version 20.1.1 is available.
You should consider upgrading via the ‘pip install –upgrade pip’ command.解决:更新 pip3
pip3 install --upgrade pip
git clone https://github.com/xyou365/AutoRclone && cd AutoRclone && pip3 install -r requirements.txt |
打开链接:https://developers.google.com/drive/api/v3/quickstart/python
登陆 google 账号,点击 Enable the Drive API
,在弹出的页面中勾选 yes ,点击 NEXT,
稍等片刻,继续点击 CREATE,出现如下页面表示成功
点击 DOWNLOAD CLIENT CONFIGUTATION
按钮,下载 credentials.json
文件,然后将下载的 credentials.json
放到 AutoRclone 目录下
如果你用的是 Xshell 可以使用 rz 来上传文件
apt install lrzsz -y |
之后分三种情况
1、之前没有创建过项目
直接运行:
python3 gen_sa_accounts.py --quick-setup 5 |
以上命令含义:创建 6 个项目(项目0到项目5),开启相关的服务,创建 600 个 service accounts,将 600 个 service accounts 的授权文件下载到 accounts 文件夹下面
2、已有 N 个项目,需要创建新的
python3 gen_sa_accounts.py --quick-setup 2 --new-only |
以上命令含义:额外创建 2 个项目(项目 N+1 到项目 N+2),开启相关的服务,创建 200 个 service accounts(2 个项目,每个项目 100 个),将 200 个 service accounts 的授权文件下载到 accounts 文件夹下面
3、使用已有项目,不创建新的
python3 gen_sa_accounts.py --quick-setup -1 |
注意以上命令会覆盖掉已有的 service accounts
我这里是第一种情况,运行 python3 gen_sa_accounts.py --quick-setup 1
,创建两个项目
出现如下报错
/usr/local/lib/python3.5/dist-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.13.1) or chardet (3.0.4) doesn't match a supported version!
解决方法,安装 requests 模块
sudo pip3 install requests
出现如下图
打开链接,并登陆你的 Google 账号(提示不安全,不用管,一路允许)
得到授权代码
复制生成的 code 到终端,回车
如上图所示,显示Press Enter to retry
, 原因是谷歌账号未开启 Service Usage API,复制提供的链接地址,到浏览器打开,开启 Service Usage API 服务
启用成功后回车,等待完成
接着,你就会发现你的 AutoRclone 文件下面的 accounts 文件夹下会有很多的 json 文件。
可以直接将 service accounts 加入到Team Drive
python3 add_to_team_drive.py -d SharedTeamDriveSrcID
为了便于管理 service accounts,我们创建 Google Group,将 Google Group 邮箱添加到 Team Drive
我们这一步需要将刚刚生成的数以百计的 Service Accounts 添加到 Google Group 中
打开链接:https://groups.google.com/ ,创建群组:
如果是 GSuite Admin 账号,可以使用如下方式直接添加进群组
- 将生成的json文件保存到 credentials 文件夹中
- 在管理控制台中为您的组织创建组。创建群组后,您将拥有一个例如的地址sa@yourdomain.com
- 运行
python3 add_to_google_group.py -g sa@yourdomain.com
对于普通账号,生成 Service Accounts 后,直接运行以下命令:
cat ~/AutoRclone/accounts/*.json | grep "client_email" | awk '{print $2}'| tr -d ',"' | sed 'N;N;N;N;N;N;N;N;N;/^$/d;G' > ~/email.txt |
运行后,会自动提取 Service Accounts 邮箱账户,并保存到 ~/email.txt 文件中,同时还很贴心地每 10 个邮箱账户就隔开一行,方便复制。
将 email.txt 文件下载到本地
回到 Group 页面,右上角 管理成员:
左侧 直接添加成员,将 Service Accounts 邮箱复制粘贴 10 个,点击 添加:
(注意每次只能添加 10 个,每 24 小时只能添加 100 个)
重复以上步骤,将 100 个邮箱添加进去
点击关于,找到群组邮箱:
复制下来,添加到 Google Team Drive 成员中
添加完成后,基本就完成所有设置了
首先将 service accounts 加入到目标 Team Drive
cd ~/AutoRclone |
查看团队盘 ID:
打开你的团队盘,查看浏览器上的链接,比如:
https://drive.google.com/drive/u/2/folders/0AICYh4X7BkjVUk9PVA
以上链接中,0AICYh4X7BkjVUk9PVA 就是 ID
回车后,再次回车:
先安装 rclone
rclone 安装教程可以参考 https://wqdy.top/1243.html
curl https://rclone.org/install.sh | sudo bash |
直接去 rclone 官网下载 rclone,然后最好将 rclone.exe 所在目录加入系统环境变量
如若将共享链接(https://drive.google.com/drive/u/2/folders/10zOvIf8yBmIuZgBfC3rcDKWHIlODZjXF)里的文件保存到自己的 Team Drive 中的 myfolder 文件夹中
则命令为
python3 rclone_sa_magic.py -s 10zOvIf8yBmIuZgBfC3rcDKWHIlODZjXF -d 0AICYh4X7BkjVUk9PVA -dp myfolder -b 1 -e 600 |
详细的使用命令可以看这里:https://github.com/xyou365/AutoRclone#step-5-start-your-task
gclone 其实就是 rclone 的加强版,为 Google Drive 操作增加自动切换账户和命令行根目录 id 操作支持,其他功能与原版 rclone 相同
bash <(wget -qO- https://git.io/gclone.sh) |
你可以选择将 gclone 重命名为 rclone,方便使用:cp /usr/bin/gclone /usr/bin/rclone
以下内容都是以没有重命名为例,如果你进行了重命名,将以下命令中出现的 gclone 改为 rclone
首先需要先记下 /root/AutoRclone/accounts/ 中的其中一个文件:
ls /root/AutoRclone/accounts |
回车后会显示很多 .json 后缀的文件名,复制其中一个文件名,记下文件路径,比如:
/root/AutoRclone/accounts/0120894537c1c99c605fe240141af661b44d0c22.json
然后进行 gclone 的配置
gclone 在使用上跟 rclone 是一致的,配置过程也几乎一样,可以参考 https://rclone.org/drive/
运行以下命令进行配置:
gclone config |
配置过程中,需要注意的是,当出现 service_account_file 选项时,填入以上记下的 .json 文件
当出现 service_account_file_path 时,填入 /root/AutoRclone/accounts/
记住配置的 name:gdrive
之后就配置完成了
作者 Github 提供的文档:https://github.com/donwa/gclone/blob/master/README_zh.md
复制共享链接文件到团队盘
gclone copy gdrive:{目录id} gdrive:{目录id} --drive-server-side-across-configs -v |
以上命令中:
gdrive 是你配置 gclone 时设置的 name
目录 id 是共享链接中链接中的最后部分,比如:https://drive.google.com/drive/u/2/folders/1gVAP22Ug5fz0pSe4THZV10078UbNaTob,1gVAP22Ug5fz0pSe4THZV10078UbNaTob 就是目录 id
–drive-server-side-across-configs 用于谷歌盘之间传输时使用,不走服务器流量,传输速度也更快
-v 用于查看传输过程的 ERROR,NOTICE 和 INFO 消息
日志级别
-q - 仅生成 ERROR 消息。
-v - 生成 ERROR,NOTICE 和 INFO 消息,推荐此项。
-vv - 生成 ERROR,NOTICE,INFO和 DEBUG 消息。
–log-level LEVEL - 标志控制日志级别。输出日志到文件
使用 –log-file=FILE 将 Error,Info 和 Debug 消息以及标准错误重定向到 FILE,这里的 FILE 是你指定的日志文件路径。
命令使用示例:
gclone copy gdrive:{18SukoSc0ni0nyU779w82eoo_deLKfbZR} gdrive:{1j4z3UH1thdNB8dOhTUgb0uRHxQaDYL1T} --drive-server-side-across-configs -v |
目标位置除了使用 id 外,也可以直接使用目录,比如:
gclone copy gdrive:{18SukoSc0ni0nyU779w82eoo_deLKfbZR} gdrive:movie/电影合集 --drive-server-side-across-configs -v |
传输本地文件到团队盘
gclone copy /root/Downloads/xxx gdrive:movie/电影合集 -v |
Failed to copy: failed to make directory: googleapi: Error 404: File not found: 1n-Ya6sagIrGskenJIzWcmKE1ATjxeqYx., notFound
有可能是源日流量 10T 被榨干了
googleapi: Error 403: The file limit for this shared drive has been exceeded., teamDriveFileLimitExceeded
团队盘有限制 40w 文件/文件夹,回收站中的文件也计算在 40w 之内,可以新增团队盘,或删除小文件并删除回收站
谷歌云端硬盘 API 不公开清空回收站的方法,但它有一个删除方法可以永久删除文件,而不经过回收站
https://developers.google.com/drive/v2/reference/files/delete |
当使用 pt 或者各种 bt 网站,下载了很多电影以后,使用 NAS 上的 plex 或者 jellyfin 刮削不出来海报怎么办?
而今天就将推荐大家使用这款 tinyMediaManager 软件,该软件功能非常强大,可以刮削电影、电影系列、电视剧等,还可以重建nfo文件和批量重名文件、文件夹。支持Win/Mac/Linux。通过他自动匹配家里的电影资源库,让自己的,不论 KODI,还是 jellyfin,还是 emby、plex 都能用上完美的电影墙!
下载地址 https://www.tinymediamanager.org/download/
如果提示需要 java 环境,下载安装即可
打开软件
当提示设置影片档案文件夹时,可以先不添加,直接下一步
当提示元数据刮削的时候,选择 themoviedb.org
,不管是电影和电视剧都选他即可
打开设置,添加电影和电视剧目录,其他默认
设置好了以后,点击更新
全选已添加的影片信息,点击右键,搜索并刮削所选电影 - 自动匹配:会自动下载封面和影片信息
其中有可能遇到需要您手动搜索的影片,手动搜索一下中文名字即可
当影片完全搜索不出来的时候,也可以到豆瓣电影里面搜索一下这个影片,记住它的 imdb 链接的后面一串数字,比如:tt7286456
直接搜索这个序列号,也是可以获取影片资料的
电视剧的搜索方式和电影的搜索方式是一模一样的,而且电视剧会将每一集都进行信息整理和分类
全部更新完毕后,可以看到影片的文件夹里观看,下载了 nfo 影片信息,海报封面图,logo 等
使用docker安装
https://hub.docker.com/r/romancin/tinymediamanager
docker pull romancin/tinymediamanager |
浏览以 http://your-host-ip:5800
即可访问 TinyMediaManager GUI
解决中文无法正常显示的问题
添加 ENABLE_CJK_FONT=1 环境变量
docker run -d --name=tinymediamanager \ |
只需要设置 Jellyfin 媒体库,取消掉所有的刮削器即可(一定要取消掉,否则依然会无法显示影片信息,甚至连影片都可能不会出现在影视墙上)
Transmission 是一个强大的 BitTorrent 开源客户端,官方网站上提供了多个版本可以下载,包括:Mac、GTK+、QT、web 版本。
Transmission 支持 DHT、Magnet Link、uTP 以及 PEX 等特性。尤其是支持 Magnet Link 磁力链接下载十分重要,因为目前网上很多资源都是采用这种方式来分享的,而不是传统的.torrent 文件
在 Ubuntu 的发行版中,Transmission 软件包下面包含多个套件,这些套件的名字很容易搞混淆,它们分别是:
这些套件不必都安装上,根据我的需求,只需要安装 transmission-daemon 即可
打开终端,输入以下命令安装:
sudo apt-get update |
安装过程中会顺带把 transmission-cli 也安装上,安装完毕后系统会多出如下一些命令行工具
安装好后,Transmission-daemon 有一些默认设置(参考链接)。
默认配置目录清单
启动初始化脚本 /etc/init.d/transmission-daemon
基本配置文件 /etc/default/transmission-daemon
详细配置文件目录 /var/lib/transmsision-daemon/info/settings.json
下载存储目录 /var/lib/transmission-daemon/downloads
settings.json: 主要的配置文件,设置 daemon 的各项参数,包括 RPC 的用户名密码配置。它实际上是一个符号链接,指向的原始文件是/etc/transmission-daemon/settings.json。里面的参数解释可以参考官网的配置说明。
torrents/: 用户存放.torrent 种子文件的目录,凡是添加到下载任务的种子,都存放在这里。.torrent 的命名包含,种子文件本身的名字和种子的 SHA1 HASH 值。
resume/: 存放了.resume 文件,.resume 文件包含了一个种子的信息,例如该文件哪些部分被下载了,下载的数据存储的位置等等。
blocklists/: 存储被屏蔽的 peer 的地址。
dht.dat: 存储 DHT 节点信息。
如果使用另外一个用户来运行 transmission-daemon 的话,会在该用户的目录下,创建一个.config/transmission-daemon 的文件夹,配置目录 https://github.com/transmission/transmission/wiki/Configuration-Files
# 启动 |
配置主要是通过修改/var/lib/transmission-daemon/info/settings.json 文件中的参数来实现的。
注意:在编辑 Transmission 的配置文件的时候,需要先关闭 daemon 进程,否则编辑的参数将会被恢复到原来的状态。
最关键的就是要配置 RPC,因为无论是 Web 界面还是 CLI 都是通过 RPC 协议和 daemon 来进行交互的。
打开文件/var/lib/transmission-daemon/info/settings.json,修改配置参数如下:
{ |
我将用户名设置为了 transmission,密码设置为了 123456,whitelist 设置成了”*”,表示任何 IP 都可以通过 RPC 协议访问这个 daemon。需要注意的是 password 设置成了明文。当启动 daemon 之后,daemon 会自动检测密码设置。如果发现密码配置被修改了,daemon 会自动计算修改后的密码的 HASH 值,并用这个 HASH 值替换掉配置文件中的明文密码,这样会更安全。
输入service transmission-daemon start
启动程序后,打开 settings.json,会看到 rpc-password 一项被改为了 HASH 值。
{ |
settings.json 里面还有很多参数可以配置,包括上传/下载速度的限制、DHT 的配置、端口设置等等,详细的参数解释可以参考官网的配置说明
经过上述配置后,我们就可以通过 Web 界面来访问和控制 Transmission daemon 了。在浏览器里面输入以下地址
http://127.0.0.1:9091/transmission/web/ |
浏览器提示你输入刚才配置的用户名和密码,就可以成功登陆 Web 管理界面。界面和桌面版的 GUI 程序有点像,操作起来很方便。
在本机使用 http://<your.server.ip.addr>:9091/transmission/web/
访问出现 403:Forbidden 解决
修改配置
{ |
将 rpc-whitelist
设置为 "*"
或将 rpc-whitelist-enabled
设置为 false
在局域网其他机器上使用 http://<your.server.ip.addr>:9091/transmission/web/
访问时无法访问解决
修改配置
{ |
将 rpc-host-whitelist
设置为 "*"
或将 rpc-host-whitelist-enabled
设置为 false
原始界面,没有汉化,也比较简单,可以使用 transmission-web-control 加强 Transmission Web 的操作能力
wget -N https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh |
安装完成之后刷新浏览器即可看到新的 ui,如果没有看到可能是浏览器缓存,ctrl + f5 强制刷新一下,如果还是没有看到,
可以尝试使用 root 用户运行
或尝试使用
bash install-tr-control-cn.sh /usr/share/transmission |
/usr/share/transmission 为 Transmission Web 所在目录
之前使用群晖 Docker 折腾 Jellyfin,解决了个人音视频收藏的基本需求,但仍有不足,比如说视频播放的时候,CPU 占用会很高(软解吃 CPU),并且会卡顿。
1、查看系统是否支持显卡硬解转码
使用 SSH 登录群晖系统,运行命令ls /dev/dri
,若输出 card0、renderD128,则说明支持显卡硬解。
2、给容器提权
在群群 Docker 容器中找到 Jellyfin 的容器,编辑容器的常规设置,必须勾选使用高权限执行容器。
3、添加环境
在环境中添加两项,分别是 PUID
值填写为 0
,PGID
值填写为 0
4、启用 VAAPI
硬件加速
Docker 中启动容器,打开 Jellyfin 网页端,依次进入控制台->播放,在硬件选项中选择 VAAPI 保存设置即可。
前后对比:
可以看到 CPU 占用明显降低了,播放也不卡顿了,效果还是非常明显的。
注意
http://
,直接写域名或者 IP 不行# set http_proxy=http://IP:PORT |
# Ubuntu 下命令为 export |
git config --global https.proxy http://127.0.0.1:1080 |
$env:HTTP_PROXY="http://127.0.0.1:1080" |
windows 自带的powershell 能被SSR、SS或V2Ray代理,不用手动设置了
curl -vv http://www.google.com
,用这条命令来验证,如果返回如下结果表示代理设置成功。
https://github.com/shadowsocks/shadowsocks-windows/issues/1489
https://gist.github.com/famousgarkin/c5138b1e13ac41920d22