74 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python3
 | 
						|
# Author: Bandie Canis
 | 
						|
# License: BSD-2-clause
 | 
						|
 | 
						|
import xml.etree.ElementTree as ET
 | 
						|
import getopt, sys
 | 
						|
import os.path
 | 
						|
 | 
						|
def main(argv):
 | 
						|
 | 
						|
    infile = ''
 | 
						|
    outfile = ''
 | 
						|
 | 
						|
    try:
 | 
						|
        opts, args = getopt.getopt(argv, "hi:o:", ["if=","of="])
 | 
						|
    except getopt.GetoptError as err:
 | 
						|
        print(err)
 | 
						|
        helpMsg(sys.argv[0])
 | 
						|
        sys.exit(1)
 | 
						|
 | 
						|
    for opt, arg in opts:
 | 
						|
        if opt == '-h':
 | 
						|
            helpMsg(sys.argv[0])
 | 
						|
            sys.exit(0)
 | 
						|
        elif opt in ('-i', '--if'):
 | 
						|
            infile = arg
 | 
						|
        elif opt in ('-o', '--of'):
 | 
						|
            outfile = arg
 | 
						|
 | 
						|
    if(infile == '' or outfile == ''):
 | 
						|
        helpMsg(sys.argv[0])
 | 
						|
        sys.exit(1)
 | 
						|
 | 
						|
    if not(os.path.isfile(infile)):
 | 
						|
        print("Error: ", infile, "doesn't exist.")
 | 
						|
        sys.exit(1)
 | 
						|
   
 | 
						|
    
 | 
						|
    doEet(infile, outfile)
 | 
						|
 | 
						|
 | 
						|
def doEet(infile, outfile):
 | 
						|
 | 
						|
 | 
						|
    root = ET.parse(infile).getroot().find('entries')
 | 
						|
 | 
						|
 | 
						|
    f = open(outfile, 'w')
 | 
						|
    counter = 0
 | 
						|
    for c in root.findall('entry'):
 | 
						|
        counter+=1
 | 
						|
        tel = c.find('extension').text
 | 
						|
        name = c.find('name').text
 | 
						|
        loc = c.find('location').text
 | 
						|
 | 
						|
        entry = "BEGIN:vCard\nVERSION:3.0\nN:{}\nTEL;type=voice:{}\nCATEGORIES:EPVPN\nNOTE:Location: {}\nEND:vCard\n\n".format(name, tel, loc)
 | 
						|
 | 
						|
        f.write(entry)
 | 
						|
    
 | 
						|
    f.close()
 | 
						|
    print("Contacts processed:", counter)
 | 
						|
    print("Have fun! :)")
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
def helpMsg(progname):
 | 
						|
    print(progname, "-i <inputfile.xml> -o <outputfile.vcf>")
 | 
						|
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
   main(sys.argv[1:])
 |