webtorrent / webtorrent-desktop Goto Github PK
View Code? Open in Web Editor NEW❤️ Streaming torrent app for Mac, Windows, and Linux
Home Page: https://webtorrent.io/desktop
License: MIT License
❤️ Streaming torrent app for Mac, Windows, and Linux
Home Page: https://webtorrent.io/desktop
License: MIT License
To reproduce: Drag any non-.torrent
file to the app to start seeding, then reload.
% rm -rf ~/.config/WebTorrent
% git rev-parse HEAD
4085dd1062a704dc95cd12dbdfa0915eb40e6d56
% npm build; npm start
> [email protected] start /home/crusty/webtorrent-app
> electron .
loaded state from /home/crusty/.config/WebTorrent/config.json
[1808:0308/095229:ERROR:webrtcsession.cc(1384)] ConnectDataChannel called when data_channel_ is NULL.
[1808:0308/095229:ERROR:webrtcsession.cc(1384)] ConnectDataChannel called when data_channel_ is NULL.
[1808:0308/095229:ERROR:webrtcsession.cc(1384)] ConnectDataChannel called when data_channel_ is NULL.
[1808:0308/095229:ERROR:webrtcsession.cc(1384)] ConnectDataChannel called when data_channel_ is NULL.
As seen above, when pressing the play red button lots of error are logged.
Sure I could send everything to /dev/null
, but...
Can you reproduce it on other platform?
I think it would be beneficial to move the video player to a separate window so that a user can see everything in the list and have one or more video players open simultaneously. This would simplify managing state for the list window too.
If you think it's worth doing, I can take a crack at it.
I have not tested this on a Chromecast, but I suspect this issue may also apply there.
Currently, if you're streaming a torrent within the WebTorrent desktop app and then click on the AirPlay icon, the video will restart playing on desktop while simultaneously streaming to your Apple TV. This is different behaviour to what is typically seen when a user is browsing the Web and decides to AirPlay an HTML5 video.
Expected behaviour:
Actual behaviour:
This issue leads me to a question - when a user clicks AirPlay, does WebTorrent.app actually re-start the torrent download, or does it stream what the user has already downloaded so far in the desktop app?
Apparently in commit 093d810
, WebTorrent.add()
is called using the torrent's infoHash while the API need the magnetURI.
https://github.com/pristineio/webrtc-build-scripts
If anyone with more xcode experience than myself is able create bindings with for react-native
in a way that replicates the protocol used in https://github.com/feross/simple-peer for node - then webtorrent could extend into the iOS world - potentially built on top of everything that already exists in this world.
The playback controls will hide after two seconds while the user is scrubbing. This is because dispatch('videoMouseMoved') is not being called within handleScrub()
Currently the app loses the torrent list every time the main window closes or is reloaded, and when the app is restarted. Ideally state is stored on disk somewhere so that sessions are just resuming what's already been in progress beforehand.
Looking for good modules (or just vanilla solutions, like a state.json?) to solve this issue. Currently avoiding anything that requires native dependencies or grows the dependency graph in a big way.
Not sure why this happened, but I bisected and found that that's the root cause.
Hi, a Debian package for webtorrent-app would be nice. I've tried creating one with fpm; running fpm -s npm -t deb
inside the directory does not create a working Debian package (no binary to run from /usr/local/bin).
I want a way to see the icons when I'm working from a coffee shop.
A script for cleaning up configuration files and traces the webtorrent-app
leaves on the system would be useful (mostly for developers).
I want to drop a file onto the WebTorrent dock icon and have WebTorrent open that file. Atom and Playback do it so I know it's possible. PR incoming.
The
powerSaveBlocker
module is used to block the system from entering low-power (sleep) mode and thus allowing the app to keep the system and screen active.
http://electron.atom.io/docs/v0.36.8/api/power-save-blocker/
Similar to the OS X Dock issue #113, let's add a User Task menu for Windows:
API docs: http://electron.atom.io/docs/v0.36.8/tutorial/desktop-environment-integration/#user-tasks-windows
Is it easy to build for several platform and put it in a github release ?
Anyway I think it can be important ,once the app is ready, for people that don't want to install node.js (themselves). Especially on windows(/mac).
There should be a playlist & shuffle option in webtorrent-app
so you can automatically play the next videos in the list after the current video has finished playing. Also the option to start downloads while items are playing, and a previous/next option.
shell.showItemInFolder(fullPath)
will come in handy.
We don't want to calculate the virtual DOM multiple times in the same animation tick. That's wasted CPU cycles.
That said, it's hard to guarantee that update()
won't be called multiple times in one tick. So, update()
needs to get smarter.
There's a delay between when I move my mouse and when the controls show up again.
Haven't looked at the code yet, but I think we probably are missing a call to update()
somewhere.
Moved into it's own issue from #54 (comment)...
Since torrent streaming isn't supported by most popular torrent managers; developers and websites could make an integration for this without requiring users to rethink their default torrent configurations.
Websites that share torrent files generally have links such as 'Download Torrent' and 'Open Magnet'. Imagine an extra link saying 'Stream Torrent'. That's what I'd like to see.
Bonus suggestion: decide on a general torrent streaming protocol (i.e. str://<magnet>
) with https://github.com/jaruba/PowderPlayer so that developers can simply add 'Stream Torrent` links that support any torrent app with the protocol!
These are the shortcuts that I personally use a lot in VLC:
CMD
ALT
right
)CMD
ALT
left
)CMD
+
)CMD
-
)Some trackers make super easy to obtain magnet links compared to download the .torrent
's.
Adding support for them would be very useful. (:
require()
time, find out which dependencies are loading slowlyvirtualdom
from swapping out every event handler on every ticksequential
to rarest
strategy once the video has buffered far enoughThe video should just stop when it's finished, not restart again. Not sure how this is happening since there's no loop
attribute added to the video tag like <video loop>
.
Very strange.
cc @ungoldman
Let's add a button to the Preferences Pane #62 for enabling this for magnet links. Like with lots of other things, I think Transmission gets this UI and wording right:
For .torrent files, I think we just register with the OS that our application can open .torrent files and leave it up to the OS and user to configure WebTorrent as their default.
Make the +
button on the header bar show a prompt for a torrent id string (magnet link, http/fs path to .torrent, etc.).
On Windows you can add a thumbnail toolbar with specified buttons in a taskbar layout of an application window. It provides users a way to access to a particular window’s command without restoring or activating the window.
Built-in Windows programs like Windows Media Player do this, so we should too to blend into the OS as best we can.
API docs: http://electron.atom.io/docs/v0.36.8/tutorial/desktop-environment-integration/#thumbnail-toolbars
Right now downloads just go to /tmp/webtorrent
and get deleted on restart. This app needs a persistent downloads folder!
What is standard the downloads folder for each OS? For OS X it's ~/Downloads
. Might be good to set default to whatever the OS default is.
We need a way to set a custom downloads folder location. Perhaps this is the beginning of a preferences view.
We should hide the player controls if the mouse is still, even when not in fullscreen.
YouTube and QuickTime do the same.
Replicating the options from the File menu (minus Close Window) in the Dock would be excellent:
API docs: http://electron.atom.io/docs/v0.36.8/tutorial/desktop-environment-integration/#custom-dock-menu-os-x
In Unity, you can add custom entries to its launcher. Similar to the OS X Dock issue #113, let's add Unity Launcher Shortcuts for Linux:
In Linux (Fedora 23 x64) when I click on the full screen menu
appears the popup with following error:
Uncaught Exception:
TypeError: Error processing argument at index 0, conversion failure from
at TypeError (native)
at toggleFullScreen (/home/joseluis/webtorrent-app/main/menu.js:30:18)
at MenuItem.click (/home/joseluis/webtorrent-app/node_modules/electron-prebuilt/dist/resources/atom.asar/browser/api/lib/menu-item.js:69:18)
at Function.delegate.executeCommand (/home/joseluis/webtorrent-app/node_modules/electron-prebuilt/dist/resources/atom.asar/browser/api/lib/menu.js:128:69)
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.