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

news2025/1/15 17:21:37

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/gopeed

go 1.21

require (
	github.com/anacrolix/missinggo/v2 v2.7.3
	github.com/anacrolix/torrent v1.53.3
	github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5
	github.com/dop251/goja v0.0.0-20231027120936-b396bb4c349d
	github.com/dop251/goja_nodejs v0.0.0-20231122114759-e84d9a924c5c
	github.com/go-git/go-git/v5 v5.8.1
	github.com/gorilla/handlers v1.5.1
	github.com/gorilla/mux v1.8.0
	github.com/matoous/go-nanoid/v2 v2.0.0
	github.com/pkg/errors v0.9.1
	github.com/rs/zerolog v1.31.0
	github.com/virtuald/go-paniclog v0.0.0-20190812204905-43a7fa316459
	go.etcd.io/bbolt v1.3.8
	golang.org/x/exp v0.0.0-20240119083558-1b970713d09a
	golang.org/x/sync v0.6.0
)

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

支持的协议有 BitTorrent、SOCKS5、Http

NodeJS 引擎 ECMAScript、Node.js

gopeed flutter 前端

目录包

ui/flutter/pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  flutter_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.2
  get: ^4.6.5
  lottie: ^1.4.2
  styled_widget: ^0.4.0+3
  context_menus: ^1.0.2
  json_annotation: ^4.8.1
  dio: ^5.2.1
  path_provider: ^2.1.1
  file_picker: 5.3.1
  macos_secure_bookmarks: ^0.2.1
  rounded_loading_button_plus: ^3.0.1
  url_launcher: ^6.1.6
  logger: ^1.3.0
  desktop_drop: ^0.4.3
  package_info_plus: ^4.0.0
  fluent_ui: ^4.4.0
  path: any
  badges: ^3.0.3
  app_links: ^3.4.2
  uri_to_file: ^0.2.0
  window_manager: ^0.3.4
  autoscale_tabbarview: ^1.0.2
  share_plus: ^7.1.0
  flutter_form_builder: ^9.1.1
  form_builder_validators: ^9.0.0
  flutter_foreground_task: ^6.1.2
  open_filex: ^4.3.4
  tray_manager: ^0.2.1
  lecle_downloads_path_provider: ^0.0.2+8
  hive: ^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.0
  ffigen: ^8.0.2
  # build json model: dart run build_runner build --delete-conflicting-outputs
  build_runner: ^2.2.1
  json_serializable: ^6.3.2
  flutter_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://www.coloradmin.cn/o/1618049.html

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

相关文章

坚蛋运动新质生产力实践——“AI健康”战略引领产品和服务创新

进入AI时代,全球互联网企业均开启了以大模型及其应用为代表的第四次工业革命的激烈竞赛。坚蛋运动已在全国范围内布局300门店,预计实现2024年500、2025年1000门店,作为国内运动健康产业的头部品牌,坚蛋运动率先提出并推动“AI健康…

Docker 基本认识

一 国内: 阿里云 提供ECS(Elastic Compute Service)弹性计算服务,包括通用型、计算型、内存型等多种实例, 满足不同应用场景的需求。 支持按需付费、包年包月等多种计费方式。 腾讯云: 提供CVM&#…

重磅发布 | 《网络安全专用产品指南》(第一版)

2017年6月1日,《中华人民共和国网络安全法》正式实施,明确规定“网络关键设备和网络安全专用产品应当按照相关国家标准的强制性要求,由具备资格的机构安全认证合格或者安全检测符合要求后,方可销售或者提供。国家网信部门会同国务…

vue3 watch监听

Watch在vue3中是一个组合API,可以多次调用,它有三个参数: Params1:被监听的变量,可以是一个数组,存放多个变量。 Params2:回调函数,监听的数据有变化时调用,回调函数中有…

IUG-CF论文精读

Neural collaborative filtering with ideal user group labels (具有理想用户组标签的神经协同过滤) 论文地址:https://www.sciencedirect.com/science/article/pii/S0957417423023898 摘要: 人口统计信息是推荐系统(RSs)的关键…

机器学习(四)之无监督学习

前言: 前面写了监督学习的几种算法,下面就开始无监督啦! 如果文章有错误之处,小伙伴尽情在评论区指出来(嘿嘿),看到就会回复的。 1.聚类(Clustering) 1.1 概述&#xff…

javaWeb-异常处理和事务管理

异常处理 我们的代码出现异常之后,异常会向上抛出,直到抛给Spring框架,会去响应一个错误结果 我们要想处理异常,可以在Controller的方法中去捕获异常,但这样做很繁琐,常常我们会定义一个全局异常处理器来…

每日两题 / 438. 找到字符串中所有字母异位词 238. 除自身以外数组的乘积(LeetCode热题100)

438. 找到字符串中所有字母异位词 - 力扣&#xff08;LeetCode&#xff09; 记录p串每个字符出现次数 维护与p串等长的滑动窗口&#xff0c;记录其中每个字符的出现次数 每次滑动后将当前次数与p串的次数比较即可 class Solution { public:vector<int> findAnagrams(s…

Java——继承与组合

和继承类似, 组合也是一种表达类之间关系的方式, 也是能够达到代码重用的效果。组合并没有涉及到特殊的语法 (诸如 extends 这样的关键字), 仅仅是将一个类的实例作为另外一个类的字段。 继承表示对象之间是is-a的关系&#xff0c;比如&#xff1a;狗是动物&#xff0c;猫是动…

API接口的用途以及接入示例

API接口的主要用途是允许不同的软件系统之间进行通信和数据交换。具体来说&#xff0c;API接口可以用于以下几个方面&#xff1a; 数据传输和交换&#xff1a;API接口可以用于不同系统之间的数据传输和交换&#xff0c;例如将数据从一个系统传递到另一个系统&#xff0c;或者从…

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

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

Linux加强篇-Vim编辑器

目录 ⛳️推荐 Vim文本编辑器 编写简单文档 配置主机名称 配置网卡信息 配置软件仓库 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 Vim文本编辑器 在Linux系统中一切都…

嵌入式面试-回答UART

说明&#xff1a; 此文章是在阅读了一些列面试相关资料之后对于一些常见问题的整理&#xff0c;主要针对的是嵌入式软件面试中涉及到的问答&#xff0c;努力精准的抓住重点进行描述。若有不足非常欢迎指出&#xff0c;感谢&#xff01;在总结过程中有些答案没标记参考来源&…

【Camera Sensor Driver笔记】五、点亮指南之Actuator配置

<slaveInfo> actuatorName dw9714v dirver IC 型号 slaveAddress 0x18 i2c write address i2cFrequencyMode FAST i2c 操作频率(400KHz) actuatorType VCM/BIVCM 马达类型 BIVCM&#xff08;中置马达&#xff…

一个小时学习javaScript

1 简介 1.1 什么是javascript JavaScript 是一种广泛使用的编程语言&#xff0c;最初被设计来增加网页的交互性&#xff0c;让用户能够与网页上的元素进行互动。自从1995年被引入以来&#xff0c;JavaScript已经发展成为Web开发中不可或缺的一部分&#xff0c;并且其用途已经…

qdbus

qdbus ## 一些简单的使用<font color red>(重要)QtDBus编程1、创建服务并创建对象2、通过QDBusMessage访问Service3、通过QDBusInterface 访问Service4、从D-Bus XML自动生成Proxy类5、使用Adapter注册Object6、自动启动Service qdbus是对dbus的进一步封装&#xff0c;d…

MS1000TA超声波测量模拟前端

产品简述 MS1000TA 是一款超声波测量模拟前端芯片&#xff0c;广 泛应用于汽车工业和消费类电子。该芯片具有高度 的灵活性&#xff0c;发射脉冲个数、频率、增益及信号阈值 均可配置。同时&#xff0c;接收通道参数也可以灵活配置&#xff0c; 从而适用于不同尺寸容器、不…

qt;lt;等xml|Html转义字符

在写Android布局文件时&#xff0c;左右尖括号<>&#xff0c;括号在XML中没办法直接使用&#xff0c;需要进行转义&#xff0c;收集一些转义符&#xff0c;以便查询使用。 常用表&#xff1a; **对于文章出现的任何问题请大家批评指出&#xff0c;一定及时修改 **可联系…

DOM4标准的事件监听与滚屏优化

EventTarget.addEventListener() 我们在学习addEventListener()时都只是知道它是用来给事件注册事件处理函数的。但是这种描述并不是很准确&#xff0c;MDN上给我们准确的描述了它的定义。EventTarget.addEventListener()方法将指定的监听器注册到EventTarget上&#xff0c;当…

ROS1 驱动USB摄像头 2024年亲测

安装 查看官网文档A ROS Driver for V4L USB Cameras 里面提供了github链接&#xff0c;链接如下&#xff0c;这里要选择develop分支 将这个文件包放到你的工作空间的src目录下&#xff0c;然后回到工作空间编译catkin_make 此时报错no package libv4l2 found 参考stack ov…