def main(): connection = DAAPClient() if len(sys.argv) > 1: host = sys.argv[1] else: host = "localhost" if len(sys.argv) > 2: port = sys.argv[2] else: port = 3689 logging.basicConfig( level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s' ) try: # do everything in a big try, so we can disconnect at the end connection.connect(host, port) # auth isn't supported yet. Just log in session = connection.login() library = session.library() log.debug("Library name is `%r`", library.name) tracks = library.tracks() # demo - save the first track to disk # print("Saving %s by %s to disk as 'track.mp3'"%(tracks[0].name, tracks[0].artist)) # tracks[0].save("track.mp3") if len(tracks) > 0: tracks[0].atom.printTree() else: print('No Tracks') session.update() print(session.revision) finally: # this here, so we logout even if there's an error somewhere, # or itunes will eventually refuse more connections. print("--------------") try: session.logout() except Exception: pass
def main(): connection = DAAPClient() if len(sys.argv) > 1: host = sys.argv[1] else: host = "localhost" if len(sys.argv) > 2: port = sys.argv[2] else: port = 3689 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s') try: # do everything in a big try, so we can disconnect at the end connection.connect(host, port) # auth isn't supported yet. Just log in session = connection.login() library = session.library() log.debug("Library name is `%r`", library.name) tracks = library.tracks() # demo - save the first track to disk # print("Saving %s by %s to disk as 'track.mp3'"%(tracks[0].name, tracks[0].artist)) # tracks[0].save("track.mp3") if len(tracks) > 0: tracks[0].atom.printTree() else: print('No Tracks') session.update() print(session.revision) finally: # this here, so we logout even if there's an error somewhere, # or itunes will eventually refuse more connections. print("--------------") try: session.logout() except Exception: pass
def connect(self, password=None): """ Connect, login, and retrieve the track list. """ try: client = DAAPClient() if AUTH and password: client.connect(self.server, self.port, password, self.user_agent) else: client.connect(self.server, self.port, None, self.user_agent) self.session = client.login() self.connected = True # except DAAPError: except Exception: logger.exception('failed to connect to ({0},{1})'.format( self.server, self.port)) self.auth = True self.connected = False raise
def connect(self, password=None): """ Connect, login, and retrieve the track list. """ try: client = DAAPClient() if AUTH and password: client.connect(self.server, self.port, password, self.user_agent) else: client.connect(self.server, self.port, None, self.user_agent) self.session = client.login() self.connected = True # except DAAPError: except Exception: logger.exception( 'failed to connect to ({0},{1})'.format(self.server, self.port) ) self.auth = True self.connected = False raise
# # Check For python-avahi, we can work without # avahi, but wont be able to discover shares. # try: import avahi AVAHI = True except ImportError: logger.warning('avahi not installed, can\'t auto-discover servers') AVAHI = False # detect authoriztion support in python-daap try: tmp = DAAPClient() tmp.connect("spam", "eggs", "sausage") # dummy login del tmp except TypeError: AUTH = False except Exception: AUTH = True class AttrDict(dict): def __getattr__(self, name): return self[name] # helper function to parse avahi info into a list of tuples (for dict()) parse = functools.partial(