mirror of
https://github.com/rembo10/headphones.git
synced 2026-09-09 16:22:52 +01:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e879af6b0e | ||
|
|
70eadcd330 | ||
|
|
ae9c1042cf | ||
|
|
d51cdca1d8 | ||
|
|
327e4785c5 | ||
|
|
2f9190dc34 | ||
|
|
88b277ea25 | ||
|
|
d4fae1dd35 |
+27
-31
@@ -28,8 +28,6 @@ import headphones
|
||||
|
||||
from headphones import logger
|
||||
|
||||
db_lock = threading.Lock()
|
||||
|
||||
def dbFilename(filename="headphones.db"):
|
||||
|
||||
return os.path.join(headphones.DATA_DIR, filename)
|
||||
@@ -56,38 +54,36 @@ class DBConnection:
|
||||
self.connection.row_factory = sqlite3.Row
|
||||
|
||||
def action(self, query, args=None):
|
||||
|
||||
with db_lock:
|
||||
|
||||
if query == None:
|
||||
return
|
||||
|
||||
sqlResult = None
|
||||
attempt = 0
|
||||
if query == None:
|
||||
return
|
||||
|
||||
while attempt < 5:
|
||||
try:
|
||||
if args == None:
|
||||
#logger.debug(self.filename+": "+query)
|
||||
sqlResult = self.connection.execute(query)
|
||||
else:
|
||||
#logger.debug(self.filename+": "+query+" with args "+str(args))
|
||||
sqlResult = self.connection.execute(query, args)
|
||||
self.connection.commit()
|
||||
break
|
||||
except sqlite3.OperationalError, e:
|
||||
if "unable to open database file" in e.message or "database is locked" in e.message:
|
||||
logger.warn('Database Error: %s' % e)
|
||||
attempt += 1
|
||||
time.sleep(1)
|
||||
else:
|
||||
logger.error('Database error: %s' % e)
|
||||
raise
|
||||
except sqlite3.DatabaseError, e:
|
||||
logger.error('Fatal Error executing %s :: %s' % (query, e))
|
||||
sqlResult = None
|
||||
attempt = 0
|
||||
|
||||
while attempt < 5:
|
||||
try:
|
||||
if args == None:
|
||||
#logger.debug(self.filename+": "+query)
|
||||
sqlResult = self.connection.execute(query)
|
||||
else:
|
||||
#logger.debug(self.filename+": "+query+" with args "+str(args))
|
||||
sqlResult = self.connection.execute(query, args)
|
||||
self.connection.commit()
|
||||
break
|
||||
except sqlite3.OperationalError, e:
|
||||
if "unable to open database file" in e.message or "database is locked" in e.message:
|
||||
logger.warn('Database Error: %s' % e)
|
||||
attempt += 1
|
||||
time.sleep(1)
|
||||
else:
|
||||
logger.error('Database error: %s' % e)
|
||||
raise
|
||||
|
||||
return sqlResult
|
||||
except sqlite3.DatabaseError, e:
|
||||
logger.error('Fatal Error executing %s :: %s' % (query, e))
|
||||
raise
|
||||
|
||||
return sqlResult
|
||||
|
||||
def select(self, query, args=None):
|
||||
|
||||
|
||||
@@ -123,8 +123,8 @@ class Rutracker():
|
||||
urls.append(url)
|
||||
|
||||
# Seeders
|
||||
|
||||
for link in soup.find_all('td', attrs={'class' : 'row4 seedmed'}):
|
||||
|
||||
for link in soup.find_all('b', attrs={'class' : 'seedmed'}):
|
||||
seeder = link.get_text()
|
||||
seeders.append(seeder)
|
||||
|
||||
|
||||
@@ -85,11 +85,23 @@ def torrentAction(method, arguments):
|
||||
if host.endswith('/'):
|
||||
host = host[:-1]
|
||||
|
||||
# Either the host ends with a port, or some directory, or rpc
|
||||
# If it ends with /rpc we don't have to do anything
|
||||
# If it ends with a port we add /transmission/rpc
|
||||
# anything else we just add rpc
|
||||
if not host.endswith('/rpc'):
|
||||
if host.endswith(':\d{2,6}'):
|
||||
host = host + "/transmission/rpc"
|
||||
# Check if it ends in a port number
|
||||
i = host.rfind(':')
|
||||
if i >= 0:
|
||||
possible_port = host[i+1:]
|
||||
try:
|
||||
port = int(possible_port)
|
||||
host = host + "/transmission/rpc"
|
||||
except ValueError:
|
||||
host = host + "/rpc"
|
||||
else:
|
||||
host = host + "/rpc"
|
||||
logger.error('Transmission port missing')
|
||||
return
|
||||
|
||||
request = urllib2.Request(host)
|
||||
if username and password:
|
||||
|
||||
Reference in New Issue
Block a user