Media-Download-Helper 完整部署说明

Media-Download-Helper 完整部署说明

前排提示:由于使用到了 Telegram、Google 等服务,所以当前方案不建议国内用户使用!

基于 docker 安装 qbittorrent WebUI

使用 docker 安装 qbittorrent 非常简单,教程也非常非常多,而且能看到这篇教程的人,我估计大部分可能正在使用 qbittorrent,因此这里就不在赘述了。

这里提供一个参考链接:《n1 docker安装qb》。

如果对 docker,参考链接中的 docker compose 部分不熟悉的话,还是先去学习一下相关的基础知识吧。

在安装完成后,我们会获得一个 WebUI 的地址,形如:http://192.168.1.123:8080/,我们记录下来,一同需要记录的还有登录的用户名 QBIT_USERNAME 和密码 QBIT_PASSWORD

安装完成后,可以先手动下载一个文件试试,验证一下是否能正常下载磁力链接,以及下载后的文件是否能正常获取和使用。避免后续出现下载问题,例如无法联网,无法解析磁力链接,下载无速度,找不到下载的文件等。

申请 Telegram Bot 并获取对应 Token

这一部分不做详细介绍,网上教程非常多,直接按照本章节标题进行 Google 即可。

如果懒得 Google,也可以参考这篇文章《Telegram 机器人的申请和设置图文教程》,里面的教程非常详细,原作者也由对应的油管视频可供参考,只要按部就班抄作业即可。

在此章节中,我们获取到了一个 “Bot_TOKEN”,在后续的配置和部署中会使用到。

部署 Google Apps Script 在线脚本

默认情况下,我们发送给 Telegram Bot 的消息是直接发送给 Telegram 官方服务器的,在这种情况下,我们无法获取到 Bot 接收到的数据并做出相应的处理和相应。

但是 Telegram 给我们提供了一个为 bot 设置 webhook 的方法 /setwebhook?url=xxxx,这样我们就可以通过 webhook 获取到用户发送的消息。这里我们通过 Google Apps Script 来实现这个功能。

这一部分也是受到《Telegram 机器人的申请和设置图文教程》作者的系列教程《Telegram Bot 第一个回声机器人 – 你是汤姆猫吧[第二集]》启发。原文中作者通过 Google Apps Script 实现了一个简单的回声机器人,并且在后续的系列文章中,扩展了不少 Telegram bot 的高级用法,感兴趣朋友的也可以参考参考。

步骤 1、创建 Google Apps Script 项目

打开 Google Apps Script 的官网,点击右上角的 新建 按钮,创建一个新的项目。

新建项目

步骤 2、编辑脚本的代码

编写代码

步骤 3、部署项目

部署项目1

部署项目2

授权时可能会出现风险提示界面,估计是挂了代理的缘故,按下图操作继续即可。

部署项目3

部署项目4

部署项目5

步骤 4、获取 Webhook URL

在上一步中,我们最终获取了一个 Web 应用的网址,我们可以直接将这个网址粘贴到浏览器地址栏进行访问,来验证部署是否成功,当显示 {"status":"OK","magnet_urls":[]} 时,表明已部署成功。 如下图所示:

部署成功

我们还需要对这个 Web Url 进行一些处理,打开这个 Url Encode 网站 https://www.urlencoder.org/,将这个 url 进行编码,然后将编码后的 url 保存下来,后续会用。按下图操作即可:

UrlEncode

至此我们已经完成了 Google Apps Script 在线脚本的部署,我们在这里获得了一个 “原始 URL”,和一个 “编码后 URL”

步骤 5、注册 Telegram bot Webhook

在这一步中,我们需要将上一步中获取到的 “编码后 URL” 注册到我们的 Telegram Bot 中,这样我们就可以通过 webhook 获取到用户发送的消息。

我们通过 Telegram Bot 的 API 来实现这个功能,这里用到两个 API,一个是 setWebhook,一个是 getWebhookInfo

步骤 5.1、注册

我们使用 “Bot TOKEN”“编码后 URL” 两个参数,按照以下格式完成 API 的组装:

# 将 {Bot TOKEN} 替换为你的 Bot TOKEN
# 将 {编码后 URL} 替换为你的 编码后 URL
https://api.telegram.org/bot{Bot TOKEN}/setWebhook?url={编码后 URL}

然后将这个组装后的 url 粘贴到浏览器地址栏中进行访问,如果返回 {"ok":true,"result":true,"description":"Webhook was set"},则表示注册成功。如下图所示:

注册成功

步骤 5.2、验证

我们可以通过 getWebhookInfo API 来验证是否注册成功,组装后的 url 如下:

# 将 {Bot TOKEN} 替换为你的 Bot TOKEN
https://api.telegram.org/bot{Bot TOKEN}/getWebhookInfo

然后将这个组装后的 url 粘贴到浏览器地址栏中进行访问,可以在返回结果中看到注册的 url,如下图所示:

验证成功

可以将图中红框部分的 URL 与我们在 步骤 4 中获取到的 “原始 URL” 进行对比,如果一致,则表示注册成功。

申请 TMDB API Token

想要达到 README.md 中展示的效果,在下载完成后将详细的影片信息推送到 Tg bot,则还需要一个 TMDB 的 API Token。

这里也不做赘述了,推荐一个网上的教程吧: 《教程篇 篇三:影视刮削必备神器——TMDB API申请攻略》 。虽然发布日期比较久远了,但是流程估计整体也差不多,作者写的也比较详细,可以参考一下。

最终我们会获得下图中的 “API 密钥 (API Key)”“API 读访问令牌 (API Read Access Token)”,在最新的官方 API 手册中,官方推荐的是使用后者进行查询操作。

TMDB API Token

因此我们将这个 **“API 读访问令牌”**保存下来即可,这个 Token 有点长,一定复制全,记得注意保护敏感数据哦 ~

基于 docker 部署 Media-Download-Helper

本项目不是一定需要 docker 才能部署,使用 docker 只是为了保证环境的一致性,想必对 Python 比较熟悉的朋友也是对 Python 版本和各种依赖包的版本管理比较头疼的,使用 docker 可以很好的解决这个问题。

不过在最后我还是会补充一个脚本,方便部分朋友直接运行或者调试 ^ ^

docker-compose 部署

如果有 docker-compose 的环境,则可以很方便使用仓库中 dockerfile/docker-compose.yml 文件进行部署。

version: '3'
services:
  media_dlhelper:
    build:
      context: .
      dockerfile: dockerfile
    image: b1gfac3c4t/media_dlhelper:v2.0.0
    environment:
      - TZ=Asia/Shanghai
      # 这里所有的环境变量都不要使用引号
      # 必填参数
      - QBIT_HOST=<your qbittorrent WebUI base API>
      - QBIT_USER=<your qbittorrent username>
      - QBIT_PASS=<your qbittorrent password>
      - BOT_TOKEN=<your telegram bot token>
      - TMDB_API_TOKEN=<your TMDB API token>
      - GOOGLE_APPS_SCRIPT_URL= <google apps scrip 部署后的原始web应用网址>
      # 可选参数
      - LOG_LEVEL=INFO # [DEBUG, INFO, WARNING] 三个等级,默认 WARNING
      - LOG_EXPORT=True # [True, False0] 是否将日志输出到文件,默认 False
      - LOG_PATH=/var/tmp/media_dlhelper_logs/ # 默认 /var/tmp/media_dlhelper_logs/
    network_mode: "bridge"

只需要将上面的环境变量替换为自己的即可,然后执行 docker-compose up -d 即可完成部署。

docker run 部署

如果没有 docker-compose 的环境,也可以使用 docker run 的方式进行部署。直接执行下面的命令即可

docker pull b1gfac3c4t/media_dlhelper:v2.0.0
docker run -d \
  --name media_dlhelper \
  -e TZ=Asia/Shanghai \
  -e QBIT_HOST=<your qbittorrent WebUI base API> \
  -e QBIT_USER=<your qbittorrent username> \
  -e QBIT_PASS=<your qbittorrent password> \
  -e BOT_TOKEN=<your telegram bot token> \
  -e TMDB_API_TOKEN=<your TMDB API token> \
  -e GOOGLE_APPS_SCRIPT_URL=<google apps scrip 部署后的原始web应用网址> \
  -e LOG_LEVEL=INFO \
  -e LOG_EXPORT=True \
  -e LOG_PATH=/var/tmp/media_dlhelper_logs/ \
  --network=bridge \
  --restart=always \
  b1gfac3c4t/media_dlhelper:v2.0.0

直接运行

如果不想使用 docker,也可以直接运行项目中的 main.py 文件,为了方便,这里提供了一个运行脚本,只要在项目的根目录下创建一个 run.sh 文件,然后将下面的内容复制进去,替换环境变量的值即可:

#!/bin/bash

export QBIT_HOST=''
export QBIT_USER=''
export QBIT_PASS=''
export BOT_TOKEN=''
export TMDB_API_TOKEN=''
export GOOGLE_APPS_SCRIPT_URL=''
export LOG_LEVEL='DEBUG'
export LOG_EXPORT='True'
export LOG_PATH='./log'

nohup python3 main.py > /dev/null 2>&1 &

保存后,直接运行 sh run.sh 即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/440084.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安卓7原生相机切到视频崩溃

目录 1、查看日志 2、分析日志、提取重点 3、寻找解决方法 author daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识https://blog.csdn.net/qq_40715266?typeblog 1、查看日志 由于安…

格行随身WiFiVS华为天际通VS飞猫U8真实测评大PK,随身WiFi哪个牌子最好用?随身WiFi怎么选?

如今随身WiFi界格行、华为、飞猫三足鼎立&#xff0c;被称为随身WiFi界的“三国杀”&#xff0c;今天&#xff0c;我这个江湖百晓生就来给大家揭秘&#xff0c;究竟谁才是随身网络之王&#xff1f;你准备好围观了吗&#xff1f; 先说说华为天际通随身WiFi&#xff0c;这位老大哥…

今日arXiv最热大模型论文:北大发布,通过上下文提示,让大模型学习一门新的语言

在人工智能领域&#xff0c;大语言模型&#xff08;LLMs&#xff09;的发展已经取得了显著的进步&#xff0c;它们在处理高资源语言方面表现出色。然而&#xff0c;对于资源较少的语言&#xff0c;尤其是极低资源语言&#xff0c;这些模型的支持却显得力不从心。这些语言往往缺…

【C++庖丁解牛】C++内存管理 | new和delete的使用以及使用原理

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1. C/C内存分布2. C语…

方法中单独使用return关键字

一、return关键字的单独使用 二、示例代码 public class ReturnDemo {public static void main(String[] args) {chu(10,0);chu(10,2);}public static void chu(int a,int b){if (b 0) {System.out.println("除法出错&#xff0c;除数不能为零");return;}System.ou…

无处不在的便捷:D咖无人售卖咖啡机在公共场所的应用探索

在繁忙的现代生活中&#xff0c;无人售卖咖啡机作为一项便捷的服务&#xff0c;正逐渐在公共场所得到广泛应用。本文将探讨D咖无人售卖咖啡机在公共场所的应用场景和优势。 一、无人售卖咖啡机的应用场景 写字楼&#xff1a;写字楼内工作人员需要在繁忙的工作中寻找便捷的饮品解…

【center-loss 中心损失函数】 参数与应用

文章目录 前言简单总结一下参数对比解释参数权重衰减&#xff08;L2正则化&#xff09;动量其他参数运行 前言 之前我们已经完全弄明白了中心损失函数里的代码是什么意思&#xff0c;并且怎么用的了&#xff0c;现在我们来运行它。 论文&#xff1a;https://ydwen.github.io/…

【数学+前缀和】第十四届蓝桥杯省赛C++ A组《平方差》(c++)

【问题描述】 给定 L,R&#xff0c;问 L≤x≤R 中有多少个数 x 满足存在整数 y,z 使得 xy的平方−z的平方。 【输入格式】 输入一行包含两个整数 L,R&#xff0c;用一个空格分隔。 【输出格式】 输出一行包含一个整数满足题目给定条件的 x 的数量。 【数据范围】 对于 40% 的…

创建RAID0,RAID5并管理,热备盘,模拟故障

目录 1. RAID介绍以及mdadm安装 1.1 安装mdadm工具 2. 创建raid0 2.1 环境准备 2.2 使用两个磁盘创建RAID0 2.3 查看RAID0信息 2.4 对创建的RAID0进行格式化并挂载 2.5 设置成开机挂载 2.6 删除RAID0 3. 创建raid5 3.1 环境准备 3.2 用3个磁盘来模拟R…

【C++杂货铺】详解string

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 为什么学习string &#x1f4c1; 认识string&#xff08;了解&#xff09; &#x1f4c1; string的常用接口 &#x1f4c2; 构造函数 &#x1f4c2; string类对象的容量操作 &#x1f4c2; string类对象的访问以及遍历操…

(MATLAB)应用实例13-时域信号的频谱分析

采用傅里叶变换来计算存在噪声的适于信号频谱。 假设数据采样频率为1000Hz&#xff0c;一个信号包含两个正弦波&#xff0c;频率50Hz、120Hz&#xff0c;振幅0.7、1&#xff0c;噪声为零平均值的随机噪声&#xff0c;采用FFT方法分析其频谱。 clearFs 1000; …

分享axios+signalr简单封装示例

Ajax Axios Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 从浏览器创建 XMLHttpReque…

kafka 可视化工具

kafka可视化工具 随着科技发展&#xff0c;中间件也百花齐放。平时我们用的redis&#xff0c;我就会通过redisInsight-v2 来查询数据&#xff0c;mysql就会使用goland-ide插件来查询&#xff0c;都挺方便。但是kafka可视化工具就找了半天&#xff0c;最后还是觉得redpandadata…

一招教你优化TCP提高大文件传输效率

在当今企业的数据传输实践中&#xff0c;传统的传输控制协议&#xff08;TCP&#xff09;在处理大型文件传输时&#xff0c;其固有的可靠性和复杂性有时会导致效率不足。为了提升大文件传输的效率&#xff0c;对TCP进行优化成为了一个关键任务。 TCP传输的可靠性是其核心优势&a…

Kubernetes-2

Kubernetes学习第二天 k8s-21、Kubernetes的核心组件2、pod2.1、什么是pod 3、3种启动pod的方式3.1、命令行启动pod3.1.1、执行下面命令&#xff0c;背后发生了什么&#xff1f; 3.2、启动一个pod背后发生了什么3.3、使用yml文件3.3.1、标准的pod3.3.2、使用部署控制器启动pod3…

windows部署腾讯tmagic-editor01-Hello world

之前写过一篇使用yarn实现的https://blog.csdn.net/qq_36437991/article/details/133644558&#xff0c;后面的两个没有写&#xff0c;这次准备重新实现 环境 pnpm 8.15.1 node 18.19.0 创建vue项目 pnpm create vitecd hello-world pnpm install执行pnpm dev启动项目 安…

[PTA] 分解质因子

输入一个正整数n&#xff08;1≤n≤1e15&#xff09;&#xff0c;编程将其分解成若干个质因子&#xff08;素数因子&#xff09;积的形式。 输入格式: 任意给定一个正整数n&#xff08;1≤n≤1e15&#xff09;。 输出格式: 将输入的正整数分解成若干个质因子积的形式&#…

TypeScript 基础(一)

目录 一、概述 二、开发环境 三、数据类型 1.boolean 2.number 3.string 4.Array 5.type 6.tuple 7.enum 8.any 9.null / undefined 10.never 11.object 结束 一、概述 TypeScript 是一种由微软开发的开源编程语言。它是 JavaScript 的一个超集&#xff0c;这意…

正则表达式-分组

1、oracle-正则表达式&#xff1a;将09/29/2008 用正则表达式转换成2008-09-29 select regexp_replace(09/29/2008, ^([0-9]{2})/([0-9]{2})/([0-9]{4})$, \3-\1-\2) replace from dual; 解析&#xff1a;regexp_replace-替换&#xff0c; 第一个参数&#xff1a;需要进行处…

5个实用的PyCharm插件

大家好&#xff0c;本文向大家推荐五个顶级插件&#xff0c;帮助开发人员提升PyCharm工作流程&#xff0c;将生产力飞升到新高度。 1.CodiumAI 安装链接&#xff1a;https://plugins.jetbrains.com/plugin/21206-codiumate--code-test-and-review-with-confidence--by-codium…