#!/usr/bin/python3
'''
Python program to convert users.json from radioid.net to
a digital-contacts.csv file for import to Anytone CPS.
This file implements a simple filtering based on country for entries
from United States and Canada.

Fetch user.json with this url: https://www.radioid.net/static/users.json
'''

import urllib.request
import json
import csv

contactsHeader = ['No.','Radio ID','Callsign','Name','City','State',
                  'Country','Remarks','Call Type','Call Alert']
inputFile = 'users.json'
outputFile = 'digital-contacts.csv'
countrySet = ('United States', 'Canada')
url = 'https://www.radioid.net/static/users.json'

# Opening JSON file and loading the data
# into the variable data
#with open(inputFile) as json_file:
req = urllib.request.Request(url)
resp = urllib.request.urlopen(req).read()
data = json.loads(resp.decode('utf-8'))
users_data = data['users']
 
# now we will open a file for writing
data_file = open(outputFile, 'w', encoding='utf-8')
 
# create the csv writer object
csv_writer = csv.writer(data_file, quoting=csv.QUOTE_ALL)

# Counter variable used for writing
# headers to the CSV file
count = 0
 
for user in users_data:
    if not user['country'] in countrySet:
        continue

    if count == 0:
 
        # Writing headers of CSV file
        csv_writer.writerow(contactsHeader)
 
    count += 1
    # Writing data of CSV file
    csv_writer.writerow([str(count), user['radio_id'], user['callsign'],
                         user['fname']+' '+user['surname'], user['city'],
                         user['state'], user['country'],
                         'Private Call', 'None'])
 
data_file.close()
print('Wrote %d contacts to %s' % (count, outputFile))
