IDM 平替 Gopeed Flutter 开源免费下载工具

IDM 平替 Gopeed Flutter 开源免费下载工具

视频

https://youtu.be/m206G5lVXPM

https://www.bilibili.com/video/BV1Lz421k7Zp/

前言

原文 https://ducafecat.com/blog/flutter-gopeed-downloader-idm-replace

flutter ducafecat gopeed

https://flutter.ducafecat.com/github/repo/GopeedLab/gopeed

出于好奇我把站点排第一位 gopeed 的代码看了下才发现用的 getx ,所以在你质疑 getx 的时候,别人已经项目 star 13k 了。今天会来介绍下这个项目。

Gopeed,一款轻量原生的 Flutter 下载器,支持 HTTP、BitTorrent、Magnet 等协议,提供全平台高速下载体验。

本文将会讲解如何使用 gopeed, 以及项目代码分析讲解。

系统学习 flutter getx 请关注 https://ducafecat.com/course/flutter-woo。

参考

https://flutter.ducafecat.com/github/repo/GopeedLab/gopeed

https://github.com/GopeedLab/gopeed

https://github.com/search?q=topic%3Agopeed-extension&type=repositories

安装

多平台安装

https://github.com/GopeedLab/gopeed/releases/tag/v1.5.6

gopeed/releases/tag/v1.5.6

APP 配置

设置下载目录,并发数量

gopeed 基础设置

可设置代理

proxy

各种下载插件

https://github.com/search?q=topic%3Agopeed-extension&type=repositories

gopeed-extension

gopeed-extension-youtube

浏览器插件

https://chromewebstore.google.com/detail/gopeed/mijpgljlfcapndmchhjffkpckknofcnd

app 设置 API

gopeed api

安全起见可以设置令牌

插件添加服务器设置

gopeed api server

设置完之后,当你页面中点击触发下载后就会启动插件,把任务提交到 gopeed。

gopeed download

代码编译

gopeed 结构

环境

  1. Golang 1.21+
  2. Flutter 3.16+

go server

这里我以 macos 举例

go build -tags nosqlite -ldflags="-w -s" -buildmode=c-shared -o ui/flutter/macos/Frameworks/libgopeed.dylib github.com/GopeedLab/gopeed/bind/desktop

gopeed build

flutter ui

cd ui/flutter
flutter build macos

gopeed flutter build

代码分析

gopeed go server 服务端

go 代码目录

gopeed go

分析包文件 go.mod

module github.com/GopeedLab/gopeedgo 1.21require (github.com/anacrolix/missinggo/v2 v2.7.3github.com/anacrolix/torrent v1.53.3github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5github.com/dop251/goja v0.0.0-20231027120936-b396bb4c349dgithub.com/dop251/goja_nodejs v0.0.0-20231122114759-e84d9a924c5cgithub.com/go-git/go-git/v5 v5.8.1github.com/gorilla/handlers v1.5.1github.com/gorilla/mux v1.8.0github.com/matoous/go-nanoid/v2 v2.0.0github.com/pkg/errors v0.9.1github.com/rs/zerolog v1.31.0github.com/virtuald/go-paniclog v0.0.0-20190812204905-43a7fa316459go.etcd.io/bbolt v1.3.8golang.org/x/exp v0.0.0-20240119083558-1b970713d09agolang.org/x/sync v0.6.0
)require (dario.cat/mergo v1.0.0 // indirectgithub.com/Microsoft/go-winio v0.6.1 // indirectgithub.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 // indirectgithub.com/RoaringBitmap/roaring v1.7.0 // indirectgithub.com/acomagu/bufpipe v1.0.4 // indirectgithub.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0 // indirectgithub.com/alecthomas/atomic v0.1.0-alpha2 // indirectgithub.com/anacrolix/chansync v0.4.0 // indirectgithub.com/anacrolix/dht/v2 v2.21.0 // indirectgithub.com/anacrolix/envpprof v1.3.0 // indirectgithub.com/anacrolix/generics v0.0.0-20230911070922-5dd7545c6b13 // indirectgithub.com/anacrolix/go-libutp v1.3.1 // indirectgithub.com/anacrolix/log v0.14.6-0.20231202035202-ed7a02cad0b4 // indirectgithub.com/anacrolix/missinggo v1.3.0 // indirectgithub.com/anacrolix/missinggo/perf v1.0.0 // indirectgithub.com/anacrolix/mmsg v1.0.0 // indirectgithub.com/anacrolix/multiless v0.3.1-0.20221221005021-2d12701f83f7 // indirectgithub.com/anacrolix/stm v0.5.0 // indirectgithub.com/anacrolix/sync v0.5.1 // indirectgithub.com/anacrolix/upnp v0.1.3 // indirectgithub.com/anacrolix/utp v0.2.0 // indirectgithub.com/bahlo/generic-list-go v0.2.0 // indirectgithub.com/benbjohnson/immutable v0.4.3 // indirectgithub.com/bits-and-blooms/bitset v1.13.0 // indirectgithub.com/bradfitz/iter v0.0.0-20191230175014-e8f45d346db8 // indirectgithub.com/cloudflare/circl v1.3.3 // indirectgithub.com/davecgh/go-spew v1.1.1 // indirectgithub.com/dlclark/regexp2 v1.10.0 // indirectgithub.com/dustin/go-humanize v1.0.1 // indirectgithub.com/edsrzf/mmap-go v1.1.0 // indirectgithub.com/emirpasic/gods v1.18.1 // indirectgithub.com/felixge/httpsnoop v1.0.1 // indirectgithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirectgithub.com/go-git/go-billy/v5 v5.4.1 // indirectgithub.com/go-llsqlite/adapter v0.1.0 // indirectgithub.com/go-llsqlite/crawshaw v0.5.0 // indirectgithub.com/go-logr/logr v1.4.1 // indirectgithub.com/go-logr/stdr v1.2.2 // indirectgithub.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirectgithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirectgithub.com/google/btree v1.1.2 // indirectgithub.com/google/pprof v0.0.0-20231101202521-4ca4178f5c7a // indirectgithub.com/google/uuid v1.5.0 // indirectgithub.com/gorilla/websocket v1.5.1 // indirectgithub.com/huandu/xstrings v1.4.0 // indirectgithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirectgithub.com/kevinburke/ssh_config v1.2.0 // indirectgithub.com/mattn/go-colorable v0.1.13 // indirectgithub.com/mattn/go-isatty v0.0.20 // indirectgithub.com/mschoch/smat v0.2.0 // indirectgithub.com/pion/datachannel v1.5.5 // indirectgithub.com/pion/dtls/v2 v2.2.9 // indirectgithub.com/pion/ice/v2 v2.3.12 // indirectgithub.com/pion/interceptor v0.1.25 // indirectgithub.com/pion/logging v0.2.2 // indirectgithub.com/pion/mdns v0.0.9 // indirectgithub.com/pion/randutil v0.1.0 // indirectgithub.com/pion/rtcp v1.2.13 // indirectgithub.com/pion/rtp v1.8.3 // indirectgithub.com/pion/sctp v1.8.9 // indirectgithub.com/pion/sdp/v3 v3.0.6 // indirectgithub.com/pion/srtp/v2 v2.0.18 // indirectgithub.com/pion/stun v0.6.1 // indirectgithub.com/pion/transport/v2 v2.2.4 // indirectgithub.com/pion/turn/v2 v2.1.4 // indirectgithub.com/pion/webrtc/v3 v3.2.24 // indirectgithub.com/pjbgf/sha1cd v0.3.0 // indirectgithub.com/pmezard/go-difflib v1.0.0 // indirectgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirectgithub.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529 // indirectgithub.com/sergi/go-diff v1.1.0 // indirectgithub.com/skeema/knownhosts v1.2.0 // indirectgithub.com/stretchr/testify v1.8.4 // indirectgithub.com/tidwall/btree v1.7.0 // indirectgithub.com/xanzy/ssh-agent v0.3.3 // indirectgithub.com/xiaoqidun/setft v0.0.0-20220310121541-be86327699ad // indirectgo.opentelemetry.io/otel v1.22.0 // indirectgo.opentelemetry.io/otel/metric v1.22.0 // indirectgo.opentelemetry.io/otel/trace v1.22.0 // indirectgolang.org/x/crypto v0.18.0 // indirectgolang.org/x/mod v0.14.0 // indirectgolang.org/x/net v0.20.0 // indirectgolang.org/x/sys v0.16.0 // indirectgolang.org/x/text v0.14.0 // indirectgolang.org/x/time v0.5.0 // indirectgolang.org/x/tools v0.17.0 // indirectgopkg.in/warnings.v0 v0.1.2 // indirectgopkg.in/yaml.v3 v3.0.1 // indirectmodernc.org/libc v1.40.6 // indirectmodernc.org/mathutil v1.6.0 // indirectmodernc.org/memory v1.7.2 // indirectmodernc.org/sqlite v1.28.0 // indirectzombiezen.com/go/sqlite v1.1.0 // indirect
)

支持的协议有 BitTorrent、SOCKS5、Http

NodeJS 引擎 ECMAScript、Node.js

gopeed flutter 前端

目录包

ui/flutter/pubspec.yaml

dependencies:flutter:sdk: flutterflutter_localizations:sdk: flutter# The following adds the Cupertino Icons font to your application.# Use with the CupertinoIcons class for iOS style icons.cupertino_icons: ^1.0.2get: ^4.6.5lottie: ^1.4.2styled_widget: ^0.4.0+3context_menus: ^1.0.2json_annotation: ^4.8.1dio: ^5.2.1path_provider: ^2.1.1file_picker: 5.3.1macos_secure_bookmarks: ^0.2.1rounded_loading_button_plus: ^3.0.1url_launcher: ^6.1.6logger: ^1.3.0desktop_drop: ^0.4.3package_info_plus: ^4.0.0fluent_ui: ^4.4.0path: anybadges: ^3.0.3app_links: ^3.4.2uri_to_file: ^0.2.0window_manager: ^0.3.4autoscale_tabbarview: ^1.0.2share_plus: ^7.1.0flutter_form_builder: ^9.1.1form_builder_validators: ^9.0.0flutter_foreground_task: ^6.1.2open_filex: ^4.3.4tray_manager: ^0.2.1lecle_downloads_path_provider: ^0.0.2+8hive: ^2.2.3
dev_dependencies:flutter_test:sdk: flutter# The "flutter_lints" package below contains a set of recommended lints to# encourage good coding practices. The lint set provided by the package is# activated in the `analysis_options.yaml` file located at the root of your# package. See that file for information about deactivating specific lint# rules and activating additional ones.flutter_lints: ^2.0.0ffigen: ^8.0.2# build json model: dart run build_runner build --delete-conflicting-outputsbuild_runner: ^2.2.1json_serializable: ^6.3.2flutter_launcher_icons: ^0.13.1

ffigen 方式读取 go 动态库

dio 拉取数据

fluent_ui 组件库

getx 方式管理路由、响应数据

styled_widget 简化前端视图代码

hive 前端本地数据

build_runner、json_serializable 自动化实例 entity 对象

程序启动时开启服务

gopeed start server

代码

https://github.com/GopeedLab/gopeed

小结

Gopeed 是一款基于 Flutter 开发的现代化下载工具,具有轻量、原生、全平台支持以及高速下载的特点。它不仅美观易用,而且开源,并且支持多种下载协议,包括 HTTP、BitTorrent、Magnet 等。无论是对于 Flutter 开发者还是下载工具用户,Gopeed 都是一个值得关注和尝试的项目。

感谢阅读本文

如果有什么建议,请在评论中让我知道。我很乐意改进。


flutter 学习路径

  • Flutter 优秀插件推荐 https://flutter.ducafecat.com
  • Flutter 基础篇1 - Dart 语言学习 https://ducafecat.com/course/dart-learn
  • Flutter 基础篇2 - 快速上手 https://ducafecat.com/course/flutter-quickstart-learn
  • Flutter 实战1 - Getx Woo 电商APP https://ducafecat.com/course/flutter-woo
  • Flutter 实战2 - 上架指南 Apple Store、Google Play https://ducafecat.com/course/flutter-upload-apple-google
  • Flutter 基础篇3 - 仿微信朋友圈 https://ducafecat.com/course/flutter-wechat
  • Flutter 实战3 - 腾讯 tim 即时通讯开发 https://ducafecat.com/course/flutter-tim

© 猫哥
ducafecat.com

end

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C++-DAY1

思维导图 有以下定义,说明哪些量可以改变哪些不可以改变? const char *p; const (char *) p; char *const p; const char* const p; char const *p; (char *) const p; char const* const p; const char *p:指针 p 所指向的内容不可改…

【AI】【Python】pydantic库学习demo

因为工作中学习AI,然后包括看源码,以及看代码都使用到了pydantic库,因此下面是一些最主要的20%,以学会其80%的精髓。 pydantic 库是 python 中用于数据接口定义检查与设置管理的库。 pydantic 在运行时强制执行类型提示&#xff0…

知了汇智携手西科大举办“知了杯”网络安全趣味赛,共筑网络空间安全防线

为积极响应国家网络空间安全人才战略,加快攻防兼备网络创新人才培养步伐,实现以赛促学、以赛促教、以赛促用,推动网络空间安全人才培养和产学研用生态发展,成都知了汇智科技有限公司(以下简称:知了汇智&…

【网络编程】Java网络编程中的基本概念及实现UDP、TCP客户端服务器程序(万字博文)

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】Java网络编程中的基本概念及实现UDP、TCP客户端服务器程序(万字博文) 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制(CRC算法、MD5算法) 目录 …

基于CAPL的RSA文件解析

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…

施耐德EOCR漏电型保护器有多款不同型号,每款都有其独特的特点和应用场景。以下是一些常见的型号及其区别

施耐德EOCR漏电型保护器有多款不同型号,每款都有其独特的特点和应用场景。以下是一些常见的型号及其区别: EOCR-DG/DZ经济型漏电保护器:这款保护器是具有剩余电流检测型接地故障保护的复合继电器,内置MCU,具有过流、缺…

【java配置】jpcap的下载与idea配置

解决报错:Cannot resolve symbol ‘jpcap’ 1. jpcap的下载 官网下载链接 百度网盘下载 双击WinpPca安装,jacap1和jpcap2任选其中之一 2. idea配置 (1)查看当前使用jdk目录 File -> Project Settings -> SDKs &#…

Modbus转Profinet网关接称重设备与工控机通讯

Modbus转Profinet网关(XD-MDPN100)是一种能够实现Modbus协议和Profinet协议之间转换的设备。Modbus转Profinet网关可提供单个或多个RS485接口,使得不同设备之间可以顺利进行通信,进一步提升了工业自动化程度。 通过使用Modbus转Pr…

Git 核心概念与实操

这里写目录标题 1 版本回退2 工作区、暂存区、本地仓库、远程仓库 1 版本回退 原文链接:https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192 首先 git log 查看提交记录 在Git中,用 HEAD 表示当前版本 上一个版本就是 HEAD^ &#xff…

自适应STFT及其在地震时间行程自动拾取中的应用【附MATLAB代码】

文章来源:微信公众号:EW Frontie 摘要 在本文中,首先,我们提出的方法来产生高分辨率的短时傅里叶变换,通过计算最佳瞬时窗口长度。其次,利用生成的时频图提取瞬时走时属性,实现地震同相轴走时的…

ZNS SSD+F2FS文件系统|如何降低GC开销?---1

ZNS出现的背景是什么?ZNS SSD的原理是把namespace空间划分多个zone空间,zone空间内部执行顺序读写。 在ZNS的场景下,不同应用按照Zone配置信息,相应存放业务数据。由于是Host管理数据的摆放和存取位置,会最大程度减少G…

【操作系统复习之路】存储器管理(第四章 超详细讲解)

目录 一、存储器的层次结构 二、程序的装入和链接 2.1 逻辑地址和物理地址 2.2 绝对装入方式 2.3 可重定位装入方式 2.4 动态运行时装入方式 2.5 静态链接 2.6 装入时动态链接 2.7 运行时动态链接 三、连续分配存储器管理方式 3.1 单一连续分配 3.2 固定分区分配 …

田忌赛马【洛谷P1650】

P1650 田忌赛马 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<iostream> #include <algorithm> #include<cstdio> #include <map> using namespace std; const int N1e5100; int n; map<int,int>a,b;//映射&#xff0c;速度->数量…

程序员缓解工作压力小技巧

文章目录 1. 规划时间和任务2. 学会放松和调节情绪3. 培养兴趣爱好4. 保持健康的生活方式总结 当面对程序员这样需要高度精神集中和持续创新的工作时&#xff0c;缓解工作压力是至关重要的。下面分享一些我个人的经验和方法&#xff0c;希望能对大家有所帮助&#xff1a; 1. 规…

陆金所控股一季报到底是利好还是利空?

3月底&#xff0c;陆金所控股&#xff08;LU.N;06623.HK&#xff09;因其特别分红方案受到市场高度关注。但在4月23日发布的2024年一季度财报中&#xff0c;陆金所控股营收同比下降30.9%&#xff0c;净亏损8.3亿元。 两者对比&#xff0c;外界不由得对公司的经营状况产生疑惑。…

【python】Python学生信息管理系统(源码+报告+本地存储)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

自己手动在Linux上实现一个简易的端口扫描器

背景 常常听到网络攻击有一个东西叫做端口扫描器&#xff0c;可以扫描指定服务器开放的端口&#xff0c;然后尝试连接&#xff0c;并寻找漏洞&#xff0c;最终攻破服务器。而那些使用的端口扫描器都是一个个现成的程序&#xff0c;看上去很厉害的样子。而实际上这些东西对于懂…

【进收藏夹吃灰系列】数据库学习指南

文章目录 [toc]MySQLRedisMongoDB 个人主页&#xff1a;丷从心 系列专栏&#xff1a;进收藏夹吃灰系列 MySQL 博客标题博客url【Python基础】MySQLhttps://blog.csdn.net/from__2024_04_11/article/details/137888646?spm1001.2014.3001.5502 Redis 博客标题博客url【Pytho…

基于 SpringCloud 的在线交易平台商城的设计与实现

摘 要 随着互联网的快速发展&#xff0c;人们对商品经济的消费和思考不再停留在传统 的经济模式上&#xff0c;网上购物商城是企业与企业进行、企业与消费者进行电子商 务交易的一个很好平台。网上购物商城极大地降低了企业商家的交易成本&#xff0c; 缩短企业供应链周期&…

混合现实(MR)技术的应用场景

混合现实&#xff08;MR&#xff09;技术将虚拟世界和现实世界融合在一起&#xff0c;用户可以在现实世界中看到和与虚拟物体进行交互&#xff0c;同时还可以感知周围的真实环境。MR技术具有广阔的应用前景&#xff0c;可以应用于各行各业。以下是一些MR的应用场景。北京木奇移…