Hei!
Tässä teille pikkujoululahjaksi pieni koodin patkä, joka siis muuntaa vanha Nokialaisen .dat päätteellä olevan Vcard 2.1 tiedoston sellaiseen muotoon, että se kelpaa inakin iPhonelle.
Minulla oli painia tämän kanssa juurikin ja tein tämän siksi.
Tuon vanhan .dat-tiedoston saa tietokoneelleen ainakin nokian Pc-Suiten avulla.
Tiedosto on vanhaa mallia eikä siis kelpaa ainakaan icloudin siirtoon sellaisenaan.
Siitä pitää siivota roskia ja muuttaa versionumero 3.0:ksi sekä lisätä kenttä FN.
Sen voi toki tehdä käsinkin ihan tekstieditorilla jos jaksaa.
Tämä koodin pätkä Pythonia tekee sen helpommin.
Sen käyttäminen ei vaadi kovin syvällistä osaamista, mutta jotain perusjuttuja kuitenkin.
Vähemmän tehneille neuvoksi:
Jotta ohjelma toimii, pitää asentaa koneelle Python (ellei ole jo) ja kopioida allaoleva koodi tekstitiedostona nimellä vcffix.py.
Sitten vaan kirjoitat pääteikkunaan:
cd C:\Users\xxxx\Documents
python vcffix.py C:\Users\xxxxx\Documents\Contacts.dat
Edellä tämä xxxx on siis oma käyttäjänimesi windowsissa.
Nimittäin, että olet siis tallentanut sen Contacts.dat - tiedoston sinne omiin tiedostoihin kuten vcffix.py -tiedostonkin.
Jos tiedostoto on muualla muuta polkuja vastaavasti.
Alla koodi.
Koodi:
###############################################################
# Converts old nokia .dat file using vcard 2.1 version
# to vcard 3.0
# removes unnecessary characters and adds FN-field
# does not fix scandic issues etc.
# Note: This is an quick fix not reliable piece of software!
# Copyright notice:
# This is free code for everybody to use!
# Enjoy!
##############################################################
import sys, getopt
cardcount=0
argn = len(sys.argv)
if argn < 2:
#print('argv0 '+ sys.argv[0])
print('Need at least input file name!')
print('vcffix.py inputfilenamewithpath outputfilenamewithpath')
sys.exit(2)
if len(sys.argv[1]) < 5:
print('The input filename must have .dat suffix and at least one digit name!')
sys.exit(2)
datf = sys.argv[1]
if datf[::-1][:4]!= 'tad.':
print('The input file suffix must be .dat')
sys.exit(2)
if argn > 2:
if len(sys.argv[2]) < 5:
print('The output filename must have .vcf suffix and at least one digit name!')
sys.exit(2)
vcff = sys.argv[2]
if vcff[::-1][:4]!= 'fcv.':
print('Outputfile suffix must be .vcf ' + vcff)
sys.exit(2)
else: #if outptfile missin changes the filenamr 4 last digits to .vcf
slen = len(datf)-4
vcff = datf[:slen] + '.vcf'
print('Converting ' + datf + ' to ' + vcff + ' to version 3.0 ..')
#path = 'C:/Users/kesas/Documents/temp/'
with open(datf, 'r', errors='ignore') as file :
contents = file.read()
# add newlines between each card
contents = contents.replace('BEGIN:', '\nBEGIN:')
# remove unnecessary characters in the beginning
pos1= contents.find('BEGIN:VCARD',0)
contents = contents[ pos1 : : ]
cardcount=1
# remove unnecessary characters in file
pos=1
while pos > 0:
pos1= contents.find('END:VCARD',pos)
pos= contents.find('BEGIN:VCARD',pos1)
contents = contents[0 : pos1 + 9] + '\n\n' + contents[ pos : :]
cardcount += 1
# change version and add FN-field
contents = contents.replace('VERSION:2.1', 'VERSION:3.0\nFN:none')
#save with new name
with open(vcff, 'w', errors='ignore') as file:
file.write(contents)
print('Done ' + str(cardcount) + ' cards' )
Kirjanmerkit