Code Monkey home page Code Monkey logo

gopeedlab / gopeed Goto Github PK

View Code? Open in Web Editor NEW
15.7K 159.0 1.1K 3.97 MB

A modern download manager that supports all platforms. Built with Golang and Flutter.

Home Page: https://gopeed.com

License: GNU General Public License v3.0

Go 32.85% Kotlin 0.19% C 0.34% Ruby 0.35% Swift 0.41% Objective-C 0.01% Dart 60.10% CMake 2.31% C++ 2.98% HTML 0.24% Dockerfile 0.10% JavaScript 0.12% Shell 0.01%
bittorrent downloader flutter torrent http https golang android cross-platform ios

gopeed's Introduction

Test Status Codecov Release Download Donate Discord

GopeedLab%2Fgopeed | Trendshift

ko-fi

English | 中文 | 日本語 | 正體中文 | Tiếng Việt

Introduction

Gopeed (full name Go Speed), a high-speed downloader developed by Golang + Flutter, supports (HTTP, BitTorrent, Magnet) protocol, and supports all platforms. In addition to basic download functions, Gopeed is also a highly customizable downloader that supports implementing more features through integration with APIs or installation and development of extensions.

Visit ✈ Official Website | 📖 Official Docs

Download

Platform Package Type Download Link
Windows EXE Installer Link
Portable ZIP Link
MacOS DMG Installer Link
Linux Flathub Link
SNAP Link
DEB Link
AppImage Link
Android APK Link
iOS IPA Link
Web Link
Docker Link

More about installation, please refer to Installation

Command tool

use go install:

go install github.com/GopeedLab/gopeed/cmd/gopeed@latest

Browser Extension

Gopeed also provides a browser extension to take over browser downloads, supporting browsers such as Chrome, Edge, Firefox, etc., please refer to: https://github.com/GopeedLab/browser-extension

Donate

If you like this project, please consider donating to support the development of this project, thank you!

Showcase

Development

This project is divided into two parts, the front end uses flutter, the back end uses Golang, and the two sides communicate through the http protocol. On the unix system, unix socket is used, and on the windows system, tcp protocol is used.

The front code is located in the ui/flutter directory.

Environment

  1. Golang 1.21+
  2. Flutter 3.16+

Clone

git clone [email protected]:GopeedLab/gopeed.git

Contributing

Please refer to CONTRIBUTING.md

Build

Desktop

First, you need to configure the environment according to the official Flutter desktop website documention, then you will need to ensure the cgo environment is set up accordingly. For detailed instructions on setting up the cgo environment, please refer to relevant resources available online.

command:

  • windows
go build -tags nosqlite -ldflags="-w -s" -buildmode=c-shared -o ui/flutter/windows/libgopeed.dll github.com/GopeedLab/gopeed/bind/desktop
cd ui/flutter
flutter build windows
  • macos
go build -tags nosqlite -ldflags="-w -s" -buildmode=c-shared -o ui/flutter/macos/Frameworks/libgopeed.dylib github.com/GopeedLab/gopeed/bind/desktop
cd ui/flutter
flutter build macos
  • linux
go build -tags nosqlite -ldflags="-w -s" -buildmode=c-shared -o ui/flutter/linux/bundle/lib/libgopeed.so github.com/GopeedLab/gopeed/bind/desktop
cd ui/flutter
flutter build linux

Mobile

Same as before, you also need to prepare the cgo environment, and then install gomobile:

go install golang.org/x/mobile/cmd/gomobile@latest
go get golang.org/x/mobile/bind
gomobile init

command:

  • android
gomobile bind -tags nosqlite -ldflags="-w -s" -o ui/flutter/android/app/libs/libgopeed.aar -target=android -androidapi 21 -javapkg="com.gopeed" github.com/GopeedLab/gopeed/bind/mobile
cd ui/flutter
flutter build apk
  • ios
gomobile bind -tags nosqlite -ldflags="-w -s" -o ui/flutter/ios/Frameworks/Libgopeed.xcframework -target=ios github.com/GopeedLab/gopeed/bind/mobile
cd ui/flutter
flutter build ios --no-codesign

Web

command:

cd ui/flutter
flutter build web
cd ../../
rm -rf cmd/web/dist
cp -r ui/flutter/build/web cmd/web/dist
go build -tags nosqlite,web -ldflags="-s -w" -o bin/ github.com/GopeedLab/gopeed/cmd/web

Credits

Contributors

JetBrains

goland

License

GPLv3

gopeed's People

Contributors

abc0922001 avatar albanobattistella avatar aucub avatar azatzin30 avatar cgcel avatar danielblackbeard avatar dearzack avatar deepansharya1111 avatar elliotchen37 avatar eltociear avatar er2de2 avatar foxxorcat avatar gesneriana avatar hugetiny avatar ilkeiii avatar invictusnavarchus avatar kiberkotan avatar liamsegura avatar mikropsoft avatar monkeywie avatar monoyan avatar mrglp avatar omjogani avatar pharaoh2012 avatar pugaizai avatar s535504 avatar thedragon40 avatar torik988 avatar towermom9 avatar trim21 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gopeed's Issues

写文件部分代码优化

image

在写文件时多个协程通过加锁的方式来写文件的,这样会出现对文件进行随机的写操作,这样不是很高效,可以优化一下;我能想到的优化思路,创建一个channel通道,把下载的数据传递到通道中,然后那一个协程进行顺序的写入,在写入数据时要保证数据时有序的,这样才能写入磁盘时有顺序写入的。

2.5.4版本

之前用的2.5.4版本特别好用,现在不能用了。请问老板 有可以用的新版本吗? 给个包啊

你好,这里有个疑惑,能否帮忙确认我的理解是否有误,此处return语句是否应该返回true,用于下一轮重试。

https://github.com/monkeyWie/gopeed-core/blob/bbd553d9101594836be1270a9d48bc4d454cdc8a/internal/protocol/http/fetcher.go#L305


作者你好,我这里猜测这个重试逻辑是这样的
重试区间:
根据当前chunk设置文件区间到header用于发起请求

  • 判断请求返回status code
    • 失败: 少于5次做重试
    • 成功:
      根据offset, 把buf写入文件
      • 写入成功: return, 通知外部
      • 写入失败: 重试少于5次, 返回重试

还是说,作者有意放弃对文件WriteAt()接口的err重试,直接跳出呢,等待解答 ~ :)

cannot load fmt

run: go run main.go
error:build command-line-arguments: cannot load fmt: cannot find module providing package fmt

ARM Linux 下docker无法启动

问题描述(必要)

ARM Linux 下docker无法启动

版本号(必要)

docker 1.1.2

操作系统(必要)

Linux armbian 5.15.56-flippy-75+o #144 SMP PREEMPT Fri Jul 22 09:54:12 CST 2022 aarch64 aarch64 aarch64 GNU/Linu

相关截图

相关日志

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
bb4abe1d8d7d4efae3c20531119a708828da69c2ece417a95feadeb6699886a6
docker: Error response from daemon: driver failed programming external connectivity on endpoint loving_noether (12635a892defadd056c742fb3c8906f62ea42721dac535a69301ff084d3e5942): Error starting userland proxy: listen tcp4 0.0.0.0:9999: bind: address already in use.

IPFS support

Description(required)

IPFS support

App Version(required)

All

OS Version(required)

All

macOS空白界面

问题描述(必要)

界面空白,无任何按钮

版本号(必要)

1.2.3

操作系统(必要)

macOS 12.6.1

相关截图

image

相关日志

网络代理支持相关项

代理支持协议:
HTTP(S)、Socks5

代理功能支持:
Tracker链接、torrent种子获取、P2P下载任务
可以为以上功能分别开启是否通过代理进行链接

m3u8格式

大佬能支持m3u8连接的分析下载整合么

浏览器下载接管

问题描述(必要)

浏览器下载接管

版本号(必要)

v1.1.2

操作系统(必要)

mac

希望可以接管浏览器下载,目前下载需要现在浏览器复制下载链接,打开客户端下载,流程有点繁琐,希望可以出个chrome插件之类的可以接管浏览器下载

建议加入输入密码的功能

有一些文件是要登录才能下载的,比如说威力导演,就要有账号密码才能下载,希望可以加入登录功能

关于GO依赖管理的请教

大佬你安装依赖的时候没有出现什么问题吗?我这里哪怕翻墙都下不到依赖,从Github上托源码下来也没办法安装。我想你能不能直接把你的整个GO包发给我,我就剩的搞环境搞半天了。

创建本地db或者当前文件夹中已有的任务,提示用户

Description(required)

创建本地db已有的任务 或者 当前文件夹中已有的同样size的文件,根据下载源地址或者源torrent文件提示用户
默认选项:取消准备创建的新的重复任务
次级选项:重新下载

App Version(required)

main分支

OS Version(required)

All

加入一起开发

老哥,我有两年左右的go开发经验,想参与你一起开发这个项目。

ed2k支持

希望支持下ed2k的链接下载,目前能支持这个链接下载的挺少的,docker更没有

总是出现local error: tls: bad record MAC

问题描述(必要)

go build -tags nosqlite -ldflags="-w -s" -buildmode=c-shared -o ui/flutter/windows/libgopeed.dll github.com/monkeyWie/gopeed/bind/desktop
go: downloading github.com/RoaringBitmap/roaring v1.0.1-0.20220510143707-3f418c4f42a4
..\..\go\pkg\mod\github.com\anacrolix\[email protected]\file.go:4:2: github.com/RoaringBitmap/[email protected]: read "https:/goproxy.io/@v/v1.0.1-0.20220510143707-3f418c4f42a4.zip": local error: tls: bad record MAC
..\..\go\pkg\mod\github.com\anacrolix\[email protected]\pending-requests.go:5:2: github.com/RoaringBitmap/[email protected]: read "https:/goproxy.io/@v/v1.0.1-0.20220510143707-3f418c4f42a4.zip": local error: tls: bad record MAC

网络肯定是没问题的

版本号(必要)

最新

操作系统(必要)

Windows11 最新版

Releases apk签名不一致

问题描述(必要)

每次releases的apk签名不一致,导致需要重新安装

版本号(必要)

1.2.0 1.2.1 1.2.2

操作系统(必要)

apk安装

相关截图

a76f7fd14f294962464fa3bcef5eb34

相关日志

go语言局外人怎么使用?

能否给个跑起来的说明.
没接触过go. 安装了go环境
执行 go run main.go
报错
`➜ gopeed git:(dev) sudo go run main.go
&{proxyee-down-main.jar 30159703 true}
panic: open ../testdata/Game.of.Thrones.S08E05.720p.WEB.H264-MEMENTO.torrent: no such file or directory

goroutine 1 [running]:
main.buildTorrent(0xc0001e63c0)`
为啥说文件或目录不存在

提问

作为一名前端开发者我想参与这个项目中,该去如何了解这一系列的知识结构呢,以前写过后端但是没做过这么复杂的@

更新

作者您好,请问是停止项目的维护了吗?怎么已经有一年多没更新提交了

支持header中定义Host

这个工具下载速度确实很快,很棒的一个项目!
能否支持在header中定义host,有些走默认域名下载很慢,想直接走ip

能否摒弃Javafx,使用纯vue作为前端显示

因为JAVA不太适合做客户端开发,打包后体积太大且内存占用太高。那么我们能否将纯vue作为前端显示,构建一个前后端分离的下载器,实现同样的功能呢。

建议采用 aria2 的模式

首先用 go 写出一个命令行工具(kernel)
而这样一个 kernel 本身就满足所有功能,并且提供接口

GUI壳子考虑

  1. websocket 协议实现网页端控制
  2. electron 实现跨平台 GUI

可以写一个关于接口的文档,壳子的开发由他人完成,本项目专注 kernel

tracker列表等相关支持

请增加以下功能,以满足BT下载中寻种速度与P2P下载速度的提升
1、自定义Tracker列表
可以手动输入Tracker地址
2、URL Tracker订阅
支持从URL订阅Tracker自定义列表,并支持定时更新
3、种子Tracker列表缓存
下载过的BT任务中,种子自带的Tracker地址缓存
4、Tracker列表自动添加至BT下载任务
将本地的自定义Tracker列表、URL Tracker订阅列表、种子Tracker缓存列表中的Tracker地址自动添加至新建BT下载任务中

请问是否考虑UI界面

人都是比较懒的,一般不会记命令。例如像下载工具,希望有个UI界面,直接copy、paste。点点点

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.