def collect_list(parent, current): # このフォルダのパスと子供一覧をリストに追加 children = Bookmark.gatherUrlOrHash(current) folder = { 'depth': getDepth(parent), 'path': getPath(parent), 'children': children } outlist = [folder] # 子フォルダから再帰的にパスと子供一覧を集める child_list = filter(Bookmark.isFolder, Bookmark.getChildren(current)) def collect_child(child): newPath = getPath(parent) + '/' + Bookmark.getTitle(child) child_folder = { 'depth': getDepth(parent) + 1, 'path': newPath } children = collect_list(child_folder, child) outlist.extend(children) map(collect_child, child_list) return outlist