from __future__ import print_function import argparse import json import urllib.parse import os import random import requests def submit_features(host, recordingid, features): featstr = json.dumps(features) url = urllib.parse.urlunparse(('http', host, '/%s/low-level' % recordingid, '', '', '')) r = requests.post(url, data=featstr) r.raise_for_status() def main(host, directory, n): filelist = [] for root, dirs, files in os.walk(directory): print(root) for f in files: if f.endswith(".json"): filelist.append(os.path.join(root, f)) print("Got {} files".format(len(filelist))) if len(filelist) > n: filelist = random.sample(filelist, n) for f in filelist: print('Submitting file %s' % f) j = json.load(open(f)) recordingid = j['metadata']['tags']['musicbrainz_recordingid'][0] submit_features(host, recordingid, j) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--host', default='localhost:8080') parser.add_argument('-n', type=int, help='number of files to randomly submit') parser.add_argument('directory') args = parser.parse_args() main(args.host, args.directory, args.n)