コード例 #1
0

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)
コード例 #2
0
def write_dict(files, dict_):
    for key in dict_.keys():
        line = "%s#&#%s\n" % (key, dict_[key])
        write_file(files, line)
コード例 #3
0
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)
コード例 #4
0
ファイル: main.py プロジェクト: einstein13/ochrona_danych
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)