【有趣的github项目】tgblog-在网页上显示 Telegram 频道
本文最后更新于 2024-07-30,
若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。
本站只有Telegram群组为唯一交流群组, 点击加入
文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请
这个项目用于将电报(或任何兼容的)频道数据显示为交互式网页的前端。
项目地址:https://github.com/one-among-us/tg-blog
数据格式在models.ts中指定,可以使用TelegramBackup生成。
RSS机器人推送消息到指定频道:https://poiblog.com/archives/OuaXMD4C
Telegram备份
先备份telegram频道的数据
项目地址:https://github.com/one-among-us/TelegramBackup?tab=readme-ov-file
用法
安装
首先,安装 Python >= 3.11
。然后,运行 pip install tgc
然后,为了支持视频/动画/贴纸转换,您必须安装以下非 Python 依赖项:
- 安装 Node 19.2 和 yarn 1.22
yarn global add puppeteer-lottie-cli
ffmpeg
使用系统包管理器安装
模式一:转换电报导出
如果只需要一次性导出,则可以使用模式 1。为此,首先需要使用tdesktop导出一个频道。
要将导出文件转换为tg-blog支持的格式,您可以运行 tgce <export path>
模式二:使用 MTProto API 爬取频道
如果您有权限向频道添加机器人账户,或邀请自机器人账户,则可以使用 MTProto 爬虫进行自动增量导出更新。(请不要登录您自己的 Telegram 帐户进行抓取,因为很有可能被误归类为垃圾邮件并被禁止)
使用这种方式可以自动增量更新通道备份,信息会更完整,但设置起来比方式一更困难。
设置 API 密钥
- 获取
api_id
并api_hash
创建你的 Telegram 应用程序(官方指南)- 登录https://my.telegram.org/apps
- 填写表格以创建申请
- 或者,如果您为了方便而想要违反 Telegram 的 EULA,您可以将其留空以使用 Telegram 官方客户端的 API 哈希,风险自负。
- 选择登录的账户类型:
- 机器人账户:使用@BotFather机器人创建机器人。
- 自助机器人帐户:留空
bot_token
,它会提示您登录。您只应在您不是频道管理员时使用自助机器人(因为邀请机器人需要管理员权限)。
- 填写 token
~/.config/tgc/config.toml
如果没有文件,请先创建对应文件夹和文件
# Telegram API id & hash
api_id = 10000000
api_hash = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
# Telegram bot token (leave blank to log into self-bot account)
bot_token = "0000000000:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
设置完密钥后,就可以进行频道设置了:
设置要抓取的渠道
- 邀请你的机器人加入频道,或使用你自己的机器人账户加入频道(必须)
- 将频道消息转发给@RawDataBot以获取频道 ID。(您将看到 JSON 响应,并可以从字段中找到 ID
forward_from_chat
) - 填写频道信息,
~/.config/tgc/config.toml
如下图所示
# One export entry in a list of exports
[[exports]]
chat_id = -1001191767119 # Telegram channel chat id
path = "exports/hykilp" # Output Path
所有设置完成后,您就可以继续运行爬虫了。
运行爬虫
只需运行 tgc
命令即可。
附加配置
您可以为每个导出条目设置附加配置,如下所示:
参数 | 描述 | 类型 |
---|---|---|
size_limit_mb |
限制下载文件大小(跳过大文件) | 浮动 |
RSS 提要生成
如果您想生成RSS feed,您可以在导出条目下添加以下内容:
[[exports]]
chat_id = -1001191767119 # Telegram channel chat id
path = "exports/hykilp" # Output Path
[exports.rss]
title = "小桂桂的回忆录 📒"
link = "https://aza.moe/life"
description = "「我们所经历的每个平凡的日常,也许就是连续发生的奇迹」"
language = "zh-cn"
image_url = "https://aza.moe/meru_256px.png"
使用 GitHub Actions 自动更新
如果您想使用 GitHub Actions 自动备份/同步电报频道数据,您可以这样做。
- 创建您的
config.toml
- Fork https://github.com/hykilpikonna/blog-data
- 在 GitHub 的“设置”选项卡中,创建一个名为的Secret
TGC_CONFIG
,并将您的粘贴config.toml
那里。 - 请记住将 a 设置
size_limit_mb
为 100 以下,这样 git lfs 就不会因推送大文件而发出警告。
支持状态
功能支持
- 所有文本格式(包括剧透)
- @用户名,#标签
- 转发自、回复至(可点击)
- 地图!(位置共享)
- 民意调查(仅显示结果,无法投票)
- 联系方式
- 搜索、标签搜索
媒体支持
- 贴纸、动画贴纸 (webm 和 tgs)
- 自定义表情符号、动画自定义表情符号
- 视频、gif 动画
- 文件
- 音频、语音信息(包括音频播放器)
- 媒体团体
- 图像查看和平铺
- 媒体剧透(图片、视频、gif)
前端安装
在纯 HTML 中使用
你可以在纯 HTML 中使用它,无需现代 Web 构建工具:
<html lang="en">
<head>
<title>My Blog</title>
<!-- Import Libraries -->
<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/tg-blog"></script>
<link rel="stylesheet" href="https://unpkg.com/tg-blog/dist/style.css">
<!-- Styles -->
<style>
body { font-family: Avenir, Helvetica, Arial, sans-serif }
</style>
</head>
<body>
<!-- Template setup (Paste your data url here) -->
<div id="app">
<tg-blog posts-url="https://profile-api.hydev.org/exports/hykilp/posts.json"></tg-blog>
</div>
<!-- Vue js setup -->
<script>
Vue.createApp().component("tg-blog", TgBlog.TgBlog).mount('#app')
</script>
</body>
</html>
在 Hexo 博客中使用
根据主题的 CSS,可能需要进行一些修改才能正常工作。例如,Icalm 主题需要进行这些修改。
但是,您可以按照以下格式将页面添加为 markdown:
---
title: 'Telegram Blog'
date: 2023-01-13
---
{% raw %}
<!-- Import Libraries -->
<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/tg-blog"></script>
<link rel="stylesheet" href="https://unpkg.com/tg-blog/dist/style.css">
<!-- Styles & Patches -->
<style>
#tg-blog-app { font-family: Avenir, Helvetica, Arial, sans-serif }
/* Icalm Fix: Override img max-width: 100% set in layout.styl */
#tg-blog-app img { max-width: unset; }
/* Icalm Fix: overflow-x: hidden breaks infinite scroll */
.container { overflow-x: unset !important; }
body { overflow-x: unset !important; }
</style>
<!-- Template setup (Paste your data url here) -->
<div id="tg-blog-app">
<tg-blog posts-url="YOUR-POSTS-URL-HERE!"></tg-blog>
</div>
<!-- Vue js setup -->
<script>
const app = Vue.createApp().component("tg-blog", TgBlog.TgBlog)
app.mount('#tg-blog-app')
// Hexo patch: Destroy app when page switched
const interval = setInterval(() => {
if (!document.getElementById('tg-blog-app'))
{
app.unmount()
clearInterval(interval)
}
}, 1000)
</script>
{% endraw %}
在 Vite 中使用
您还可以使用 vite 等现代构建工具将其导入到您的项目中:
1.安装依赖项
yarn add tg-blog
2. 在 main.ts
import {createApp, h} from 'vue'
import App from './App.vue'
// Add this:
import 'tg-blog/dist/style.css'
3. 在您的 中 vite.config.ts
,您应配置重复数据删除 vue
export default defineConfig({
resolve: {
dedupe: ['vue'],
},
});
4. 导入组件
import { TgBlog } from 'tg-blog';
// If you're using Vue-TS Class Component, then add this:
@Options({components: { TgBlog }})
export default class ...
组件
博客
您只需指定一个选项:posts-url
,它应该指向 posts.json
您的博客数据。
您可以 posts.json
使用TelegramBackup生成
<tg-blog posts-url="https://profile-api.hydev.org/exports/hykilp/posts.json"></tg-blog>
选项
选项 | 描述 |
---|---|
posts-url |
指向您的博客数据 posts.json 文件的 HTTP 链接 |
图像查看器(内部)
如果您只想要图像查看器功能,您可以导入此模块。