mirror of
				https://github.com/KevinMidboe/delugeClient.git
				synced 2025-10-29 12:00:13 +00:00 
			
		
		
		
	Compare commits
	
		
			6 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 57b1b4e1f2 | |||
| fada382a32 | |||
| 8d943cb1ad | |||
| bd516f34d8 | |||
| cfe14dd1ba | |||
| 5e39ecb8bc | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,3 +1,5 @@
 | 
			
		||||
deluge_cli.log
 | 
			
		||||
 | 
			
		||||
# Byte-compiled / optimized / DLL files
 | 
			
		||||
__pycache__/
 | 
			
		||||
*.py[cod]
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ Usage:
 | 
			
		||||
   deluge_cli ls [--downloading | --seeding | --paused]
 | 
			
		||||
   deluge_cli toggle TORRENT
 | 
			
		||||
   deluge_cli progress
 | 
			
		||||
   deluge_cli rm NAME [--debug | --warning | --error]
 | 
			
		||||
   deluge_cli rm NAME [--destroy] [--debug | --warning | --error]
 | 
			
		||||
   deluge_cli (-h | --help)
 | 
			
		||||
   deluge_cli --version
 | 
			
		||||
 | 
			
		||||
@@ -31,7 +31,6 @@ import os
 | 
			
		||||
import sys
 | 
			
		||||
import re
 | 
			
		||||
import signal
 | 
			
		||||
import json
 | 
			
		||||
import socket
 | 
			
		||||
import logging
 | 
			
		||||
import logging.config
 | 
			
		||||
@@ -149,9 +148,9 @@ class Deluge(object):
 | 
			
		||||
      else:
 | 
			
		||||
         response = self.client.call('core.pause_torrent', [id])
 | 
			
		||||
      
 | 
			
		||||
      return response
 | 
			
		||||
      print('Response:', response)
 | 
			
		||||
 | 
			
		||||
   def remove(self, name):
 | 
			
		||||
   def remove(self, name, destroy=False):
 | 
			
		||||
      matches = list(filter(lambda t: t.name == name, self.get_all()))
 | 
			
		||||
      logger.info('Matches for {}: {}'.format(name, matches))
 | 
			
		||||
      
 | 
			
		||||
@@ -159,12 +158,11 @@ class Deluge(object):
 | 
			
		||||
         raise ValueError('Multiple files found matching key. Unable to remove.')
 | 
			
		||||
      elif (len(matches) == 1):
 | 
			
		||||
         torrent = matches[0]
 | 
			
		||||
         response = self.client.call('core.remove_torrent', torrent.key, False)
 | 
			
		||||
         response = self.client.call('core.remove_torrent', torrent.key, destroy)
 | 
			
		||||
         logger.info('Response: {}'.format(str(response)))
 | 
			
		||||
 | 
			
		||||
         if (response == False):
 | 
			
		||||
            raise AttributeError('Unable to remove torrent.')
 | 
			
		||||
            
 | 
			
		||||
         return response
 | 
			
		||||
      else:
 | 
			
		||||
         logger.error('ERROR. No torrent found with that name.')
 | 
			
		||||
@@ -241,13 +239,13 @@ def signal_handler(signal, frame):
 | 
			
		||||
   logger.info('\nGood bye!')
 | 
			
		||||
   sys.exit(0)
 | 
			
		||||
 | 
			
		||||
def main(arg=None):
 | 
			
		||||
def main():
 | 
			
		||||
   """
 | 
			
		||||
   Main function, parse the input
 | 
			
		||||
   """
 | 
			
		||||
   signal.signal(signal.SIGINT, signal_handler)
 | 
			
		||||
 | 
			
		||||
   arguments = docopt(__doc__, argv=arg, version='1')
 | 
			
		||||
   arguments = docopt(__doc__, version='1')
 | 
			
		||||
 | 
			
		||||
   # Set logging level for streamHandler
 | 
			
		||||
   if arguments['--debug']:
 | 
			
		||||
@@ -274,45 +272,37 @@ def main(arg=None):
 | 
			
		||||
      logger.info('Add cmd selected with link {}'.format(magnet))
 | 
			
		||||
      response = deluge.add(magnet)
 | 
			
		||||
      print('Add response: ', response)
 | 
			
		||||
      return response
 | 
			
		||||
 | 
			
		||||
   elif arguments['search']:
 | 
			
		||||
      logger.info('Search cmd selected for query: {}'.format(query))
 | 
			
		||||
      response = deluge.search(query)
 | 
			
		||||
      [ pprint(t.toJSON()) for t in response ]
 | 
			
		||||
      return response
 | 
			
		||||
 | 
			
		||||
   elif arguments['progress']:
 | 
			
		||||
      logger.info('Progress cmd selected.')
 | 
			
		||||
      response = deluge.progress()
 | 
			
		||||
      print(response)
 | 
			
		||||
      # [ pprint(t.toJSON()) for t in response ]
 | 
			
		||||
      return response
 | 
			
		||||
      pprint(deluge.progress())
 | 
			
		||||
      exit(0)
 | 
			
		||||
      [ pprint(t.toJSON()) for t in deluge.progress() ]
 | 
			
		||||
 | 
			
		||||
   elif arguments['get']:
 | 
			
		||||
      logger.info('Get cmd selected for id: {}'.format(_id))
 | 
			
		||||
      response = deluge.get(_id)
 | 
			
		||||
      pprint(response.toJSON())
 | 
			
		||||
      return response
 | 
			
		||||
 | 
			
		||||
   elif arguments['ls']:
 | 
			
		||||
      logger.info('List cmd selected')
 | 
			
		||||
      response = deluge.get_all(_filter=_filter)
 | 
			
		||||
      response = [t.toJSON() for t in response]
 | 
			
		||||
      # pprint(response)
 | 
			
		||||
      return json.dumps(response)
 | 
			
		||||
      [ pprint(t.toJSON()) for t in deluge.get_all(_filter=_filter) ]
 | 
			
		||||
 | 
			
		||||
   elif arguments['toggle']:
 | 
			
		||||
      logger.info('Toggling id: {}'.format(_id))
 | 
			
		||||
      response = deluge.togglePaused(_id)
 | 
			
		||||
      print('toggle response: ', response)
 | 
			
		||||
      return response
 | 
			
		||||
      deluge.togglePaused(_id)
 | 
			
		||||
 | 
			
		||||
   elif arguments['rm']:
 | 
			
		||||
      logger.info('Remove by name: {}'.format(name))
 | 
			
		||||
      response = deluge.remove(name)
 | 
			
		||||
      print('rm response: ', response)
 | 
			
		||||
      return response
 | 
			
		||||
      destroy = arguments['--destroy']
 | 
			
		||||
      logger.info('Remove by name: {}.'.format(name))
 | 
			
		||||
      if destroy:
 | 
			
		||||
         logger.info('Destroy set, removing files')
 | 
			
		||||
      deluge.remove(name, destroy)
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
   main()
 | 
			
		||||
 
 | 
			
		||||
@@ -2,9 +2,6 @@ import asyncio
 | 
			
		||||
import datetime
 | 
			
		||||
import random
 | 
			
		||||
import websockets
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
import deluge_cli
 | 
			
		||||
 | 
			
		||||
async def hello(websocket, path):
 | 
			
		||||
	name = await websocket.recv()
 | 
			
		||||
@@ -22,16 +19,9 @@ async def time(websocket, path):
 | 
			
		||||
		await asyncio.sleep(1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
async def deluge(websocket, path):
 | 
			
		||||
	while True:
 | 
			
		||||
		downloading = deluge_cli.main(['progress'])
 | 
			
		||||
		await websocket.send(json.dumps(downloading))
 | 
			
		||||
 | 
			
		||||
		await asyncio.sleep(1)
 | 
			
		||||
 | 
			
		||||
serve_hello = websockets.serve(hello, '0.0.0.0', 8765)
 | 
			
		||||
serve_deluge = websockets.serve(deluge, '0.0.0.0', 5678)
 | 
			
		||||
serve_time = websockets.serve(time, '0.0.0.0', 5678)
 | 
			
		||||
 | 
			
		||||
asyncio.get_event_loop().run_until_complete(serve_hello)
 | 
			
		||||
asyncio.get_event_loop().run_until_complete(serve_deluge)
 | 
			
		||||
asyncio.get_event_loop().run_until_complete(serve_time)
 | 
			
		||||
asyncio.get_event_loop().run_forever()
 | 
			
		||||
 
 | 
			
		||||
@@ -2,11 +2,10 @@ asn1crypto==0.24.0
 | 
			
		||||
bcrypt==3.1.4
 | 
			
		||||
cffi==1.11.5
 | 
			
		||||
colored==1.3.5
 | 
			
		||||
cryptography==2.3
 | 
			
		||||
cryptography==2.5
 | 
			
		||||
deluge-client==1.6.0
 | 
			
		||||
docopt==0.6.2
 | 
			
		||||
idna==2.7
 | 
			
		||||
paramiko==2.4.1
 | 
			
		||||
pyasn1==0.4.4
 | 
			
		||||
pycparser==2.18
 | 
			
		||||
PyNaCl==1.2.1
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								utils.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								utils.py
									
									
									
									
									
								
							@@ -35,7 +35,7 @@ class ColorizeFilter(logging.Filter):
 | 
			
		||||
      return True
 | 
			
		||||
 | 
			
		||||
def convert(data):
 | 
			
		||||
    if isinstance(data, bytes):  return data.decode('ascii')
 | 
			
		||||
    if isinstance(data, bytes):  return data.decode('utf-8')
 | 
			
		||||
    if isinstance(data, dict):   return dict(map(convert, data.items()))
 | 
			
		||||
    if isinstance(data, tuple):  return map(convert, data)
 | 
			
		||||
    json_data = json.dumps(data)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user