Convert Figma logo to code with AI

deluge-torrent logodeluge

Deluge BitTorrent client - Git mirror, PRs only

1,538
336
1,538
23

Top Related Projects

Official Transmission BitTorrent client repository

qBittorrent BitTorrent client

[Unofficial] qBittorrent Enhanced, based on qBittorrent

35,422

aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.

⚡️ Streaming torrent client for the web

5,528

Full-featured BitTorrent client package and utilities

Quick Overview

Deluge is an open-source, cross-platform BitTorrent client written in Python. It features a robust plugin system, a web interface, and a desktop application, making it versatile for both casual users and advanced torrent enthusiasts.

Pros

  • Lightweight and efficient, with low resource usage
  • Extensive plugin system for customization and feature expansion
  • Cross-platform compatibility (Windows, macOS, Linux)
  • Supports both desktop and web-based interfaces

Cons

  • Development can be slow, with infrequent updates
  • Some users report stability issues with certain plugins
  • Web interface may lack some features compared to the desktop client
  • Documentation could be more comprehensive for developers

Code Examples

# Creating a torrent client
from deluge_client import DelugeRPCClient

client = DelugeRPCClient('127.0.0.1', 58846, 'username', 'password')
client.connect()
# Adding a torrent
torrent_file = '/path/to/torrent/file.torrent'
options = {'download_location': '/downloads'}
client.core.add_torrent_file(torrent_file, filedump, options)
# Listing active torrents
torrents = client.core.get_torrents_status({}, ['name', 'progress'])
for torrent_id, status in torrents.items():
    print(f"Torrent: {status['name']}, Progress: {status['progress']}%")

Getting Started

To get started with Deluge, follow these steps:

  1. Install Deluge:

    pip install deluge
    
  2. Start the Deluge daemon:

    deluged
    
  3. Connect to the daemon using the Deluge console:

    deluge-console
    
  4. Add a torrent:

    add <torrent_file_or_magnet_link>
    
  5. Monitor your torrents:

    info
    

For more advanced usage, consider exploring the Deluge API or installing plugins to extend functionality.

Competitor Comparisons

Official Transmission BitTorrent client repository

Pros of Transmission

  • Lighter resource usage and faster performance
  • Better cross-platform support, including native clients for various operating systems
  • More user-friendly and intuitive interface for beginners

Cons of Transmission

  • Less customizable and fewer advanced features compared to Deluge
  • Limited plugin ecosystem and extensibility options
  • Fewer remote management capabilities out of the box

Code Comparison

Transmission (C):

static void
tr_peerMgrGotBadPiece(tr_torrent * tor, tr_piece_index_t pieceIndex)
{
    assert(tr_isTorrent(tor));
    assert(pieceIndex < tor->info.pieceCount);

    tr_peerMgrLock(tor);

Deluge (Python):

def update_piece_states(self):
    if not self.has_metadata:
        return
    for i in range(self.num_pieces):
        if self.handle.have_piece(i):
            self.picker.set_piece_priority(i, 0)

Both projects use different programming languages, with Transmission primarily written in C and Deluge in Python. This affects performance, maintainability, and extensibility characteristics of each client.

qBittorrent BitTorrent client

Pros of qBittorrent

  • More active development with frequent updates and bug fixes
  • Built-in search engine for torrents
  • Supports more advanced features like IP filtering and anonymous mode

Cons of qBittorrent

  • Larger resource footprint, especially on memory usage
  • Less customizable interface compared to Deluge's plugin system
  • Can be overwhelming for new users due to its extensive feature set

Code Comparison

Both projects are primarily written in C++, but they have different approaches to their user interfaces.

qBittorrent uses Qt for its GUI:

#include <QApplication>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMessageBox::information(nullptr, "Hello", "Welcome to qBittorrent!");
    return app.exec();
}

Deluge uses Python and GTK for its interface:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

win = Gtk.Window(title="Deluge")
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

Both projects offer robust torrent management capabilities, but qBittorrent tends to have a more feature-rich out-of-the-box experience, while Deluge focuses on simplicity and extensibility through its plugin system.

[Unofficial] qBittorrent Enhanced, based on qBittorrent

Pros of qBittorrent-Enhanced-Edition

  • More frequent updates and active development
  • Enhanced features like subscription-based RSS auto-downloading
  • Better performance for handling large numbers of torrents

Cons of qBittorrent-Enhanced-Edition

  • Less cross-platform compatibility compared to Deluge
  • Potentially more complex user interface for beginners
  • Some features may be considered "gray area" in terms of legality

Code Comparison

While both projects are open-source, their codebases differ significantly. Here's a brief comparison of how they handle torrent addition:

qBittorrent-Enhanced-Edition (C++):

void TorrentHandle::addTrackers(const QList<TrackerEntry> &trackers)
{
    if (trackers.isEmpty()) return;

    const libtorrent::torrent_handle handle = m_nativeHandle;
    for (const TrackerEntry &tracker : trackers)
        handle.add_tracker(tracker.url());
}

Deluge (Python):

def add_torrent_file(self, filename, filedump, options):
    """Adds a torrent file to the session"""
    try:
        self.torrentmanager.add(filedump=filedump, options=options, filename=filename)
    except Exception as ex:
        log.error("Error adding torrent: %s", ex)
        raise

These snippets showcase the language difference (C++ vs Python) and slightly different approaches to adding torrents to their respective clients.

35,422

aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.

Pros of aria2

  • Lightweight and resource-efficient, suitable for low-powered devices
  • Supports multiple protocols (HTTP/HTTPS, FTP, BitTorrent, Metalink)
  • Command-line interface allows for easy integration with scripts and automation

Cons of aria2

  • Lacks a built-in GUI, which may be less user-friendly for some users
  • Limited built-in features compared to Deluge's extensive plugin system
  • Less active community support and development compared to Deluge

Code Comparison

aria2:

void DefaultBtMessageDispatcher::addMessageToQueue(
    std::unique_ptr<BtMessage> msg,
    bool isPriority)
{
  queue_.push_back(std::move(msg));
}

Deluge:

def add_torrent_file(self, filename, filedump, options):
    options["add_paused"] = False
    torrent_id = self.torrentmanager.add(
        filedump=filedump, options=options, filename=filename
    )
    return torrent_id

The code snippets show different approaches: aria2 uses C++ with a focus on message queuing, while Deluge uses Python and demonstrates torrent file handling. This reflects their design philosophies, with aria2 prioritizing efficiency and Deluge emphasizing ease of use and extensibility.

⚡️ Streaming torrent client for the web

Pros of WebTorrent

  • Browser-based: WebTorrent can run directly in web browsers, enabling easy integration with web applications
  • JavaScript implementation: Allows for seamless integration with Node.js and browser environments
  • Streaming capabilities: Supports streaming media content while downloading

Cons of WebTorrent

  • Limited protocol support: Primarily focuses on WebRTC and WebSockets, while Deluge supports a wider range of protocols
  • Less mature: WebTorrent is a newer project compared to Deluge, which may result in fewer features and less stability

Code Comparison

WebTorrent (JavaScript):

const WebTorrent = require('webtorrent')
const client = new WebTorrent()

client.add(torrentId, (torrent) => {
  torrent.files.forEach(file => file.createReadStream())
})

Deluge (Python):

from deluge_client import DelugeRPCClient

client = DelugeRPCClient('127.0.0.1', 58846, 'username', 'password')
client.connect()
client.core.add_torrent_url(torrent_url, {})

Both repositories offer torrent functionality, but WebTorrent focuses on browser compatibility and JavaScript ecosystems, while Deluge provides a more traditional desktop-based torrent client with a wider range of features and protocols supported.

5,528

Full-featured BitTorrent client package and utilities

Pros of torrent

  • Written in Go, offering better performance and concurrency
  • Lightweight library design, suitable for embedding in other applications
  • More active development with frequent updates and contributions

Cons of torrent

  • Less user-friendly for non-developers compared to Deluge's GUI
  • Fewer built-in features and plugins compared to Deluge's ecosystem
  • Requires more setup and configuration for end-users

Code Comparison

Deluge (Python):

class Core(component.Component):
    def __init__(self, *args, **kwargs):
        component.Component.__init__(self, "Core")
        self.session = lt.session()
        self.torrents = {}

torrent (Go):

type Client struct {
    config *Config
    logger *log.Logger
    store  storage.ClientImpl
    cl     *peer_protocol.Client
}

The code snippets show the core structures of both projects. Deluge uses a component-based architecture with Python classes, while torrent employs a more straightforward Go struct approach. This reflects the different language paradigms and design philosophies of the two projects.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Deluge BitTorrent Client

build-status docs-status

Deluge is a BitTorrent client that utilizes a daemon/client model. It has various user interfaces available such as the GTK-UI, Web-UI and Console-UI. It uses libtorrent at its core to handle the BitTorrent protocol.

Install

From PyPi:

pip install deluge

with all optional dependencies:

pip install deluge[all]

From source code:

pip install .

with all optional dependencies:

pip install .[all]

See DEPENDS and Installing/Source for dependency details.

Usage

The various user-interfaces and Deluge daemon can be started with the following commands.

Use the --help option for further command options.

Gtk UI

deluge or deluge-gtk

Console UI

deluge-console

Web UI

deluge-web

Open http://localhost:8112 with default password deluge.

Daemon

deluged

See the Thinclient guide to connect to the daemon from another computer.

Contact