merge-images 合并图像

github 地址:https://github.com/lukechilds/merge-images

Cropper.js 图片裁剪工具

github 地址:https://github.com/fengyuanchen/cropperjs
示例地址:https://fengyuanchen.github.io/cropperjs/

grade.js 根据图片的两种主要颜色生成背景渐变

github 地址:https://github.com/benhowdle89/grade
示例地址:https://benhowdle89.github.io/grade/

Compressor.js 图像压缩

github 地址:https://github.com/fengyuanchen/compressorjs
示例地址:https://fengyuanchen.github.io/compressorjs/

update wp_posts set id = 430 where id = 404;
update wp_term_relationships set object_id = 430 where object_id = 404;
update wp_postmeta set post_id = 430 where post_id = 404;
update wp_comments set comment_post_ID = 430 where comment_post_ID = 404;

如果页面指定了 DTD,即指定了 DOCTYPE 时,使用 document.documentElement.scrollTop/Left 可以获取到正确的结果

页面没有 DTD,即没指定 DOCTYPE 时,使用 document.body.scrollTop/Left 可以获取到正确的结果

获取页面向左、向上卷动的距离的兼容性方式

function getScroll() {
return {
left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,
top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
}
}

document.body 与 document.documentElement 区别

document.body 返回 dom 中的 body 节点即 <body>
document.documentElement 返回 dom 中的 root 节点即 <html>

设置页面卷曲距离

// X: 向左卷曲距离
// Y: 向上卷曲距离
window.scrollTo(X, Y)

# 卸载openssh-client
sudo apt-get remove openssh-client # 卸载openssh-client并重新安装

# 安装ssh服务
sudo apt-get install ssh
# 理论上包含了 openssh-server 和客户端 openssh-client,如果安装出现异常,请独立安装这两个

# 修改配置
vi /etc/ssh/sshd_config

Port = 22 # 默认是22端口,如果和windows端口冲突或你想换成其他的否则不用动
#ListenAddress 0.0.0.0 # 如果需要指定监听的IP则去除最左侧的井号,并配置对应IP,默认即监听PC所有IP
PermitRootLogin yes # 如果你需要用 root 直接登录系统则此处改为 yes
PasswordAuthentication yes # 将 no 改为 yes 表示使用帐号密码方式登录

# 设置密码
passwd root

# 启动 ssh 服务
service ssh start
# sudo /etc/init.d/ssh start

# 查看 ssh 状态
service ssh status

局域网内的其他终端无法连接: 不要忘了,还要配置防火墙开启端口才能被其他 PC 访问

将实现的功能

从本地服务器传输到 Google Team Drive
从他人分享的链接拷贝到 Google Team Drive
从一个 Google Team Drive 传输到另一个 Google Team Drive
以上都不受 750G 流量限制

如果没有团队盘,可以参考这里自助申请

本文以 ubuntu 为例,当然直接在本地 Windows 上也是可以的

安装 Python3

apt-get update
apt-get install git python3 python3-pip -y

若出现如下问题

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

安装 AutoRclone

git clone https://github.com/xyou365/AutoRclone && cd AutoRclone && pip3 install -r requirements.txt

生成 Service Accounts

打开链接: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
rz # 回车会打开窗口,选择文件上传即可
rz 文件 # 下载文件

之后分三种情况

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 加入 Google Groups

可以直接将 service accounts 加入到Team Drive
python3 add_to_team_drive.py -d SharedTeamDriveSrcID
为了便于管理 service accounts,我们创建 Google Group,将 Google Group 邮箱添加到 Team Drive

我们这一步需要将刚刚生成的数以百计的 Service Accounts 添加到 Google Group 中

创建 Google Group

打开链接:https://groups.google.com/ ,创建群组:

批量提取 Service Accounts

如果是 GSuite Admin 账号,可以使用如下方式直接添加进群组

  1. 将生成的json文件保存到 credentials 文件夹中
  2. 在管理控制台中为您的组织创建组。创建群组后,您将拥有一个例如的地址sa@yourdomain.com
  3. 运行 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 个邮箱账户就隔开一行,方便复制。

添加到 Google Group

将 email.txt 文件下载到本地

回到 Group 页面,右上角 管理成员:

左侧 直接添加成员,将 Service Accounts 邮箱复制粘贴 10 个,点击 添加:
(注意每次只能添加 10 个,每 24 小时只能添加 100 个)

重复以上步骤,将 100 个邮箱添加进去

将 Google Group 邮箱添加到 Team Drive

点击关于,找到群组邮箱:

复制下来,添加到 Google Team Drive 成员中

添加完成后,基本就完成所有设置了

如何使用

首先将 service accounts 加入到目标 Team Drive

cd ~/AutoRclone
# 将以下 SharedTeamDriveDstID 替换为你团队盘 ID
python3 add_to_team_drive.py -d SharedTeamDriveDstID

查看团队盘 ID:

打开你的团队盘,查看浏览器上的链接,比如:

https://drive.google.com/drive/u/2/folders/0AICYh4X7BkjVUk9PVA

以上链接中,0AICYh4X7BkjVUk9PVA 就是 ID

回车后,再次回车:

直接使用

先安装 rclone

rclone 安装教程可以参考 https://wqdy.top/1243.html

  • Linux 环境
curl https://rclone.org/install.sh | sudo bash
  • Windows 环境

直接去 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 使用

gclone 其实就是 rclone 的加强版,为 Google Drive 操作增加自动切换账户和命令行根目录 id 操作支持,其他功能与原版 rclone 相同

安装 gclone
bash <(wget -qO- https://git.io/gclone.sh)

你可以选择将 gclone 重命名为 rclone,方便使用:cp /usr/bin/gclone /usr/bin/rclone

以下内容都是以没有重命名为例,如果你进行了重命名,将以下命令中出现的 gclone 改为 rclone

配置 gclone

首先需要先记下 /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

之后就配置完成了

使用 gclone 复制文件

作者 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 都能用上完美的电影墙!

windows 下使用

下载和安装 tinyMediaManager

下载地址 https://www.tinymediamanager.org/download/

如果提示需要 java 环境,下载安装即可

使用

打开软件

当提示设置影片档案文件夹时,可以先不添加,直接下一步

当提示元数据刮削的时候,选择 themoviedb.org,不管是电影和电视剧都选他即可

打开设置,添加电影和电视剧目录,其他默认

设置好了以后,点击更新

全选已添加的影片信息,点击右键,搜索并刮削所选电影 - 自动匹配:会自动下载封面和影片信息

其中有可能遇到需要您手动搜索的影片,手动搜索一下中文名字即可

当影片完全搜索不出来的时候,也可以到豆瓣电影里面搜索一下这个影片,记住它的 imdb 链接的后面一串数字,比如:tt7286456

直接搜索这个序列号,也是可以获取影片资料的

电视剧的搜索方式和电影的搜索方式是一模一样的,而且电视剧会将每一集都进行信息整理和分类

全部更新完毕后,可以看到影片的文件夹里观看,下载了 nfo 影片信息,海报封面图,logo 等

linux 下使用

使用docker安装

https://hub.docker.com/r/romancin/tinymediamanager

docker pull romancin/tinymediamanager

docker run -d --name=tinymediamanager \
-v /share/Container/tinymediamanager/config:/config \
-v /home/gdrive:/media \
-e GROUP_ID=0 -e USER_ID=0 -e TZ=Europe/Madrid \
-p 5800:5800 \
-p 5900:5900 \
romancin/tinymediamanager:latest

浏览以 http://your-host-ip:5800 即可访问 TinyMediaManager GUI

解决中文无法正常显示的问题

添加 ENABLE_CJK_FONT=1 环境变量

docker run -d --name=tinymediamanager \
-v /share/Container/tinymediamanager/config:/config \
-v /home/gdrive:/media \
-e GROUP_ID=0 -e USER_ID=0 -e TZ=Europe/Madrid -e ENABLE_CJK_FONT=1 \
-p 5800:5800 \
-p 5900:5900 \
romancin/tinymediamanager:latest

使用 Jellyfin 加载 tinyMediaManager 整理的影片

只需要设置 Jellyfin 媒体库,取消掉所有的刮削器即可(一定要取消掉,否则依然会无法显示影片信息,甚至连影片都可能不会出现在影视墙上)

介绍

Transmission 是一个强大的 BitTorrent 开源客户端,官方网站上提供了多个版本可以下载,包括:Mac、GTK+、QT、web 版本。

Transmission 支持 DHT、Magnet Link、uTP 以及 PEX 等特性。尤其是支持 Magnet Link 磁力链接下载十分重要,因为目前网上很多资源都是采用这种方式来分享的,而不是传统的.torrent 文件

在 Ubuntu 的发行版中,Transmission 软件包下面包含多个套件,这些套件的名字很容易搞混淆,它们分别是:

  • transmission-gtk: GTK+界面的 Transmission BT 客户端。
  • transmission-qt: QT 界面的 Transmission BT 客户端。
  • transmission-cli: 命令行界面的 Transmission BT 客户端,与 QT、GTK+版本功能一样,是命令行下一个完备的 BT 客户端。
  • transmission-daemon: 是一个 Transmission 的后台守护程序,本身不具备操作指令,只能通过 Web 客户端或者 transmission-remote-cli 来进行控制。这个程序特别适合安装在服务器上或者嵌入式系统中,以及一些没有显示器的设备上。
  • transmission-remote-cli: 用来控制 transmission-daemon 的命令套件,本身不具备下载 BT 的功能,只能够配合 daemon 使用。

这些套件不必都安装上,根据我的需求,只需要安装 transmission-daemon 即可

Transmission 的安装

打开终端,输入以下命令安装:

sudo apt-get update
sudo apt-get install transmission-daemon

安装过程中会顺带把 transmission-cli 也安装上,安装完毕后系统会多出如下一些命令行工具

  • transmission-cli: 独立的命令行客户端。
  • transmission-create: 用来建立.torrent 种子文件的命令行工具。
  • transmission-daemon: 后台守护程序。
  • transmission-edit: 用来修改.torrent 种子文件的 announce URL。
  • transmission-remote: 控制 daemon 的程序。
  • transmission-show:查看.torrent 文件的信息。

安装好后,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

运行

# 启动
sudo service transmission-daemon start

# 停止
sudo service transmission-daemon stop

Transmission 的配置

配置主要是通过修改/var/lib/transmission-daemon/info/settings.json 文件中的参数来实现的。
注意:在编辑 Transmission 的配置文件的时候,需要先关闭 daemon 进程,否则编辑的参数将会被恢复到原来的状态。

配置 RPC

最关键的就是要配置 RPC,因为无论是 Web 界面还是 CLI 都是通过 RPC 协议和 daemon 来进行交互的。

打开文件/var/lib/transmission-daemon/info/settings.json,修改配置参数如下:

{
"rpc-authentication-required": true,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-host-whitelist": "", // rpc 主机白名单
"rpc-host-whitelist-enabled": true, //rpc 主机白名单是否开启,若需要任意主机都能访问,建议false
"rpc-password": "123456",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "transmission",
"rpc-whitelist": "*", // rpc 主机白名单
"rpc-whitelist-enabled": true //rpc 主机白名单是否开启,若需要任意主机都能访问,建议false
}

我将用户名设置为了 transmission,密码设置为了 123456,whitelist 设置成了”*”,表示任何 IP 都可以通过 RPC 协议访问这个 daemon。需要注意的是 password 设置成了明文。当启动 daemon 之后,daemon 会自动检测密码设置。如果发现密码配置被修改了,daemon 会自动计算修改后的密码的 HASH 值,并用这个 HASH 值替换掉配置文件中的明文密码,这样会更安全。

输入service transmission-daemon start启动程序后,打开 settings.json,会看到 rpc-password 一项被改为了 HASH 值。

{
"rpc-password": "{5f4bd5498bddd9aa2ad8f4d475dcebe23e9d8c8bsorspnUE"
}

settings.json 里面还有很多参数可以配置,包括上传/下载速度的限制、DHT 的配置、端口设置等等,详细的参数解释可以参考官网的配置说明

使用 Web 界面控制 Transmission daemon

经过上述配置后,我们就可以通过 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": "127.0.0.1",
"rpc-whitelist-enabled": true
}

rpc-whitelist设置为 "*"或将 rpc-whitelist-enabled 设置为 false

在局域网其他机器上使用 http://<your.server.ip.addr>:9091/transmission/web/ 访问时无法访问解决
修改配置

{
"rpc-host-whitelist": "", // rpc 主机白名单
"rpc-host-whitelist-enabled": true //rpc 主机白名单是否开启,若需要任意主机都能访问,建议false
}

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
bash 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 值填写为 0PGID 值填写为 0

4、启用 VAAPI 硬件加速

Docker 中启动容器,打开 Jellyfin 网页端,依次进入控制台->播放,在硬件选项中选择 VAAPI 保存设置即可。

使用效果

前后对比:

可以看到 CPU 占用明显降低了,播放也不卡顿了,效果还是非常明显的。

设置

注意

  • 一定要加 http://,直接写域名或者 IP 不行
  • http 和 https 都要设置
  • cmd,Bash,PowerShell 设置的方式不同
  • 设置的代理只在当前 cmd 窗口下有效,窗口关闭后会失效,新建的窗口也不生效

cmd

# set http_proxy=http://IP:PORT
set http_proxy=http://127.0.0.1:1080
set https_proxy=http://127.0.0.1:1080

# 如果有用户名密码需要设置,否则不需要设置
set http_proxy_user=user
set http_proxy_pass=pass

# 恢复
set http_proxy=
set https_proxy=

Bash

# Ubuntu 下命令为 export
export http_proxy=http://127.0.0.1:1080

git

git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

PowerShell 7

$env:HTTP_PROXY="http://127.0.0.1:1080"
$env:HTTPS_PROXY="http://127.0.0.1:1080"
$env:all_proxy="http://127.0.0.1:1080"

Windows PowerShell

windows 自带的powershell 能被SSR、SS或V2Ray代理,不用手动设置了

验证

  • 如果想验证是否成功配置了代理的话,用 ping 命令是不可以的(ping的协议不是http,也不是https,是ICMP协议)

curl -vv http://www.google.com,用这条命令来验证,如果返回如下结果表示代理设置成功。

参考链接

https://github.com/shadowsocks/shadowsocks-windows/issues/1489
https://gist.github.com/famousgarkin/c5138b1e13ac41920d22