imcrazytwkr

Rutracker CSV category list exporter

Dec 6th, 2015
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.32 KB | None | 0 0
  1. import os
  2. import csv
  3. import json
  4. from operator import itemgetter
  5.  
  6. def read_cats(filename):
  7.     file = open(filename, 'r', encoding='UTF-8')
  8.     categories = list(csv.DictReader(file, fieldnames=('id', 'name', 'filename'), delimiter=';', quotechar='"'))
  9.     file.close()
  10.  
  11.     for category in categories: del(category['filename'])
  12.     return sorted(categories, key=itemgetter('name'))
  13.  
  14. def get_subcats(id, dirs):
  15.     subcats = {}
  16.     for dirt in dirs:
  17.         if(os.path.isfile(dirt+'/category_'+id+'.csv')):
  18.             file = open(dirt+'/category_'+id+'.csv', 'r', encoding='UTF-8')
  19.             shares = list(csv.DictReader(file, fieldnames=('subcat_id', 'subcat_name', 'share_id', 'share_hash', 'share_name', 'share_size'), delimiter=';', quotechar='"'))
  20.             file.close()
  21.             for share in shares: subcats[share['subcat_id']] = share['subcat_name']
  22.  
  23.     result = []
  24.     for key in subcats: result.append({
  25.         'id': int(key),
  26.         'name': subcats[key]
  27.     })
  28.     return sorted(result, key=itemgetter('name'))
  29.  
  30. cats = read_cats('category_info.csv')
  31. dirs = list(filter(os.path.isdir, os.listdir(os.getcwd())))
  32. for cat in cats: cat['subcats'] = get_subcats(cat['id'], dirs)
  33.  
  34. if(os.path.isfile('cats_subcats.json')): os.remove('cats_subcats.json')
  35. outfile = open('cats_subcats.json', 'w', encoding='UTF-8')
  36. outfile.write(json.dumps(cats, indent=4, sort_keys=True))
  37. outfile.close()
Advertisement
Add Comment
Please, Sign In to add comment