コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
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
コード例 #6
0
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__
    })
コード例 #7
0
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
コード例 #8
0
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__
    })