友链朋友圈

Aliluya Blog

十分钟搭建一个带Web界面的yt-dlp视频下载器|好玩儿的Docker项目

1. 唠嗑 yt-dlp 是一款基于 youtube-dl 开发的开源命令行视频下载工具,支持从 1000+ 个平台获取内容。它不仅能下载 YouTube 视频,还支持包括 B站、网易云音乐、Vimeo、Twitter 等主流平台。 2. ytdlpwebui主要功能 这是一个基于 yt-dlp 的自托管 Web UI 和 RPC 服务项目,专为 NAS 和服务器环境设计。项目通过 Docker 容器提供轻量级部署(镜像体积仅 18MB),支持以下核心功能: 多平台视频下载:支持 YouTube、B站等 1000+ 平台的视频/音频下载,可自动选择最高画质或手动指定格式 任务队列管理:通过 --qs 参数控制并发下载数量(默认 2 个并行任务) 远程控制接口:提供 JSON-RPC 1.0 API 和 WebSocket 实时状态推送,支持 JWT 认证(需配置 --auth 参数) 定制化前端:允许替换默认 Material 风格界面,自定义前端只需符合指定目录结构即可加载 系统集成:提供 Docker Compose 部署模板和 Systemd 服务配置方案,支持 SQLite 数据库存储任务记录 典型应用场景包括 NAS 媒体库自动归档、直播流监控等,项目通过 --driver 参数可指定不同版本的 yt-dlp 执行文件,最新版本已适配 2025 年 YouTube 的 HDR10+ 格式下载需求。 3. 相关地址 官方GitHub地址:https://github.com/marcopiovanello/yt-dlp-web-ui (全新项目,目前1.1个star,欢迎大家去给项目点星星!) 4. 搭建环境 服务器:这边强烈建议用非大陆的服务器,不然很多网站访问不了,咕咕这边用的香港的腾讯云轻量应用服务器,建议服务器内存1G以上,当然你也可以选择其他高性价比的服务...

我不是咕咕鸽

十分钟搭建一个带Web界面的yt-dlp视频下载器|好玩儿的Docker项目

1. 唠嗑 yt-dlp 是一款基于 youtube-dl 开发的开源命令行视频下载工具,支持从 1000+ 个平台获取内容。它不仅能下载 YouTube 视频,还支持包括 B站、网易云音乐、Vimeo、Twitter 等主流平台。 2. ytdlpwebui主要功能 这是一个基于 yt-dlp 的自托管 Web UI 和 RPC 服务项目,专为 NAS 和服务器环境设计。项目通过 Docker 容器提供轻量级部署(镜像体积仅 18MB),支持以下核心功能: 多平台视频下载:支持 YouTube、B站等 1000+ 平台的视频/音频下载,可自动选择最高画质或手动指定格式 任务队列管理:通过 --qs 参数控制并发下载数量(默认 2 个并行任务) 远程控制接口:提供 JSON-RPC 1.0 API 和 WebSocket 实时状态推送,支持 JWT 认证(需配置 --auth 参数) 定制化前端:允许替换默认 Material 风格界面,自定义前端只需符合指定目录结构即可加载 系统集成:提供 Docker Compose 部署模板和 Systemd 服务配置方案,支持 SQLite 数据库存储任务记录 典型应用场景包括 NAS 媒体库自动归档、直播流监控等,项目通过 --driver 参数可指定不同版本的 yt-dlp 执行文件,最新版本已适配 2025 年 YouTube 的 HDR10+ 格式下载需求。 3. 相关地址 官方GitHub地址:https://github.com/marcopiovanello/yt-dlp-web-ui (全新项目,目前1.1个star,欢迎大家去给项目点星星!) 4. 搭建环境 服务器:这边强烈建议用非大陆的服务器,不然很多网站访问不了,咕咕这边用的香港的腾讯云轻量应用服务器,建议服务器内存1G以上,当然你也可以选择其他高性价比的服务...

我不是咕咕鸽

【WPF】单双屏显示切换控制

前言 近期我完成了一个项目,该项目需求是在连接了双显示器的设备上,对屏幕显示设置的更改进行监听。具体而言,当显示设置调整为 “复制这些显示器” 时,程序要自动隐藏;而当显示设置变为 “扩展这些显示器” 时,程序则需显示在非主显示器的第二显示器上。接下来,我会对此次项目中的业务逻辑进行简单记录,希望能对你有所助益。 解决方案 启动程序时通过调用ShowInSecondScreen2()方法,将窗口移动至非主显示器上面。 private double left = 0; private Rectangle primaryRect; private Rectangle secondRect; private double top = 0; private void ShowInSecondScreen2() { this.Dispatcher.Invoke(new Action(() => { this.WindowState = WindowState.Normal; //获取所有显示器的信息 Screen[] screens = Screen.AllScreens; //确定主显示器的分辨率,用于计算副显示器的起始位置 primaryRect = Screen.PrimaryScreen.Bounds; //将窗口放置在第一个找到的副显示器上 bool placed = false; foreach (Screen screen in screens) { if (screen.Primary == false) //找到的是非主显示器 { ...

【WPF】单双屏显示切换控制

前言 近期我完成了一个项目,该项目需求是在连接了双显示器的设备上,对屏幕显示设置的更改进行监听。具体而言,当显示设置调整为 “复制这些显示器” 时,程序要自动隐藏;而当显示设置变为 “扩展这些显示器” 时,程序则需显示在非主显示器的第二显示器上。接下来,我会对此次项目中的业务逻辑进行简单记录,希望能对你有所助益。 解决方案 启动程序时通过调用ShowInSecondScreen2()方法,将窗口移动至非主显示器上面。 private double left = 0; private Rectangle primaryRect; private Rectangle secondRect; private double top = 0; private void ShowInSecondScreen2() { this.Dispatcher.Invoke(new Action(() => { this.WindowState = WindowState.Normal; //获取所有显示器的信息 Screen[] screens = Screen.AllScreens; //确定主显示器的分辨率,用于计算副显示器的起始位置 primaryRect = Screen.PrimaryScreen.Bounds; //将窗口放置在第一个找到的副显示器上 bool placed = false; foreach (Screen screen in screens) { if (screen.Primary == false) //找到的是非主显示器 { ...

【WPF】解决在WPF中使用MediaElement控件播放视频卡顿问题

问题 在近期项目中,我使用了 WPF 原生的 MediaElement 媒体控件来播放视频。然而,当我的笔记本连接外接显示屏时,程序中 MediaElement 控件播放视频会出现短暂卡顿,尤其是在每次实例化该控件并自动播放视频时。而当我断开外接显示屏后,MediaElement 控件则能正常播放视频。经过仔细研究,我发现笔记本在外接显示屏的情况下运行该程序时,会自动调用 GPU 加速。由此我得出结论: 在 WPF 中使用 MediaElement 控件时,其自动调用 GPU 加速是导致视频卡顿的原因。 解决 1. 禁用硬件加速 在需要禁用硬件加速的页面中,可以在App.xaml.cs的OnStartup方法中设置RenderOptions.ProcessMode属性为SoftwareOnly。这样可以确保MediaElement在停止播放后不再出现卡顿现象。但需要注意的是,禁用硬件加速可能会导致播放时仍然出现卡顿,尤其是在高分辨率(如8K)或复杂场景下,WPF默认的硬件加速可能成为性能瓶颈。可以通过以下代码在特定页面禁用硬件加速: RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly; 并在离开页面后重新启用硬件加速以恢复其他功能的性能。此方法能显著缓解UI卡顿,但可能影响播放时的流畅度。 2. 关闭透明效果 将AllowsTransparency属性设置为False,避免透明层叠加带来的额外渲染开销: <Window AllowsTransparency="False">

【WPF】解决在WPF中使用MediaElement控件播放视频卡顿问题

问题 在近期项目中,我使用了 WPF 原生的 MediaElement 媒体控件来播放视频。然而,当我的笔记本连接外接显示屏时,程序中 MediaElement 控件播放视频会出现短暂卡顿,尤其是在每次实例化该控件并自动播放视频时。而当我断开外接显示屏后,MediaElement 控件则能正常播放视频。经过仔细研究,我发现笔记本在外接显示屏的情况下运行该程序时,会自动调用 GPU 加速。由此我得出结论: 在 WPF 中使用 MediaElement 控件时,其自动调用 GPU 加速是导致视频卡顿的原因。 解决 1. 禁用硬件加速 在需要禁用硬件加速的页面中,可以在App.xaml.cs的OnStartup方法中设置RenderOptions.ProcessMode属性为SoftwareOnly。这样可以确保MediaElement在停止播放后不再出现卡顿现象。但需要注意的是,禁用硬件加速可能会导致播放时仍然出现卡顿,尤其是在高分辨率(如8K)或复杂场景下,WPF默认的硬件加速可能成为性能瓶颈。可以通过以下代码在特定页面禁用硬件加速: RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly; 并在离开页面后重新启用硬件加速以恢复其他功能的性能。此方法能显著缓解UI卡顿,但可能影响播放时的流畅度。 2. 关闭透明效果 将AllowsTransparency属性设置为False,避免透明层叠加带来的额外渲染开销: <Window AllowsTransparency="False">

【折腾笔记】利用AI大模型构建本地知识库

前言 维度 传统知识库 具有AI的知识库 数据存储方式 结构化数据为主(表格、文档),依赖手动分类和标签 支持非结构化数据(文本、图片、音视频),利用嵌入技术(Embedding)自动编码为向量存储 检索机制 基于关键词匹配或固定规则(如SQL查询) 支持语义搜索,通过向量相似度匹配理解用户意图(如“性价比高的手机”≈“低价高性能手机”) 交互方式 用户需输入精确关键词,返回静态结果 支持自然语言对话(如提问“如何解决打印机卡纸?”),生成动态答案或分步骤指导 知识更新 依赖人工录入和定期维护,更新滞后 支持自动学习新数据(如爬取最新行业报告),部分系统可结合RAG(检索增强生成)实时整合外部知识 推理能力 无自主推理能力,仅提供已有信息 通过LLM(大语言模型)进行逻辑推理、总结归纳(如分析故障原因并推荐解决方案) 应用场景 企业文档管理、FAQ库等静态场景 智能客服、个性化推荐、自动化报告生成等动态场景 相比传统的知识库,AI知识库具有更高的智能化程度。它不仅能够理解用户的查询意图,还能根据用户的历史行为和偏好进行个性化推荐。此外,AI大模型知识库还具备知识推理、问答生成等高级功能,能够为用户提供更加智能、个性化的知识服务。这使得AI大模型知识库在教育、医疗、金融、客服等多个领域具有广泛的应用前景。 云端AI知识库可能涉及敏感数据泄露风险,因此企业更倾向本地化部署以保障数据安全。为帮助用户实现这一目标,本教程将基于Windows系统,通过Ollama(本地模型管理) + DeepSeek(开源中文模型) + AnythingLLM(私有知识库框架) 的组合方案,逐步演示如何构建安全可控的本地AI知识库。 简介 Ollama(本地模型管理) Ollama 是一个开源的本地大语言模型运行框架。 基本概念 核心功能:Ollama 专注于在本地机器上便捷部署和运行大型语言模型(...

【折腾笔记】利用AI大模型构建本地知识库

前言 维度 传统知识库 具有AI的知识库 数据存储方式 结构化数据为主(表格、文档),依赖手动分类和标签 支持非结构化数据(文本、图片、音视频),利用嵌入技术(Embedding)自动编码为向量存储 检索机制 基于关键词匹配或固定规则(如SQL查询) 支持语义搜索,通过向量相似度匹配理解用户意图(如“性价比高的手机”≈“低价高性能手机”) 交互方式 用户需输入精确关键词,返回静态结果 支持自然语言对话(如提问“如何解决打印机卡纸?”),生成动态答案或分步骤指导 知识更新 依赖人工录入和定期维护,更新滞后 支持自动学习新数据(如爬取最新行业报告),部分系统可结合RAG(检索增强生成)实时整合外部知识 推理能力 无自主推理能力,仅提供已有信息 通过LLM(大语言模型)进行逻辑推理、总结归纳(如分析故障原因并推荐解决方案) 应用场景 企业文档管理、FAQ库等静态场景 智能客服、个性化推荐、自动化报告生成等动态场景 相比传统的知识库,AI知识库具有更高的智能化程度。它不仅能够理解用户的查询意图,还能根据用户的历史行为和偏好进行个性化推荐。此外,AI大模型知识库还具备知识推理、问答生成等高级功能,能够为用户提供更加智能、个性化的知识服务。这使得AI大模型知识库在教育、医疗、金融、客服等多个领域具有广泛的应用前景。 云端AI知识库可能涉及敏感数据泄露风险,因此企业更倾向本地化部署以保障数据安全。为帮助用户实现这一目标,本教程将基于Windows系统,通过Ollama(本地模型管理) + DeepSeek(开源中文模型) + AnythingLLM(私有知识库框架) 的组合方案,逐步演示如何构建安全可控的本地AI知识库。 简介 Ollama(本地模型管理) Ollama 是一个开源的本地大语言模型运行框架。 基本概念 核心功能:Ollama 专注于在本地机器上便捷部署和运行大型语言模型(...

用M1 Max MacBook Pro私有化部署DeepSeek-R1

早在去年5月份,我们就和大家介绍过完全免费,离线可用!用LobeChat+Ollama搭建本地大模型 最近DeepSeek非常火,用的人太多,服务器负载过高,导致官方服务基本处于不可用状态…… 既然DeepSeek是开源模型,那么,我们也来本地化部署一个。 什么是 DeepSeek-R1 ? DeepSeek-R1 是 DeepSeek 的第一代推理模型,在数学、代码和推理任务中,其性能与 OpenAI-o1 相当(而OpenAI是闭源的),包括基于 Llama 和 Qwen 的六个从 DeepSeek-R1 蒸馏出的密集模型。 其中 671b 是教师模型(Teacher Model), 另外的 6 个蒸馏模型为学生模型(Student Model) 1.5b:全称是 DeepSeek-R1-Distill-Qwen-1.5B,蒸馏模型源自 Qwen-2.5 系列; 7b:是 DeepSeek-R1-Distill-Qwen-7B,蒸馏模型源自 Qwen-2.5 系列; 8b:是 DeepSeek-R1-Distill-Llama-8B,蒸馏模型源自 Llama3.1-8B-Base; 14b:是 DeepSeek-R1-Distill-Qwen-14B,蒸馏模型源自 Qwen-2.5 系列; 32b:是 DeepSeek-R1-Distill-Qwen-32B,蒸馏模型源自 Qwen-2.5 系列; 70b:是 DeepSeek-R1-Distill-Llama-70B,蒸馏模型源自 Llama3.3-70B-Instruct; 什么是蒸馏 ? 蒸馏技术(Distillation)是一种模型压缩和优化的方法,主要用于将一个大型、复杂的模型的知识转移到一个较小的模型中。这个过程通常被称为“知识蒸馏”(Knowledge Distillation) 模型选择 我们需要根据硬件...

我不是咕咕鸽

用M1 Max MacBook Pro私有化部署DeepSeek-R1

早在去年5月份,我们就和大家介绍过完全免费,离线可用!用LobeChat+Ollama搭建本地大模型 最近DeepSeek非常火,用的人太多,服务器负载过高,导致官方服务基本处于不可用状态…… 既然DeepSeek是开源模型,那么,我们也来本地化部署一个。 什么是 DeepSeek-R1 ? DeepSeek-R1 是 DeepSeek 的第一代推理模型,在数学、代码和推理任务中,其性能与 OpenAI-o1 相当(而OpenAI是闭源的),包括基于 Llama 和 Qwen 的六个从 DeepSeek-R1 蒸馏出的密集模型。 其中 671b 是教师模型(Teacher Model), 另外的 6 个蒸馏模型为学生模型(Student Model) 1.5b:全称是 DeepSeek-R1-Distill-Qwen-1.5B,蒸馏模型源自 Qwen-2.5 系列; 7b:是 DeepSeek-R1-Distill-Qwen-7B,蒸馏模型源自 Qwen-2.5 系列; 8b:是 DeepSeek-R1-Distill-Llama-8B,蒸馏模型源自 Llama3.1-8B-Base; 14b:是 DeepSeek-R1-Distill-Qwen-14B,蒸馏模型源自 Qwen-2.5 系列; 32b:是 DeepSeek-R1-Distill-Qwen-32B,蒸馏模型源自 Qwen-2.5 系列; 70b:是 DeepSeek-R1-Distill-Llama-70B,蒸馏模型源自 Llama3.3-70B-Instruct; 什么是蒸馏 ? 蒸馏技术(Distillation)是一种模型压缩和优化的方法,主要用于将一个大型、复杂的模型的知识转移到一个较小的模型中。这个过程通常被称为“知识蒸馏”(Knowledge Distillation) 模型选择 我们需要根据硬件...

我不是咕咕鸽