- rch = []
- for n, (cid, name, url) in enumerate(cch):
- rch.append(chapter(self, [(self, n)], cid, name, url))
- self.cch = rch
+ groups = {}
+ for n, (readerid, name, gname) in enumerate(cch):
+ groups.setdefault(gname, [n, []])[1].append((readerid, name))
+ groups = sorted(groups.items(), key=lambda o: o[1][0])
+ rgrp = []
+ for n, (gname, (_, gch)) in enumerate(groups):
+ ngrp = group(self, [(self, n)], gname, gname)
+ for m, (readerid, name) in enumerate(gch):
+ ngrp.ch.append(chapter(ngrp, ngrp.stack + [(ngrp, m)], readerid, name, readerid))
+ rgrp.append(ngrp)
+ self.cch = rgrp