aminbhst / brisk Goto Github PK
View Code? Open in Web Editor NEWFast, multithreaded, cross-platform download manager
License: GNU General Public License v3.0
Fast, multithreaded, cross-platform download manager
License: GNU General Public License v3.0
When a chunk download addition is sent to Brisk via the browser extension, the user should be able to specify a directory for all downloads in that list to be saved in.
Thank you for developing this application. I would like to suggest adding a feature to download videos from popular browsers.
I believe it would be easier to do this once you have browser integration enabled.
Brisk uses flutter_local_notifications for handling its notifications on Linux. This package also supports macOS, but since I don't own a mac, I refrained from implementing it for this platform as I had no way of testing it.
The implementation is relatively straightforward as explained in the package's docs.
The file containing the notification logic is /lib/util/notification_util.dart
.
Contribution to this feature and any macOS-related features or bugs is greatly appreciated!
To maximize download speed at all times, the ultimate solution is to reuse connections that have received their designated bytes and dynamically segment the bytes of other connections.
e.g. Connection 2 and 3 have finished downloading and connection 1 is still receiving bytes. In this case, connections 2 and 3 each should be assigned to receive 1/3 of the remaining bytes of connection 1. By doing so, all connections will remain active at all times and the download speed will be boosted in cases with slow download speed on single connections.
The algorithm will most likely be complicated to implement and requires extremely rigorous testing to ensure stability and prevent file corruption.
The new version of Brisk is now available on the main branch. Could you please upload the macOS binaries to the projects github releases? @Norman-w
Brisk should be able to create new windows when capturing requests from the browser extension. e.g. When the user adds a chunk of download links to brisk, instead of showing a dialog in the app, a new window should be opened.
Prerequisite: flutter/30701
Before either adding a download to the list or starting it, Brisk has to check whether or not there is enough free space on the disk and use ConfirmationDialog
to notify the user and ask to proceed.
Note: disk space validation logic has to be added to DownloadAdditionUiUtil#handleDownloadAddition
Need a collaborator to manage Brisk releases for macOS. If you're interested, I can add you as a project collaborator to have access to github releases in order to upload the macOS binaries for each new release. This could probably also be achieved by using github actions as well, however I'm not aware of how the process is.
Your help is very much appreciated!
Distro: openSUSE Tumbleweed
Brisk Version: 1.4.0
Browser: Firefox
Thanks for the code. Great to have some real application examples.
With a fresh clone onto a Windows 10x64 22H2 machine I get the error shown below. Flutter/Dart are, I believe, the most recent releases.
Not sure if the referenced packages should be updated or not. Any advice appreciated.
R:\src\flutter\brisk>flutter --version
Flutter 3.22.1 • channel stable • https://github.com/flutter/flutter.git
Framework • revision a14f74ff3a (13 days ago) • 2024-05-22 11:08:21 -0500
Engine • revision 55eae6864b
Tools • Dart 3.4.1 • DevTools 2.34.3
Build spew:
R:\src\flutter\brisk>flutter run
Resolving dependencies...
Downloading packages...
_fe_analyzer_shared 67.0.0 (70.0.0 available)
analyzer 6.4.1 (6.5.2 available)
csv 5.1.1 (6.0.0 available)
file_picker 6.2.1 (8.0.3 available)
flutter_local_notifications 16.3.3 (17.1.2 available)
hotkey_manager 0.1.8 (0.2.3 available)
http 1.2.0 (1.2.1 available)
intl 0.18.1 (0.19.0 available)
launch_at_startup 0.2.2 (0.3.0 available)
leak_tracker 10.0.4 (10.0.5 available)
leak_tracker_flutter_testing 3.0.3 (3.0.5 available)
material_color_utilities 0.8.0 (0.11.1 available)
meta 1.12.0 (1.15.0 available)
package_info_plus 5.0.1 (8.0.0 available)
package_info_plus_platform_interface 2.0.1 (3.0.0 available)
pluto_grid 7.0.2 (8.0.0 available)
test_api 0.7.0 (0.7.2 available)
url_launcher_web 2.2.3 (2.3.1 available)
uuid 3.0.7 (4.4.0 available)
vm_service 14.2.1 (14.2.3 available)
web 0.4.2 (0.5.1 available)
web_socket_channel 2.4.3 (3.0.0 available)
Got dependencies!
22 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.
Launching lib\main.dart on Windows in debug mode...
/C:/Users/moi/AppData/Local/Pub/Cache/hosted/pub.dev/pluto_grid-7.0.2/lib/src/manager/shortcut/pluto_grid_shortcut.dart(33,39): error GC2F972A8: The argument type 'RawKeyEvent' can't be assigned to the parameter type 'KeyEvent'. [R:\src\flutter\brisk\build\windows\x64\flutter\flutter_assemble.vcxproj]
/C:/Users/moi/AppData/Local/Pub/Cache/hosted/pub.dev/pluto_grid-7.0.2/lib/src/manager/shortcut/pluto_grid_shortcut.dart(33,46): error GC2F972A8: The argument type 'RawKeyboard' can't be assigned to the parameter type 'HardwareKeyboard'. [R:\src\flutter\brisk\build\windows\x64\flutter\flutter_assemble.vcxproj]
r:\vs2022\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(254,5): error MSB8066: Custom build for 'R:\src\flutter\brisk\build\windows\x64\CMakeFiles\a82e6a928630805541b481720c052ab0\flutter_windows.dll.rule;R:\src\flutter\brisk\build\windows\x64\CMakeFiles\37bba2b750860eb356cc77762b01f89c\flutter_assemble.rule;R:\src\flutter\brisk\windows\flutter\CMakeLists.txt' exited with code 1. [R:\src\flutter\brisk\build\windows\x64\flutter\flutter_assemble.vcxproj]
Building Windows application... 20.1s
Error: Build process failed.
Hi,
Please enables support for system tray menu. check this package
Needed package: auto_updater
Hi,
Please upgrade flutter SDK to v3.16.x
This version has a significant graphics features specially on linux. (The app start much faster now)
/home/user/Brisk/brisk: error while loading shared libraries: libkeybinder-3.0.so.0: cannot open shared object file: No such file or directory
This is a great app. Would you be able to submit it to Windows Package Manager so we can download and update Brisk using the winget
command line tool?
Info: https://learn.microsoft.com/en-us/windows/package-manager/package/
It would be cool to make a a service that will work in the background, to be able to unload the UI because the UI consumes a lot of RAM.
Brisk should optionally be able to launch at startup since the browser extension is always active by default. The possibility of starting up in the system tray must also be investigated.
Package needed: launch_at_startup
@Norman-w Could you please get a macOS build from the main branch and upload it for the latest release? Thank you
Sometimes, some connections might slow down the download speed. This is especially true when most download connections have been completed and the download might slow down significantly due to the state of the remaining connections. It has been seen that a manual pause/resume helps a lot in those cases and the download speed goes back to what is expected for the most part.
In the future, a dynamic segmentation feature might be added to maximize download speed at all times but in the meantime, this minor change can significantly boost the download speed in special cases.
The download speed must be compared to the average expected speed in regular intervals. If the speed is significantly lower, a connection reset will be initiated by the multi connection coordinator. This, however, should only be attempted once or twice and if it didn't yield any benefits, download connections must continue.
Hello, thank you so much for this new great awesome fantastic download manager ! 💯 🥇
I have request please : add support for downloading videos from embed streaming videos sites
and may be integrating some of these great rare open-source regulary updated extensions and tools may help to detect embed complex videos from streaming videos and make our beloved Brisk Download manager more stronger and more efficient to detect and download all kind of embed videos, thank you !
Best of open source video downloader extensions :
https://github.com/chandler-stimson/live-stream-downloader
https://github.com/puemos/hls-downloader
https://github.com/ray-lothian/Easy-Video-Downloader
https://webextension.org/listing/easy-video-downloader.html
https://github.com/54ac/stream-detector
https://github.com/inbasic/bulk-media-downloader
https://github.com/inbasic/turbo-download-manager-v2
https://github.com/iawia002/lux
https://github.com/soimort/you-get
https://github.com/AminBhst/brisk-browser-extension
https://github.com/zaidka/cliget
https://github.com/kanishka-linux/hlspy
https://github.com/selsta/hlsdl
https://github.com/aclap-dev/vdhcoapp
https://github.com/CoolnsX/hls_downloader
https://sites.google.com/site/linkgopher/
https://github.com/emarsden/dash-mpd-cli
https://github.com/nilaoda/N_m3u8DL-CLI
https://github.com/nilaoda/N_m3u8DL-RE
https://github.com/globocom/m3u8
EDIT : and also
https://github.com/mhogomchungu/media-downloader
https://github.com/mhogomchungu/media-downloader/wiki/Extensions
https://github.com/giantpinkrobots/varia
https://github.com/filecxx/FileCentipede
https://filecxx.com/en_US/index.html#features
edit : and :
https://github.com/aandrew-me/ytDownloader
https://ytdn.netlify.app/
https://github.com/kannagi0303/yt-dlp-gui
https://github.com/ytdl-official/unlock
https://github.com/setvisible/ArrowDL
https://www.arrow-dl.com/
https://github.com/giantpinkrobots/varia
https://giantpinkrobots.github.io/varia/
https://github.com/ErrorFlynn/ytdlp-interface
https://github.com/database64128/youtube-dl-wpf
https://cube64128.xyz/
https://github.com/Maxstupo/ydl-ui
https://github.com/jeanslack/Videomass
https://jeanslack.github.io/Videomass/
https://oleksis.github.io/youtube-dl-gui/
https://github.com/oleksis/youtube-dl-gui
https://github.com/KurtBestor/Hitomi-Downloader
https://github.com/KikoPlayProject/KikoPlay
https://kikoplay.fun/
https://github.com/SeaHOH/ykdl
https://github.com/CoolnsX/dra-cla
https://github.com/nilaoda/BBDown
Video m3u8 Sniffer - Find HLS Streaming URLs
M3U8 finder and HLS player
http://sigmafxdx.com/m3u8Sniffer/
https://github.com/CoolnsX/hls_downloader
https://coolnsx.github.io/
scripts and tools :
https://github.com/Momo707577045/m3u8-downloader
https://github.com/Momo707577045/media-source-extract
https://github.com/Momo707577045/tinypng-script-with-cache
http://blog.luckly-mjw.cn/tool-show/m3u8-downloader/index-en.html
https://segmentfault.com/a/1190000025182822
Native HLS playback
by Gaetan Hervouet
https://github.com/ghouet/chrome-hls
Native MPEG-Dash + HLS Playback
by David Cavar
https://github.com/Palethorn/native-adaptive-streaming
https://cavar.net/
https://github.com/pystardust/ani-cli
https://github.com/justfoolingaround/animdl
https://github.com/spencerwooo/onedrive-vercel-index
https://github.com/alist-org/alist
https://github.com/helloxz/ccaa
edit : integration with web browsers :
https://github.com/AminBhst/brisk-browser-extension
https://github.com/ugetdm/uget-integrator
and :
https://github.com/persepolisdm/Persepolis-WebExtension
https://github.com/filecxx/FileCentipede
https://github.com/subhra74/xdm-integration-module
https://github.com/subhra74/xdm-browser-monitor
https://github.com/subhra74/xdm-helper-chrome
https://github.com/subhra74/xdm-firefox-old
https://github.com/ginuerzh/gost/blob/master/README_en.md
https://github.com/kanishka-linux/hlspy
https://curl.se/
https://nodejs.org/en
https://www.electronjs.org/
https://github.com/SeaHOH/ykdl
https://github.com/selsta/hlsdl
https://github.com/iamtalhaasghar/yewtube
mps-youtube/yewtube#1191
https://iamtalhaasghar.github.io/yewtube/
https://github.com/otisdog8/termitube
https://erickutcher.github.io/#HTTP_Downloader
https://github.com/nilaoda/BBDown
https://github.com/the1812/Bilibili-Evolved
https://github.com/kengwang/BiliDuang
https://github.com/MotooriKashin/Bilibili-Old
https://github.com/sodaling/FastestBilibiliDownloader
https://github.com/pystardust/ytfzf
https://github.com/justfoolingaround/fast-yt-search
https://github.com/anasty17/mirror-leech-telegram-bot
https://github.com/junedkh/jmdkh-mltb
Hello, thank you so much for this awesome great fantastic new download manager !! 💯 🥇
I discovered while downloading from streaming sites that in some streaming video players, like in this site :
https://v5.voiranime.com/anime/boku-dake-ga-inai-machi/
and even if I choose "1" for the number of threads, the downloaded video is divided into very small parts which prevents us from watching the video while it is downloading and I have to wait for the download to finish to watch the donwloaded video, so please we hope our beloved Brisk Download Manager will add an option to preview/watch the video while downloading, I tried with coc coc browser which can download streamig videos and thus we can play file while it's still downloading and preview/watch while downloading the video, thank you !
EDIT :
Yes we can think this option request is a niche feature 👍 but personnaly i think it is an important and the most important feature of a donwload manager, already it allows us to avoid the possible banning of our IP address by setting the number of threads to "1" if for example when downloading episodes of anime which have 700 episodes!
in addition the wifi can become unstable very weak when a lot of family members connect, and if we watch streaming, the viewing will be jerky lag interrupted if the video is in HD if our internet connection is weak, in addition the downloaded video can be very long and waiting for the download to finish can be annoying...plus I have done tests and downloading videos from streaming sites with number of threads "1" is very fast, stable and it is more ecological and saves our battery resources!
Coc coc browser says that its internal downloader has 8 threads to speed up the downloads however we can preview the downloaded video so I think coc coc browser downloads first part of the video first then increase the number of threads to increase the speed....
Thank you very much :)
EDIT :
Hello, I talked to the developer of FileCentipede about this probleme and this is his answer....maybe it cOULD help to add the great video streaming capability :
"For streaming media, the use of a single thread or multiple threads for downloading makes no difference. During the download process, the downloader creates independent files for each segment locally, which are then merged into a single file after downloading. This is why the file cannot be played. To resolve this, I can add an option in the future to enable sequential downloading using only one connection and creating a single file, allowing the player to function properly. However, the player's fast-forward and rewind functions may not be available. While many players support direct playback of m3u8 files, they may not bypass certain download restrictions or decrypt content like FileCentipede does, unless I make a new video player. In the absence of a perfect solution, I will work on addressing this issue in the future.
Thank you for your feedback, and I will strive to resolve this problem in subsequent updates."
and this was my response :
"Mr Filecxx , you explained to us : "unless I make a new video player.", oh we thank you very much ! we know it's a very difficult and complicated and complex task and we don't want to tire you out, so if potplayer or vlc player doesn't cannot "bypass certain download restrictions or decrypt content", perhaps the source code of these open source and powerful video players could help to find a solution or add patches or fix evental bugs with playback.....:
https://github.com/KikoPlayProject/KikoPlay
https://github.com/zaps166/QMPlay2
https://github.com/coslyk/moonplayer
https://github.com/vzhd1701/gridplayer
https://github.com/tsl0922/ImPlay
https://github.com/mpc-qt/mpc-qt
https://github.com/mpvnet-player/mpv.net
When downloading a smaller file. It will get progress like below
flutter: Received progress update: 0.0
flutter: Received progress update: 0.0
flutter: Received progress update: 0.0
flutter: Received progress update: 0.0
flutter: Received progress update: 0.0
flutter: Received progress update: 0.0
flutter: Received progress update: 0.0
flutter: Received progress update: 1.0
flutter: Received progress update: 1.0
we got 2 or more 1.0(finish signal)
so we can't show a notification correctly
For links that expires after adding it to the queues, I would suggest adding a feature to be able to refresh and resume download of expired links.
Hi,
Please add option to download with server timestamp.
A feature which gives ability to make changes in link address of downloads. Very useful when the links get expired.
When the selected links on a webpage (see the demo in the README) contain URLs other than valid download links, Brisk fails to retrieve their information and therefore, shows an error dialog. Instead, all failing links should be ignored so that the valid links can be added without issues. To do that, a simple try,catch in BrowserExtensionServer#requestFileInfoBatch
might do the trick.
Package needed: system_tray or tray_manager
There are a couple of widgets that are not responsive enough. For instance, the download progress window (the window that appears when you click show progress window on a download row) is only responsive enough vertically. If the size of the window is reduced a lot horizontally, the buttons will move out of their container. It's best to first reduce the space between the buttons and if the width is reduced even further, move two buttons to a second row. The same thing is the case with the settings dialog.
@Norman-w Thank you in advance!
Hi,
I try to download a file from cloud.mail.ru and it stuck.
Brisk Version: 1.4.1
OS: Archlinux KDE
I tried to download a file from send.cm(send.cm) and got an error (browser downloads the file normally)
This is merely a minor UX improvement. Since It's kind of a hassle for the user to check rows and click download/stop button and then uncheck the rows again, It's better to automatically uncheck the selected rows when these buttons are pressed.
For any potential contributors, check the pluto_grid_util
file to get an idea on how to uncheck rows. The buttons are also in the top_menu
file.
Contributions are welcome and appreciated.
This will most likely take a lot of time to implement and this issue merely exists as a reminder to investigate into the implementation details of this feature. It is therefore unclear whether or not this feature will be implemented in the future.
Currently, deleting a download item from the list only deletes its downloaded temp files. A checkbox has to be added to download item deletion confirmation dialog (TopMenu#onRemovePressed
) so that when it's checked, the downloaded file is deleted from the disk.
@Norman-w Could you please upload version 1.2.2 macOS binaries? Thank you
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.