def subtopics(store, folders, folder_id, subfolder_id, ann_id=None):
    # This code will be changed soon. In essence, it implements the
    # convention established in SortingDesk for storing subtopic data.
    # Currently, subtopic data is stored in the FC that the data (i.e.,
    # image or snippet) came from. This is bad because it causes pretty
    # severe race conditions.
    #
    # Our current plan is to put each subtopic datum in its own FC. It will
    # require this code to make more FC fetches, but we should be able to
    # do it with one `store.get_many` call.
    items = folders.grouped_items(folder_id, subfolder_id, ann_id=ann_id)
    fcs = dict([(cid, fc) for cid, fc in store.get_many(items.keys())])
    for cid, subids in items.iteritems():
        fc = fcs[cid]
        for subid in subids:
            try:
                data = typed_subtopic_data(fc, subid)
            except KeyError:
                # We have a dangling label folks!
                continue
            yield cid, subid, fc['meta_url'], subtopic_type(subid), data
Reads any file supported by pydub (ffmpeg) and returns the data contained
dataset/ETHPy150Open dossier/dossier.models/dossier/models/subtopic.py/subtopics--crossover with--dataset/ETHPy150Open worldveil/dejavu/dejavu/decoder.py/read