1
2
3
4
5
6 import re
7
15
16
18
19 - def __init__(self, id, name, child_count, parent):
34
37
39 r = {'id': self.id, 'name': self.name, }
40 return r
41
42
44
45 - def __init__(self, id, name, child_count, search_class, parent):
49
53
55 folders = [ child for child in self.children
56 if isinstance(child, Folder) and \
57 str(child.get_id()) == str(folder_id) ]
58 if folders:
59 folder = folders[0]
60 else:
61 folder = None
62 for child in self.children:
63 if isinstance(child, Folder):
64 folder = child.get_folder_with_id(folder_id)
65 if folder:
66 break
67
68 return folder
69
71 return self.search_class
72
79
81
82 - def __init__(self, id, name, parentID, urls):
88
89 - def get_url(self, preferred_formats):
90 for preferred_format in preferred_formats:
91 for url, (media_type, format) in self.urls.iteritems():
92 if preferred_format == format:
93 return url
94 return ''
95
98
105
107 infos = self.urls.get(url)
108 mime_type = ''
109 if infos:
110 mime_type = '%s/%s' % (infos[0], infos[1])
111 return mime_type
112
117
119 r = []
120 o = []
121 a_list.sort()
122 for i in a_list:
123 try:
124 i = int(i)
125 except:
126 o.append(i)
127 else:
128 r.append(i)
129 r.sort()
130 r = [str(i) for i in r]
131 o.sort()
132 return r + o
133
135 parent_id = folder['parent_id']
136 parent = root.get_folder_with_id(parent_id)
137 if not parent:
138 if parent_id == '0':
139 parent = root
140 else:
141 try:
142 parent_parent_id = folders[parent_id]['parent_id']
143 parent_parent = root.get_folder_with_id(parent_parent_id)
144 parent = Folder(parent_id,
145 folders[parent_id]['title'],
146 folder['child_count'], folder['upnp_class'],
147 parent_parent)
148 except KeyError:
149 print 'Parent not found for folder %s in %s' % (parent_id,
150 folders.keys())
151 return parent
152
153
154 -def buildHierarchy(hashed_items, container_id, container_name,
155 build_parents=True):
156 items = {}
157 folders = {}
158 for item_id, item in hashed_items.iteritems():
159 if not item.has_key('resources') or not item['resources']:
160
161 folders[item_id] = item
162 else:
163 items[item_id] = item
164
165 keys = _sort_list(folders.keys())
166
167 root = Folder(container_id, container_name, 0, [], None)
168
169 for folder_id in keys:
170 folder = folders[folder_id]
171
172 if build_parents:
173 parent = _get_parent(root,folder, folders)
174 else:
175 parent = root
176
177 Folder(folder_id, folder['title'], folder['child_count'],
178 folder['upnp_class'], parent)
179
180 for item_id, item in items.iteritems():
181 folder_id = item['parent_id']
182 folder = root.get_folder_with_id(folder_id)
183 if not folder:
184 folder = root
185 Item(item_id, item['title'], folder, item['resources'])
186
187 return root
188