mirror of
https://github.com/codex-storage/deluge.git
synced 2025-02-02 14:44:21 +00:00
rebrand to flood
This commit is contained in:
parent
406135df66
commit
be94dcda7a
@ -1,5 +1,5 @@
|
|||||||
=================================
|
=================================
|
||||||
Installation of pytorrent
|
Installation of Flood
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
Compile: python setup.py build
|
Compile: python setup.py build
|
||||||
@ -11,7 +11,7 @@ Dependencies to compile (written as Ubuntu packages): python, libboost-filesyste
|
|||||||
|
|
||||||
May also depend on (not sure): python-dev, and -dev packages for all boost libs
|
May also depend on (not sure): python-dev, and -dev packages for all boost libs
|
||||||
|
|
||||||
Makefile.libtorrent-only.* are the makefiles from libtorrent, copied as it. They don't refer to pytorrent, and probably won't work in the current directory structure. However, they may help people know what dependencies etc. are needed
|
Makefile.libtorrent-only.* are the makefiles from libtorrent, copied as it. They don't refer to Flood, and probably won't work in the current directory structure. However, they may help people know what dependencies etc. are needed
|
||||||
|
|
||||||
If you find mistakes here, please notify me on the project page, www.deluge-torrent.org. Thank you.
|
If you find mistakes here, please notify me on the project page, www.deluge-torrent.org. Thank you.
|
||||||
|
|
||||||
|
@ -18,5 +18,6 @@
|
|||||||
*
|
*
|
||||||
* NOTE:The libtorrent code is copyrighted by Arvid Norberg; see the notice in
|
* NOTE:The libtorrent code is copyrighted by Arvid Norberg; see the notice in
|
||||||
* the libtorrent files. However, to ensure no misunderstanding: the entire project
|
* the libtorrent files. However, to ensure no misunderstanding: the entire project
|
||||||
* as a whole is licenced, as mentioned above, under the GPL.
|
* as a whole is licenced, as mentioned above, under the GPL. Only laziness has
|
||||||
|
* prevented every single notice there from being changed from BSD to GPL.
|
||||||
*/
|
*/
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
=================
|
=================
|
||||||
pytorrent
|
Flood
|
||||||
=================
|
=================
|
||||||
|
|
||||||
You may compile the code with the script 'makeit'. The
|
You may compile the code with the script 'makeit'. The
|
||||||
script 'installit' will install the pytorrent_core package
|
script 'installit' will install the flood_core package
|
||||||
to the central package store, so that it can be imported inside
|
to the central package store, so that it can be imported inside
|
||||||
pytorrent.py (which is required).
|
flood.py (which is required).
|
||||||
|
|
||||||
Currently the scripts do NOT copy pytorrent.py to the central
|
Currently the scripts do NOT copy flood.py to the central
|
||||||
package store, as Deluge imports pytorrent.py by "import
|
package store, as Deluge imports flood.py by "import
|
||||||
library.pytorrent"
|
library.flood"
|
||||||
|
|
||||||
You can check whether pytorrent works by running
|
You can check whether flood works by running
|
||||||
|
|
||||||
python test.py
|
python test.py
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
Package: pytorrent
|
Package: flood
|
||||||
Version: 0.2.99-1-i386
|
Version: 0.2.99-1-i386
|
||||||
Section: base
|
Section: base
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Depends: python, libboost-filesystem1.33.1, libboost-date-time1.33.1, libboost-program-options1.33.1, libboost-regex1.33.1, libboost-thread1.33.1, libc6-dev, zlib1g-dev
|
Depends: python, libboost-filesystem1.33.1, libboost-date-time1.33.1, libboost-program-options1.33.1, libboost-regex1.33.1, libboost-thread1.33.1, libc6-dev, zlib1g-dev
|
||||||
Maintainer: A. Zakai ('Kripken') <kripkensteiner@gmail.com>
|
Maintainer: A. Zakai ('Kripken') <kripkensteiner@gmail.com>
|
||||||
Description: A Python wrapper for the (Sourceforge, not Rakshasa!) libtorrent C++ library.
|
Description: A Python module for bittorrent, based on Rasterbar's libtorrent.
|
||||||
URL: http://www.deluge-torrent.org
|
URL: http://www.deluge-torrent.org
|
||||||
|
@ -111,7 +111,7 @@ torrents_t *M_torrents = NULL;
|
|||||||
// Exception types & macro
|
// Exception types & macro
|
||||||
//------------------------
|
//------------------------
|
||||||
|
|
||||||
static PyObject *PyTorrentError = NULL;
|
static PyObject *FloodError = NULL;
|
||||||
static PyObject *InvalidEncodingError = NULL;
|
static PyObject *InvalidEncodingError = NULL;
|
||||||
static PyObject *FilesystemError = NULL;
|
static PyObject *FilesystemError = NULL;
|
||||||
static PyObject *DuplicateTorrentError = NULL;
|
static PyObject *DuplicateTorrentError = NULL;
|
||||||
@ -148,7 +148,7 @@ long get_torrent_index(torrent_handle &handle)
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
RAISE_INT(PyTorrentError, "Handle not found.");
|
RAISE_INT(FloodError, "Handle not found.");
|
||||||
}
|
}
|
||||||
|
|
||||||
long get_index_from_unique_ID(long unique_ID)
|
long get_index_from_unique_ID(long unique_ID)
|
||||||
@ -159,7 +159,7 @@ long get_index_from_unique_ID(long unique_ID)
|
|||||||
if ((*M_torrents)[i].unique_ID == unique_ID)
|
if ((*M_torrents)[i].unique_ID == unique_ID)
|
||||||
return i;
|
return i;
|
||||||
|
|
||||||
RAISE_INT(PyTorrentError, "No such unique_ID.");
|
RAISE_INT(FloodError, "No such unique_ID.");
|
||||||
}
|
}
|
||||||
|
|
||||||
long internal_add_torrent(std::string const& torrent_name,
|
long internal_add_torrent(std::string const& torrent_name,
|
||||||
@ -269,7 +269,7 @@ long count_DHT_peers(entry &state)
|
|||||||
|
|
||||||
static PyObject *torrent_pre_init(PyObject *self, PyObject *args)
|
static PyObject *torrent_pre_init(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
if (!PyArg_ParseTuple(args, "OOOOO", &PyTorrentError,
|
if (!PyArg_ParseTuple(args, "OOOOO", &FloodError,
|
||||||
&InvalidEncodingError,
|
&InvalidEncodingError,
|
||||||
&FilesystemError,
|
&FilesystemError,
|
||||||
&DuplicateTorrentError,
|
&DuplicateTorrentError,
|
||||||
@ -281,7 +281,7 @@ static PyObject *torrent_pre_init(PyObject *self, PyObject *args)
|
|||||||
|
|
||||||
static PyObject *torrent_init(PyObject *self, PyObject *args)
|
static PyObject *torrent_init(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
printf("pytorrent_core; using libtorrent %s. Compiled with NDEBUG value: %d\r\n",
|
printf("flood_core; using libtorrent %s. Compiled with NDEBUG value: %d\r\n",
|
||||||
LIBTORRENT_VERSION,
|
LIBTORRENT_VERSION,
|
||||||
NDEBUG);
|
NDEBUG);
|
||||||
|
|
||||||
@ -382,7 +382,7 @@ static PyObject *torrent_save_fastresume(PyObject *self, PyObject *args)
|
|||||||
|
|
||||||
Py_INCREF(Py_None); return Py_None;
|
Py_INCREF(Py_None); return Py_None;
|
||||||
} else
|
} else
|
||||||
RAISE_PTR(PyTorrentError, "Invalid handle or no metadata for fastresume.");
|
RAISE_PTR(FloodError, "Invalid handle or no metadata for fastresume.");
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *torrent_set_max_half_open(PyObject *self, PyObject *args)
|
static PyObject *torrent_set_max_half_open(PyObject *self, PyObject *args)
|
||||||
@ -1118,7 +1118,7 @@ static PyObject *torrent_create_torrent(PyObject *self, PyObject *args)
|
|||||||
{
|
{
|
||||||
// std::cerr << e.what() << "\n";
|
// std::cerr << e.what() << "\n";
|
||||||
// return Py_BuildValue("l", 0);
|
// return Py_BuildValue("l", 0);
|
||||||
RAISE_PTR(PyTorrentError, e.what());
|
RAISE_PTR(FloodError, e.what());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1168,7 +1168,7 @@ static PyObject *torrent_apply_IP_filter(PyObject *self, PyObject *args)
|
|||||||
// Python Module data
|
// Python Module data
|
||||||
//====================
|
//====================
|
||||||
|
|
||||||
static PyMethodDef pytorrent_core_methods[] = {
|
static PyMethodDef flood_core_methods[] = {
|
||||||
{"pre_init", torrent_pre_init, METH_VARARGS, "."},
|
{"pre_init", torrent_pre_init, METH_VARARGS, "."},
|
||||||
{"init", torrent_init, METH_VARARGS, "."},
|
{"init", torrent_init, METH_VARARGS, "."},
|
||||||
{"quit", torrent_quit, METH_VARARGS, "."},
|
{"quit", torrent_quit, METH_VARARGS, "."},
|
||||||
@ -1205,7 +1205,7 @@ static PyMethodDef pytorrent_core_methods[] = {
|
|||||||
|
|
||||||
|
|
||||||
PyMODINIT_FUNC
|
PyMODINIT_FUNC
|
||||||
initpytorrent_core(void)
|
initflood_core(void)
|
||||||
{
|
{
|
||||||
Py_InitModule("pytorrent_core", pytorrent_core_methods);
|
Py_InitModule("flood_core", flood_core_methods);
|
||||||
};
|
};
|
@ -1,6 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2006 Alon Zakai ('Kripken') <kripkensteiner@gmail.com>
|
# Copyright (C) 2006 Alon Zakai ('Kripken') <kripkensteiner@gmail.com>
|
||||||
# Copyright (C) 2006 Zach Tibbitts <zach@collegegeek.org>
|
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -17,14 +16,14 @@
|
|||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#
|
#
|
||||||
|
|
||||||
# Deluge Library, a.k.a. pytorrent, previously known as python-libtorrent:
|
# Deluge Library, a.k.a. Flood, previously known as python-libtorrent:
|
||||||
#
|
#
|
||||||
# pytorrent is a Python library for torrenting, that includes
|
# Flood is a Python library for torrenting, that includes
|
||||||
# pytorrent.py, which is Python code, and pytorrent_core, which is also a Python
|
# Flood, which is Python code, and Flood_core, which is also a Python
|
||||||
# module, but written in C++, and includes the libtorrent torrent library. Only
|
# module, but written in C++, and includes the libtorrent torrent library. Only
|
||||||
# pytorrent should be visible, and only it should be imported, in the client.
|
# Flood should be visible, and only it should be imported, in the client.
|
||||||
# pytorrent_core contains mainly libtorrent-interfacing code, and a few other things
|
# Flood_core contains mainly libtorrent-interfacing code, and a few other things
|
||||||
# that make most sense to write at that level. pytorrent.py contains all other
|
# that make most sense to write at that level. Flood contains all other
|
||||||
# torrent-system management: queueing, configuration management, persistent
|
# torrent-system management: queueing, configuration management, persistent
|
||||||
# list of torrents, etc.
|
# list of torrents, etc.
|
||||||
#
|
#
|
||||||
@ -34,10 +33,10 @@
|
|||||||
# 1. torrent_info - persistent data, like name, upload speed cap, etc.
|
# 1. torrent_info - persistent data, like name, upload speed cap, etc.
|
||||||
# 2. core_torrent_state - transient state data from the core. This may take
|
# 2. core_torrent_state - transient state data from the core. This may take
|
||||||
# time to calculate, so we do if efficiently
|
# time to calculate, so we do if efficiently
|
||||||
# 3. supp_torrent_state - supplementary torrent data, from pytorrent
|
# 3. supp_torrent_state - supplementary torrent data, from Flood
|
||||||
|
|
||||||
|
|
||||||
import pytorrent_core
|
import flood_core
|
||||||
import os, shutil
|
import os, shutil
|
||||||
import pickle
|
import pickle
|
||||||
import time
|
import time
|
||||||
@ -66,35 +65,35 @@ DEFAULT_PREFS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PREF_FUNCTIONS = {
|
PREF_FUNCTIONS = {
|
||||||
"max_uploads" : pytorrent_core.set_max_uploads,
|
"max_uploads" : flood_core.set_max_uploads,
|
||||||
"listen_on" : pytorrent_core.set_listen_on,
|
"listen_on" : flood_core.set_listen_on,
|
||||||
"max_connections" : pytorrent_core.set_max_connections,
|
"max_connections" : flood_core.set_max_connections,
|
||||||
"use_DHT" : None, # not a normal pref in that is is applied only on start
|
"use_DHT" : None, # not a normal pref in that is is applied only on start
|
||||||
"max_active_torrents" : None, # no need for a function, applied constantly
|
"max_active_torrents" : None, # no need for a function, applied constantly
|
||||||
"auto_seed_ratio" : None, # no need for a function, applied constantly
|
"auto_seed_ratio" : None, # no need for a function, applied constantly
|
||||||
"max_download_rate" : pytorrent_core.set_download_rate_limit,
|
"max_download_rate" : flood_core.set_download_rate_limit,
|
||||||
"max_upload_rate" : pytorrent_core.set_upload_rate_limit
|
"max_upload_rate" : flood_core.set_upload_rate_limit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Exceptions
|
# Exceptions
|
||||||
|
|
||||||
class PyTorrentError(Exception):
|
class FloodError(Exception):
|
||||||
def __init__(self, value):
|
def __init__(self, value):
|
||||||
self.value = value
|
self.value = value
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return repr(self.value)
|
return repr(self.value)
|
||||||
|
|
||||||
class InvalidEncodingError(PyTorrentError):
|
class InvalidEncodingError(FloodError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class FilesystemError(PyTorrentError):
|
class FilesystemError(FloodError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class DuplicateTorrentError(PyTorrentError):
|
class DuplicateTorrentError(FloodError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class InvalidTorrentError(PyTorrentError):
|
class InvalidTorrentError(FloodError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@ -154,7 +153,7 @@ class manager:
|
|||||||
os.mkdir(self.base_dir + "/" + TORRENTS_SUBDIR)
|
os.mkdir(self.base_dir + "/" + TORRENTS_SUBDIR)
|
||||||
|
|
||||||
# Pre-initialize the core's data structures
|
# Pre-initialize the core's data structures
|
||||||
pytorrent_core.pre_init(PyTorrentError,
|
flood_core.pre_init(FloodError,
|
||||||
InvalidEncodingError,
|
InvalidEncodingError,
|
||||||
FilesystemError,
|
FilesystemError,
|
||||||
DuplicateTorrentError,
|
DuplicateTorrentError,
|
||||||
@ -162,14 +161,14 @@ class manager:
|
|||||||
|
|
||||||
# Start up the core
|
# Start up the core
|
||||||
assert(len(version) == 4)
|
assert(len(version) == 4)
|
||||||
pytorrent_core.init(client_ID,
|
flood_core.init(client_ID,
|
||||||
int(version[0]),
|
int(version[0]),
|
||||||
int(version[1]),
|
int(version[1]),
|
||||||
int(version[2]),
|
int(version[2]),
|
||||||
int(version[3]),
|
int(version[3]),
|
||||||
user_agent)
|
user_agent)
|
||||||
|
|
||||||
self.constants = pytorrent_core.constants()
|
self.constants = flood_core.constants()
|
||||||
|
|
||||||
# Unique IDs are NOT in the state, since they are temporary for each session
|
# Unique IDs are NOT in the state, since they are temporary for each session
|
||||||
self.unique_IDs = {} # unique_ID -> a torrent_info object, i.e. persistent data
|
self.unique_IDs = {} # unique_ID -> a torrent_info object, i.e. persistent data
|
||||||
@ -199,9 +198,9 @@ class manager:
|
|||||||
# Apply DHT, if needed. Note that this is before any torrents are added
|
# Apply DHT, if needed. Note that this is before any torrents are added
|
||||||
if self.get_pref('use_DHT'):
|
if self.get_pref('use_DHT'):
|
||||||
if not blank_slate:
|
if not blank_slate:
|
||||||
pytorrent_core.start_DHT(self.base_dir + "/" + DHT_FILENAME)
|
flood_core.start_DHT(self.base_dir + "/" + DHT_FILENAME)
|
||||||
else:
|
else:
|
||||||
pytorrent_core.start_DHT("")
|
flood_core.start_DHT("")
|
||||||
|
|
||||||
# Unpickle the state, or create a new one
|
# Unpickle the state, or create a new one
|
||||||
if not blank_slate:
|
if not blank_slate:
|
||||||
@ -243,11 +242,11 @@ class manager:
|
|||||||
# Stop DHT, if needed
|
# Stop DHT, if needed
|
||||||
if self.get_pref('use_DHT'):
|
if self.get_pref('use_DHT'):
|
||||||
print "Stopping DHT..."
|
print "Stopping DHT..."
|
||||||
pytorrent_core.stop_DHT(self.base_dir + "/" + DHT_FILENAME)
|
flood_core.stop_DHT(self.base_dir + "/" + DHT_FILENAME)
|
||||||
|
|
||||||
# Shutdown torrent core
|
# Shutdown torrent core
|
||||||
print "Quitting the core..."
|
print "Quitting the core..."
|
||||||
pytorrent_core.quit()
|
flood_core.quit()
|
||||||
|
|
||||||
def pre_quitting(self):
|
def pre_quitting(self):
|
||||||
# Save the uploaded data from this session to the existing upload memory
|
# Save the uploaded data from this session to the existing upload memory
|
||||||
@ -268,12 +267,12 @@ class manager:
|
|||||||
self.prefs[key] = DEFAULT_PREFS[key]
|
self.prefs[key] = DEFAULT_PREFS[key]
|
||||||
return self.prefs[key]
|
return self.prefs[key]
|
||||||
else:
|
else:
|
||||||
raise PyTorrentError("Asked for a pref that doesn't exist: " + key)
|
raise FloodError("Asked for a pref that doesn't exist: " + key)
|
||||||
|
|
||||||
def set_pref(self, key, value):
|
def set_pref(self, key, value):
|
||||||
# Make sure this is a valid key
|
# Make sure this is a valid key
|
||||||
if key not in DEFAULT_PREFS.keys():
|
if key not in DEFAULT_PREFS.keys():
|
||||||
raise PyTorrentError("Asked to change a pref that isn't valid: " + key)
|
raise FloodError("Asked to change a pref that isn't valid: " + key)
|
||||||
|
|
||||||
self.prefs[key] = value
|
self.prefs[key] = value
|
||||||
|
|
||||||
@ -290,7 +289,7 @@ class manager:
|
|||||||
def remove_torrent(self, unique_ID, data_also):
|
def remove_torrent(self, unique_ID, data_also):
|
||||||
# Save some data before we remove the torrent, needed later in this func
|
# Save some data before we remove the torrent, needed later in this func
|
||||||
temp = self.unique_IDs[unique_ID]
|
temp = self.unique_IDs[unique_ID]
|
||||||
temp_fileinfo = pytorrent_core.get_fileinfo(unique_ID)
|
temp_fileinfo = flood_core.get_fileinfo(unique_ID)
|
||||||
|
|
||||||
self.remove_torrent_ns(unique_ID)
|
self.remove_torrent_ns(unique_ID)
|
||||||
self.sync()
|
self.sync()
|
||||||
@ -317,18 +316,18 @@ class manager:
|
|||||||
# A separate function, because people may want to call it from time to time
|
# A separate function, because people may want to call it from time to time
|
||||||
def save_fastresume_data(self):
|
def save_fastresume_data(self):
|
||||||
for unique_ID in self.unique_IDs:
|
for unique_ID in self.unique_IDs:
|
||||||
pytorrent_core.save_fastresume(unique_ID, self.unique_IDs[unique_ID].filename)
|
flood_core.save_fastresume(unique_ID, self.unique_IDs[unique_ID].filename)
|
||||||
|
|
||||||
# State retrieval functions
|
# State retrieval functions
|
||||||
|
|
||||||
def get_state(self):
|
def get_state(self):
|
||||||
ret = pytorrent_core.get_session_info()
|
ret = flood_core.get_session_info()
|
||||||
|
|
||||||
# Get additional data from our level
|
# Get additional data from our level
|
||||||
ret['is_listening'] = pytorrent_core.is_listening()
|
ret['is_listening'] = flood_core.is_listening()
|
||||||
ret['port'] = pytorrent_core.listening_port()
|
ret['port'] = flood_core.listening_port()
|
||||||
if self.get_pref('use_DHT'):
|
if self.get_pref('use_DHT'):
|
||||||
ret['DHT_nodes'] = pytorrent_core.get_DHT_info()
|
ret['DHT_nodes'] = flood_core.get_DHT_info()
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
@ -336,7 +335,7 @@ class manager:
|
|||||||
def get_torrent_state(self, unique_ID, full=False):
|
def get_torrent_state(self, unique_ID, full=False):
|
||||||
ret = self.get_core_torrent_state(unique_ID, True).copy()
|
ret = self.get_core_torrent_state(unique_ID, True).copy()
|
||||||
|
|
||||||
# Add the pytorrent-level things to the pytorrent_core data
|
# Add the flood-level things to the flood_core data
|
||||||
if self.get_supp_torrent_state(unique_ID) is not None:
|
if self.get_supp_torrent_state(unique_ID) is not None:
|
||||||
ret.update(self.get_supp_torrent_state(unique_ID))
|
ret.update(self.get_supp_torrent_state(unique_ID))
|
||||||
|
|
||||||
@ -402,10 +401,10 @@ class manager:
|
|||||||
if (index < self.state.max_active_torrents or self.state_max_active_torrents == -1) \
|
if (index < self.state.max_active_torrents or self.state_max_active_torrents == -1) \
|
||||||
and self.get_core_torrent_state(unique_ID, efficient)['is_paused'] \
|
and self.get_core_torrent_state(unique_ID, efficient)['is_paused'] \
|
||||||
and not self.is_user_paused(unique_ID):
|
and not self.is_user_paused(unique_ID):
|
||||||
pytorrent_core.resume(unique_ID)
|
flood_core.resume(unique_ID)
|
||||||
elif not self.get_core_torrent_state(unique_ID, efficient)['is_paused'] and \
|
elif not self.get_core_torrent_state(unique_ID, efficient)['is_paused'] and \
|
||||||
(index >= self.state.max_active_torrents or self.is_user_paused(unique_ID)):
|
(index >= self.state.max_active_torrents or self.is_user_paused(unique_ID)):
|
||||||
pytorrent_core.pause(unique_ID)
|
flood_core.pause(unique_ID)
|
||||||
|
|
||||||
# Event handling
|
# Event handling
|
||||||
|
|
||||||
@ -414,7 +413,7 @@ class manager:
|
|||||||
# wants to do something - show messages, for example
|
# wants to do something - show messages, for example
|
||||||
ret = []
|
ret = []
|
||||||
|
|
||||||
event = pytorrent_core.pop_event()
|
event = flood_core.pop_event()
|
||||||
|
|
||||||
while event is not None:
|
while event is not None:
|
||||||
# print "EVENT: ", event
|
# print "EVENT: ", event
|
||||||
@ -447,7 +446,7 @@ class manager:
|
|||||||
"tracker_messages",
|
"tracker_messages",
|
||||||
new)
|
new)
|
||||||
|
|
||||||
event = pytorrent_core.pop_event()
|
event = flood_core.pop_event()
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
@ -458,7 +457,7 @@ class manager:
|
|||||||
|
|
||||||
self.unique_IDs[unique_ID].file_filter = file_filter[:]
|
self.unique_IDs[unique_ID].file_filter = file_filter[:]
|
||||||
|
|
||||||
pytorrent_core.set_filter_out(file_filter)
|
flood_core.set_filter_out(file_filter)
|
||||||
|
|
||||||
def get_file_filter(self, unique_ID):
|
def get_file_filter(self, unique_ID):
|
||||||
try:
|
try:
|
||||||
@ -484,7 +483,7 @@ class manager:
|
|||||||
return self.unique_IDs[unique_ID].user_paused
|
return self.unique_IDs[unique_ID].user_paused
|
||||||
|
|
||||||
def get_num_torrents(self):
|
def get_num_torrents(self):
|
||||||
return pytorrent_core.get_num_torrents()
|
return flood_core.get_num_torrents()
|
||||||
|
|
||||||
def get_unique_IDs(self):
|
def get_unique_IDs(self):
|
||||||
return self.unique_IDs.keys()
|
return self.unique_IDs.keys()
|
||||||
@ -497,7 +496,7 @@ class manager:
|
|||||||
# Efficient: use a saved state, if it hasn't expired yet
|
# Efficient: use a saved state, if it hasn't expired yet
|
||||||
def get_core_torrent_state(self, unique_ID, efficiently=True):
|
def get_core_torrent_state(self, unique_ID, efficiently=True):
|
||||||
if unique_ID not in self.saved_core_torrent_states.keys():
|
if unique_ID not in self.saved_core_torrent_states.keys():
|
||||||
self.saved_core_torrent_states[unique_ID] = cached_data(pytorrent_core.get_torrent_state,
|
self.saved_core_torrent_states[unique_ID] = cached_data(flood_core.get_torrent_state,
|
||||||
unique_ID)
|
unique_ID)
|
||||||
|
|
||||||
return self.saved_core_torrent_states[unique_ID].get(efficiently)
|
return self.saved_core_torrent_states[unique_ID].get(efficiently)
|
||||||
@ -519,7 +518,7 @@ class manager:
|
|||||||
|
|
||||||
def get_core_torrent_peer_info(self, unique_ID, efficiently=True):
|
def get_core_torrent_peer_info(self, unique_ID, efficiently=True):
|
||||||
if unique_ID not in self.saved_torrent_peer_infos.keys():
|
if unique_ID not in self.saved_torrent_peer_infos.keys():
|
||||||
self.saved_torrent_peer_infos[unique_ID] = cached_data(pytorrent_core.get_peer_info,
|
self.saved_torrent_peer_infos[unique_ID] = cached_data(flood_core.get_peer_info,
|
||||||
unique_ID)
|
unique_ID)
|
||||||
|
|
||||||
return self.saved_torrent_peer_infos[unique_ID].get(efficiently)
|
return self.saved_torrent_peer_infos[unique_ID].get(efficiently)
|
||||||
@ -531,7 +530,7 @@ class manager:
|
|||||||
(temp, filename_short) = os.path.split(filename)
|
(temp, filename_short) = os.path.split(filename)
|
||||||
|
|
||||||
if filename_short in os.listdir(self.base_dir + "/" + TORRENTS_SUBDIR):
|
if filename_short in os.listdir(self.base_dir + "/" + TORRENTS_SUBDIR):
|
||||||
raise PyTorrentError("Duplicate Torrent, it appears: " + filename_short)
|
raise FloodError("Duplicate Torrent, it appears: " + filename_short)
|
||||||
|
|
||||||
full_new_name = self.base_dir + "/" + TORRENTS_SUBDIR + "/" + filename_short
|
full_new_name = self.base_dir + "/" + TORRENTS_SUBDIR + "/" + filename_short
|
||||||
|
|
||||||
@ -557,7 +556,7 @@ class manager:
|
|||||||
for torrent in self.state.torrents:
|
for torrent in self.state.torrents:
|
||||||
if torrent not in torrents_with_unique_ID:
|
if torrent not in torrents_with_unique_ID:
|
||||||
# print "Adding torrent to core:", torrent.filename, torrent.save_dir, torrent.compact
|
# print "Adding torrent to core:", torrent.filename, torrent.save_dir, torrent.compact
|
||||||
unique_ID = pytorrent_core.add_torrent(torrent.filename,
|
unique_ID = flood_core.add_torrent(torrent.filename,
|
||||||
torrent.save_dir,
|
torrent.save_dir,
|
||||||
torrent.compact)
|
torrent.compact)
|
||||||
# print "Got unique ID:", unique_ID
|
# print "Got unique ID:", unique_ID
|
||||||
@ -568,7 +567,7 @@ class manager:
|
|||||||
to_delete = []
|
to_delete = []
|
||||||
for torrent in self.state.torrents:
|
for torrent in self.state.torrents:
|
||||||
if torrent.delete_me:
|
if torrent.delete_me:
|
||||||
pytorrent_core.remove_torrent(torrent.unique_ID, torrent.filename)
|
flood_core.remove_torrent(torrent.unique_ID, torrent.filename)
|
||||||
to_delete.append(torrent.unique_ID)
|
to_delete.append(torrent.unique_ID)
|
||||||
|
|
||||||
for unique_ID in to_delete:
|
for unique_ID in to_delete:
|
||||||
@ -583,7 +582,7 @@ class manager:
|
|||||||
|
|
||||||
assert(len(self.unique_IDs) == len(self.state.torrents))
|
assert(len(self.unique_IDs) == len(self.state.torrents))
|
||||||
assert(len(self.unique_IDs) == len(self.state.queue))
|
assert(len(self.unique_IDs) == len(self.state.queue))
|
||||||
assert(len(self.unique_IDs) == pytorrent_core.get_num_torrents())
|
assert(len(self.unique_IDs) == flood_core.get_num_torrents())
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
@ -30,9 +30,9 @@ import platform
|
|||||||
|
|
||||||
pythonVersion = platform.python_version()[0:3]
|
pythonVersion = platform.python_version()[0:3]
|
||||||
|
|
||||||
print "========================================="
|
print "====================================="
|
||||||
print "Creating pytorrent_core for Python " + pythonVersion
|
print "Creating flood_core for Python " + pythonVersion
|
||||||
print "========================================="
|
print "====================================="
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ pythonVersion = platform.python_version()[0:3]
|
|||||||
|
|
||||||
from distutils.core import setup, Extension
|
from distutils.core import setup, Extension
|
||||||
|
|
||||||
module1 = Extension('pytorrent_core',
|
module1 = Extension('flood_core',
|
||||||
include_dirs = ['./include', './include/libtorrent',
|
include_dirs = ['./include', './include/libtorrent',
|
||||||
'/usr/include/python' + pythonVersion],
|
'/usr/include/python' + pythonVersion],
|
||||||
libraries = ['boost_filesystem', 'boost_date_time',
|
libraries = ['boost_filesystem', 'boost_date_time',
|
||||||
@ -44,7 +44,7 @@ module1 = Extension('pytorrent_core',
|
|||||||
'cpp/peer_connection.cpp',
|
'cpp/peer_connection.cpp',
|
||||||
'cpp/piece_picker.cpp',
|
'cpp/piece_picker.cpp',
|
||||||
'cpp/policy.cpp',
|
'cpp/policy.cpp',
|
||||||
'cpp/pytorrent_core.cpp',
|
'cpp/flood_core.cpp',
|
||||||
'cpp/session.cpp',
|
'cpp/session.cpp',
|
||||||
'cpp/session_impl.cpp',
|
'cpp/session_impl.cpp',
|
||||||
'cpp/sha1.cpp',
|
'cpp/sha1.cpp',
|
||||||
@ -66,9 +66,9 @@ module1 = Extension('pytorrent_core',
|
|||||||
'cpp/kademlia/rpc_manager.cpp',
|
'cpp/kademlia/rpc_manager.cpp',
|
||||||
'cpp/kademlia/traversal_algorithm.cpp'])
|
'cpp/kademlia/traversal_algorithm.cpp'])
|
||||||
|
|
||||||
setup(name = 'pytorrent_core',
|
setup(name = 'flood_core',
|
||||||
version = '0.5.0',
|
version = '0.5.0',
|
||||||
description = 'A module for the bittorrent protocol. Built using (Sourgeforge, not Rakshasha) libtorrent.',
|
description = "A module for the bittorrent protocol. Built using Rasterbar's libtorrent.",
|
||||||
author="Alon Zakai ('Kripken'), Zach Tibbitts",
|
author="Alon Zakai ('Kripken'), Zach Tibbitts",
|
||||||
author_email="kripkensteiner@gmail.com",
|
author_email="kripkensteiner@gmail.com",
|
||||||
url="http://www.deluge-torrent.org",
|
url="http://www.deluge-torrent.org",
|
||||||
|
@ -9,11 +9,11 @@
|
|||||||
#*/
|
#*/
|
||||||
|
|
||||||
|
|
||||||
import pytorrent
|
import flood
|
||||||
from time import sleep
|
from time import sleep
|
||||||
import os
|
import os
|
||||||
|
|
||||||
manager = pytorrent.manager("PT", "0500", "pytorrent - testing only",
|
manager = flood.manager("FL", "0500", "flood - testing only",
|
||||||
os.path.expanduser("~") + "/Temp")# blank_slate=True)
|
os.path.expanduser("~") + "/Temp")# blank_slate=True)
|
||||||
|
|
||||||
#manager.set_pref('max_upload_rate', 6*1024)
|
#manager.set_pref('max_upload_rate', 6*1024)
|
||||||
|
@ -22,7 +22,7 @@ import time
|
|||||||
import BaseHTTPServer
|
import BaseHTTPServer
|
||||||
import sys, os
|
import sys, os
|
||||||
|
|
||||||
import pytorrent
|
import flood
|
||||||
|
|
||||||
|
|
||||||
# Constants
|
# Constants
|
||||||
@ -38,7 +38,7 @@ class WebUICore:
|
|||||||
self.running = False
|
self.running = False
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
self.manager = pytorrent.manager("DE", "0511", "Deluge WebUI",
|
self.manager = flood.manager("DE", "0511", "Deluge WebUI",
|
||||||
os.path.expanduser("~") + "/Temp")#, blank_slate=True)
|
os.path.expanduser("~") + "/Temp")#, blank_slate=True)
|
||||||
self.running = True
|
self.running = True
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user