Conversion contacts Hotmail vers Acajoom

Le script python présenté ici permet, après export de tous vos contacts de Hotmail vers un fichier, de transformer celui ci en un fichier accepté en entrée d’Acajoom, plugin de mailing utilisé dans Joomla.

Vous pouvez ainsi facilement ajouter tous vos contacts msn à votre mailing liste.

Utilisation

  1. Vérifiez que Python est installé sur votre machine, sinon, téléchargez le ici.
  2. Copiez-collez le script suivant dans un fichier texte, que vous renommerez, par exemple, hotmailToAcajoom.py
  3. Remplacez dans le script, à la ligne

    INPUT_FILENAME = "WLMContacts.csv"

    le nom entre guillemets par le nom de votre fichier créé par Hotmail, contenant tous vos contacts exportés.

  4. Vérifiez que votre fichier d’export Hotmail et votre script Python sont dans le même dossier, puis éxecuter le script en ligne de commande : python hotmailToAcajoom.py
  5. Le fichier acajoomInput.csv va être créé, il est directement utilisable pour être importé dans Acajoom.

Le script

import sys
import os
import os.path
import getopt
import platform

NICKNAME_FIELD_NUMBER = 78
MAX_LINE_TO_PROCESS = 1000
SEPARATOR = ','

def findMailIdx(splittedLine):

	length = len(splittedLine)
	print "Number of fields" + str(length)
	idx = 0
	while idx < length:

		currentField = splittedLine[idx]
		#print currentField
		if currentField.find('@') >= 1:
			return idx

		idx+=1

	return -1

def getMail(splittedLine):

	mailIdx = findMailIdx(splittedLine)
	print str(mailIdx)
	if (mailIdx == -1):
		print "Mail field not found"
		return ""
	else:
		print splittedLine[mailIdx]
		return splittedLine[mailIdx]

def getName(splittedLine):

	result = ""
	if len(splittedLine[1]) > 0:
		result = splittedLine[1]
		if len(splittedLine[3]) > 0:
			result += "_"
			result += splittedLine[3]
	elif len(splittedLine[ NICKNAME_FIELD_NUMBER ]) > 0:
		result = splittedLine[ NICKNAME_FIELD_NUMBER ]
	else:
		mailField = getMail(splittedLine)
		arobaseIdx = mailField.find('@')
		result = mailField[0:arobaseIdx]

	if result == "":
		print "No valid name field found"
	else:
		print result

	return result

def main( argv ):

	INPUT_FILENAME = "WLMContacts.csv"
	OUTPUT_FILENAME = "acajoomInput.csv"

	inputFile = open(INPUT_FILENAME, 'r')
	lignes = inputFile.readlines()
	outputFile = open(OUTPUT_FILENAME,'w')

	startingLine = 1
	linesToProcess = MAX_LINE_TO_PROCESS
	idx=0
	for line in lignes:

		print "----------------------"
		print line

		if (idx > linesToProcess):
			break

		if (idx < startingLine):
			idx += 1
			continue

		splittedLine = line.split(";")
		length = len(splittedLine)
		if (length < 81):
			idx+=1
			print "*** Invalid line"
			continue

		nameField = getName(splittedLine)

		outputLine = nameField
		outputLine += SEPARATOR

		mailField = getMail(splittedLine)

		outputLine += mailField
		outputLine += SEPARATOR
		outputLine += "1"
		outputLine += SEPARATOR
		outputLine += "1"
		outputLine += "\n"

		outputLine = outputLine.replace("\"","")
		outputLine = outputLine.replace(" ","")

		print outputLine

		outputFile.write(outputLine)
		idx+=1

	inputFile.close()
	outputFile.close()

	print "Process finished"

	sys.exit(1)

if __name__ == "__main__":
     main( sys.argv[1:] )