def filter_subset(tracks, tags_subset): tracks_to_delete = [] for track_id, track in tracks.items(): total_tags = 0 for category, tags_new in tags_subset.items(): track[category] &= tags_new total_tags += len(track[category]) if total_tags == 0: tracks_to_delete.append(track_id) for track in tracks_to_delete: tracks.pop(track) if __name__ == '__main__': parser = argparse.ArgumentParser(description='Filters out tags according to tag list and removes tracks with no ' 'tags left') parser.add_argument('tsv_file', help='TSV file with such columns: TRACK_ID, ARTIST_ID, ALBUM_ID, PATH, DURATION, ' 'TAGS') parser.add_argument('tags_file', help='file with list of tag subset') parser.add_argument('output_file', help='output tsv file') args = parser.parse_args() tracks, tags, extra = commons.read_file(args.tsv_file) tags_subset = read_tags_file(args.tags_file) filter_subset(tracks, tags_subset) commons.write_file(tracks, args.output_file, extra)
def write_dict(files, dict_): for key in dict_.keys(): line = "%s#&#%s\n" % (key, dict_[key]) write_file(files, line)
import argparse import commons def filter_category(tracks, tags, category): track_id_sets = [tag_track_ids for tag_track_ids in tags[category].values()] track_ids = set().union(*track_id_sets) tracks_new = {track_id: track for track_id, track in tracks.items() if track_id in track_ids} for track in tracks_new.values(): for other_category in set(commons.CATEGORIES) - {category}: track[other_category] = set() return tracks_new if __name__ == '__main__': parser = argparse.ArgumentParser(description='Creates subset of the full dataset') parser.add_argument('tsv_file', help='TSV file with such columns: TRACK_ID, ARTIST_ID, ALBUM_ID, PATH, DURATION, ' 'TAGS') parser.add_argument('category', choices=commons.CATEGORIES, help='Category to extract') parser.add_argument('output_file', help='Output tsv file') args = parser.parse_args() tracks, tags, extra = commons.read_file(args.tsv_file) tracks_filtered = filter_category(tracks, tags, args.category) commons.write_file(tracks_filtered, args.output_file, extra)
from importlib import import_module from os import chdir from commons import find_value_input, write_file from tasks import allowed_tasks keys = allowed_tasks value1 = find_value_input("Podaj numer tematu", 'integer', keys, 1) keys = allowed_tasks[value1] value2 = find_value_input("Podaj numer zestawu", 'integer', keys, 2) keys = allowed_tasks[value1][value2] value3 = find_value_input("Podaj numer zadania", 'integer', keys, 3) values = (value1, value2, value3) print("Temat: %d, Zestaw: %d, Zadanie %d:" % values) try: chdir("./temat%d/zestaw%d/" % (value1, value2)) module = import_module("temat%d.zestaw%d.zadanie%d" % values) result = module.main() if result: write_file(result, "output%d.txt" % value3) # print("\n" + result + "\n") except Exception as e: print("Coś poszło nie tak...") print(e)