Scripts
Split .ctt bestand (msn contact lijst) en haal dubbele adres
Importeer meerdere .ctt bestanden, maak er 1 van (of split ze in groepjes) en haal dubbele adressen er uit. Hoe maak je een .ctt bestand: Open MSN, meld je aan, ga naar "Contactpersonen" > "Messenger-contactpersonen opslaan". Als je nu meerdere MSN accounts hebt, kan je deze samenvoegen of splitsen. Dubbele adressen worden er uit gehaald. Ik heb dit voor iemand moeten maken en ik wil het wel moet jullie delen :) Of het nou echt nuttig is betwijfel ik, maar het ziet er wel leuk uit :p Voor het voorbeeld: test/test
split-ctt-bestand-msn-contact-lijst-en-haal-dubbel
[code]
<?php
/*################################
# Gemaakt door Kay S #
################################*/
$mapnaam = 'files'; //map waar de bestanden in komen
$base = 'http://crap.dragy.nl/cttopti/'; //totale boom waar het bestand staat
/*################################
# Vanaf hier niks meer aanpassen #
################################*/
$error = '';
$bericht = '';
$gelukt = array();
$mislukt = array();
$valid = array();
$xml_contents = array();
function readxml($str)
{
preg_match_all('|<contact type="(.*)">(.*)</contact>|U', $str, $xml);
return $xml;
}
if(!is_dir($mapnaam))
{
$rootdir = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['SCRIPT_FILENAME']);
if(mkdir($rootdir.$mapnaam, 0777, true))
{
$bericht .= "Maken van map '".$mapnaam."' gelukt.<br />";
}else
{
$error .= "Maken van map '".$mapnaam."' is mislukt. Waarschijnlijk mag ik de map niet maken.. Je kan de map zelf maken en chmodden naar 777 (alle rechten)<br />";
}
}
if(!is_writable($mapnaam))
{
$error .= "Kan niet schrijven naar map '".$mapnaam."'. Je moet de map nog chmodden naar 777 (alle rechten).<br />";
}
if(isset($_POST['submit']) AND empty($error))
{
$max_adr = $_POST['maxadr'];
if(ctype_digit($max_adr))
{
$ctt = $_POST['ctt'];
for($n=0; $n < count($ctt); $n++)
{
if(!empty($ctt[$n]))
{
$xml = readxml(stripslashes($ctt[$n]));
$types = $xml[1];
$addr = $xml[2];
if(count($types) > 0)
{
for($a=0; $a < count($types); $a++)
{
if($types[$a] == 1)
{
$valid[] = $addr[$a]; //alle adressen die goed zijn
}
}
}else
{
$error .= "Bestand ".($n+1)." is geen geldig .ctt bestand of is niet compatible.<br />";
}
}else
{
$error .= "Veld ".($n+1)." was leeg.<br />";
}
}
$valid = array_unique($valid); //duplicaten er uit vissen
$adr_delen = array_chunk($valid, $max_adr); //het opsplitsen in delen
$n_delen = count($adr_delen); //aantal bestanden dat gemaakt moet worden
//nu weer de xml er bij voegen
for($b=0; $b<$n_delen; $b++)
{
$xml_contents[$b] = "<?xml version=\"1.0\"?>\n<messenger>\n <service name=\".NET Messenger Service\">\n <contactlist>\n";
foreach($adr_delen[$b] as $adres)
{
$xml_contents[$b] .= " <contact type=\"1\">".$adres."</contact>\n";
}
$xml_contents[$b] .= " </contactlist>\n </service>\n</messenger>";
}
//schrijven naar bestanden
for($c=0; $c<count($xml_contents); $c++)
{
$cct_name = 'Contactpersonen_bestand_'.sprintf('%04d', $c+1).'_'.date('dmYHis').'.ctt';
if(!$handle = fopen($mapnaam.'/'.$cct_name, 'w'))
{
$error .= "Kan bestand niet openen. (".$cct_name.")<br />";
$mislukt[] = $cct_name;
}else
{
if(fwrite($handle, $xml_contents[$c]) === FALSE)
{
$error .= "Kan niet schrijven naar ".$cct_name.".<br />";
$mislukt[] = $cct_name;
}else
{
$gelukt[] = $cct_name;
fclose($handle);
}
}
}
}else
{
$error .= "Maximum aantal adressen is geen getal!<br />";
}
}
?>
<html>
<head>
<title>Msn contactlijst splitter, door Kay S</title>
<script type="text/javascript">
var veld = 2;
var contents = [];
function addveld()
{
for(i=0; i<(veld-1); i++)
{
contents[i+1] = document.getElementById('b'+(i+1)).value;
}
document.getElementById("uformulier").innerHTML = document.getElementById("uformulier").innerHTML+'Bestand '+veld+':<br /><textarea id="b'+veld+'" name="ctt[]" rows="2" cols="20"></textarea><br />';
veld++;
for(i=0; i<(contents.length-1); i++)
{
document.getElementById('b'+(i+1)).value = contents[i+1];
}
}
</script>
<style>
body {
font-family: Arial;
font-size: 9pt;
color: #000;
text-align: center;
}
h1, h2 {
margin: 0;
}
#container {
background: #f1f1f1;
border: 10px solid #333;
margin: 20px auto;
width: 700px;
}
#header {
background: #2061AF;
color: #fff;
height: 50px;
padding: 20px;
border-bottom: 5px solid #333;
}
.bericht, .error {
width: 80%;
background: #fff;
margin: 10px auto;
padding: 10px;
}
.bericht {
border: 3px solid #00ff00;
}
.error {
border: 3px solid #ff0000;
}
</style>
</head>
<body>
<div id="container">
<div id="header">
<h1>Contact lijst splitter</h1>
<h2>Door Kay S</h2>
</div>
<?php
if(!empty($error)) echo '<p class="error">'.$error.'</p>';
if(!empty($bericht)) echo '<p class="bericht">'.$bericht.'</p>';
if(count($gelukt) > 0)
{
echo '<p class="bericht">';
echo 'Succesvol '.count($gelukt).' bestanden gemaakt!. Elk bestand bevat '.$max_adr.' adressen en het laatste bestand bevat er '.count($adr_delen[$n_delen-1]).'.';
if(count($mislukt) > 0) echo '<br />Helaas zijn er ook '.count($mislukt).' mislukt..';
echo '</p>';
foreach($gelukt as $filename)
{
echo '<input type="text" readonly="readonly" value="'.$base.$mapnaam.'/'.$filename.'" size="50"/> <a href="'.$mapnaam.'/'.$filename.'" title="Download">download</a><br />';
}
}
?>
<form action="contactstrip.php" method="post">
<p>
Plak hier de inhoud van de .ctt bestanden:
</p>
<p>
Adressen per bestand: <input type="text" name="maxadr" value="10" size="3"/>
</p>
<p id="uformulier">
Bestand 1:<br />
<textarea id="b1" name="ctt[]" rows="2" cols="20"></textarea><br />
</p>
<p>
<input type="button" value="Voeg veld toe" onclick="addveld();"/>
<input type="submit" value="Voeg samen" name="submit" />
</p>
</form>
</div>
</body>
</html>
[/code]
Reacties
0