def UploadToAnyContainer(self, display_name, filename): upload_id = self.next_upload_id self.next_upload_id += 1 path = '{0}/any{1:03}'.format(self.__dbus_object_path__, upload_id) size = os.stat(filename).st_size upload = { 'DisplayName': display_name, 'Parent': self.__dbus_object_path__, 'Path': path, 'Type': 'item.unclassified', 'UploadFilename': filename, 'UploadId': upload_id, 'UploadSize': size, } self.items.append(upload) self.AddObject(path, 'org.gnome.UPnP.MediaObject2', {}, []) obj = get_object(path) obj.items = self.items obj.AddTemplate('dleynamediaobject.py', filter_properties(upload, MEDIA_OBJECT2_PROPERTIES)) device = get_object(find_root(self.items, self.__dbus_object_path__)['Path']) def upload_completed(): device.EmitSignal(MAIN_IFACE, 'UploadUpdate', 'ustt', (upload_id, 'COMPLETED', size, size)) self.queue_change ({ 'ChangeType': CHANGE_TYPES['Add'], 'Path': path }) GLib.idle_add(upload_completed) return (upload_id, path)
def Upload(self, display_name, filename): upload_id = self.next_upload_id self.next_upload_id += 1 path = "{0}/up{1:03}".format(self.__dbus_object_path__, upload_id) size = os.stat(filename).st_size upload = { 'DisplayName': display_name, 'Parent': self.__dbus_object_path__, 'Path': path, 'UploadFilename': filename, 'UploadId': upload_id, 'UploadSize': size, } self.items.append(upload) self.AddObject(path, 'org.gnome.UPnP.MediaObject2', {}, []) obj = get_object(path) obj.items = self.items obj.AddTemplate("dleynamediaobject.py", filter_properties(upload, MEDIA_OBJECT2_PROPERTIES)) device = get_object( find_root(self.items, self.__dbus_object_path__)['Path']) def upload_completed(): device.EmitSignal(MEDIA_DEVICE_IFACE, 'UploadUpdate', 'ustt', (upload_id, 'COMPLETED', size, size)) device.queue_change({'ChangeType': CHANGE_TYPES['Add'], 'Path': path}) GLib.idle_add(upload_completed) item = find_item(self.items, self.__dbus_object_path__) item['ChildCount'] += 1 return (upload_id, path)
def CreateContainer(self, display_name, container_type, child_types): upload_id = self.next_upload_id self.next_upload_id += 1 path = "{0}/up{1:03}".format(self.__dbus_object_path__, upload_id) upload = { 'ChildCount': dbus.UInt32(0), 'DisplayName': display_name, 'Parent': self.__dbus_object_path__, 'Path': path, 'Type': 'container', 'TypeEx': container_type, } self.items.append(upload) self.AddObject(path, 'org.gnome.UPnP.MediaObject2', {}, []) obj = get_object(path) obj.items = self.items obj.AddTemplate("dleynamediaobject.py", filter_properties(upload, MEDIA_OBJECT2_PROPERTIES)) obj.AddTemplate("dleynamediacontainer.py", filter_properties(upload, MEDIA_CONTAINER2_PROPERTIES)) device = get_object( find_root(self.items, self.__dbus_object_path__)['Path']) device.queue_change({'ChangeType': CHANGE_TYPES['Add'], 'Path': path}) return (path)
def CreateContainer(self, display_name, container_type, child_types): upload_id = self.next_upload_id self.next_upload_id += 1 path = "{0}/up{1:03}".format(self.__dbus_object_path__, upload_id) upload = { 'ChildCount': dbus.UInt32(0), 'DisplayName': display_name, 'Parent': self.__dbus_object_path__, 'Path': path, 'Type': 'container', 'TypeEx': container_type, } self.items.append(upload) self.AddObject(path, 'org.gnome.UPnP.MediaObject2', {}, []) obj = get_object(path) obj.items = self.items obj.AddTemplate("dleynamediaobject.py", filter_properties(upload, MEDIA_OBJECT2_PROPERTIES)) obj.AddTemplate("dleynamediacontainer.py", filter_properties(upload, MEDIA_CONTAINER2_PROPERTIES)) device = get_object(find_root(self.items, self.__dbus_object_path__)['Path']) device.queue_change ({ 'ChangeType': CHANGE_TYPES['Add'], 'Path': path }) return (path)
def Delete(self): device = get_object(find_root(self.items, self.__dbus_object_path__)['Path']) device.queue_change ({ 'ChangeType': CHANGE_TYPES['Del'], 'Path': self.__dbus_object_path__ }) item = find_item(self.items, self.__dbus_object_path__) self.items.remove(item) parent = find_item(self.items, item['Parent']) parent['ChildCount'] -= 1
def Update(self, to_add_update, to_delete): item = find_item(self.items, self.__dbus_object_path__) for prop in to_delete: del item[prop] for prop, val in to_add_update.items(): item[prop] = val device = get_object(find_root(self.items, self.__dbus_object_path__)['Path']) device.queue_change ({ 'ChangeType': CHANGE_TYPES['Mod'], 'Path': self.__dbus_object_path__ })
def Delete(self): device = get_object( find_root(self.items, self.__dbus_object_path__)['Path']) device.queue_change({ 'ChangeType': CHANGE_TYPES['Del'], 'Path': self.__dbus_object_path__ }) item = find_item(self.items, self.__dbus_object_path__) self.items.remove(item) parent = find_item(self.items, item['Parent']) parent['ChildCount'] -= 1
def Update(self, to_add_update, to_delete): item = find_item(self.items, self.__dbus_object_path__) for prop in to_delete: del item[prop] for prop, val in to_add_update.items(): item[prop] = val device = get_object( find_root(self.items, self.__dbus_object_path__)['Path']) device.queue_change({ 'ChangeType': CHANGE_TYPES['Mod'], 'Path': self.__dbus_object_path__ })