rakshasa / rtorrent

rTorrent BitTorrent client
https://github.com/rakshasa/rtorrent/wiki
GNU General Public License v2.0
4.05k stars 412 forks source link

Better way to organize torrents in the main view, e.g. by label or watch/download directory #1256

Closed josh-ua closed 6 months ago

josh-ua commented 6 months ago

Hi Friends --

Is there anyway to better group torrents in the main view, based on a custom attribute set by the user? For example, only show torrents from a certain label or from within a certain watch/download directory (set from the rtorrent config file).

Is this currently possible at all? Or is the main view just limited to all torrents and can only be filtered by the various states mentioned here? https://github.com/rakshasa/rtorrent/wiki/User-Guide#global-keys

Thanks

stickz commented 6 months ago

Yup, it's called a front-end for rTorrent. ruTorrent allows you to apply filters on top of filters. And automatically group torrents with expressions. It's mind boggling what can be done in PHP and JavaScript! https://github.com/Novik/ruTorrent

josh-ua commented 6 months ago

I'm aware of ruTorrent, but was looking for a solution that just utilized the base rtorrent. That doesn't exist, but I was able to replicate this functionality by running multiple instances of rtorrent. Of course, that doesn't scale well, but I only needed 2 or 3 degrees of separation and it's fine for me. For anyone wondering, here is a blog post that walks you through that set up: https://kernelwho.wordpress.com/2011/11/15/running-multiple-instances-of-rtorrent/

The tl;dr is make different rtorrent config files (make sure they are not named rtorrent.rc) with different sessions and port ranges and you can run as many rtorrent instances as your heart (and patience) desires.

kannibalox commented 6 months ago

For posterity, while it's not possible to change the main view, it is possible to create new views and filter them as needed:

view.add = movies # Create the view
view.persistent = movies # Persist it across restarts
method.insert = d.is_movie, simple, "equal={d.custom1=,((cat,movies))}" # Helper method to check the custom1 value (AKA the ruTorrent label)
view.filter = movies, ((d.is_movie)) # Filter the view on startup
schedule2 = filter_movies, 22, 33, "view.filter = movies, d.is_movie=" # Keep filtering the view every 33 seconds

Alternately the pyrosimple tools (which I maintain, for full disclosure), make on-the-fly filtering very easy:

rtcontrol label=movies --to-view=movies
josh-ua commented 6 months ago

Thanks @kannibalox . I think that is more in line was I was looking for -- I was wrong, it does exist! Will also take a look at your tools too.

darkalchemy commented 1 month ago

@kannibalox How could I bind the new view to a key?