Script d'export des articles et catégories, tout format cible
flyingmilou
Member
dans Entraide
Bonjour à tous,
je viens de me faire un script powershell pour faire ce que j'indique dans le titre :
ça lit les articles et les catégories et ça les met dans des variables.
Libre ensuite à l'utilisateur du script d'utiliser ça pour générer des insert into xxx à exécuter ensuite sur une bdd mysql, mariadb, postgres par exemple...
A adapter selon les besoins (je l'ai fait pour moi ; si ça peut servir à quelqu'un...)
je viens de me faire un script powershell pour faire ce que j'indique dans le titre :
ça lit les articles et les catégories et ça les met dans des variables.
Libre ensuite à l'utilisateur du script d'utiliser ça pour générer des insert into xxx à exécuter ensuite sur une bdd mysql, mariadb, postgres par exemple...
A adapter selon les besoins (je l'ai fait pour moi ; si ça peut servir à quelqu'un...)
#script made by flyingmilou to export pluxml articles / categories to any format
#by generating statements such as sql inserts
#it was made to work with pluxml v5.5
# look for the "todo" string in script...
#todo : set $datadir
$datadir="G:\190406\yupla\blog\data\"
$configdir=$datadir + "configuration\"
$articledir=$datadir + "articles\"
$catxmlfile=$configdir + "categories.xml"
#read known categories and fills up hashatable to find name of them :
$catxml=[xml](get-content -Encoding utf8 $catxmlfile)
$docnode=$catxml.document
$listcat=$docnode.ChildNodes
$psCatList=@{}
foreach ($catnode in $listcat)
{
$mycatnum=$catnode.GetAttribute("number")
$mycatname=$catnode.name.InnerText
$psCatList.Add($mycatnum,$mycatname)
}
Get-ChildItem $articledir -Filter "*.xml" |
Foreach-Object {
#$xmlfilename="0002.002.001.201103061707.barbar-bok.xml"
$xmlfilename=$_
$xml = [xml](get-content -encoding utf8 ".\$xmlfilename" )
$title=$xml.document.title.InnerText
$chapo=$xml.document.chapo.InnerText
$content=$xml.document.content.InnerText
#$title
#$chapo
#$content
#$xmlfilename
if ($xmlfilename -match "([0-9]{12})"){$datetoparse=$matches[1]} else {$datetoparse="date string not found !"}
#$datetoparse
# $datetoparse=($xmlfilename |
# select-string '[0-9][0-9][0-9][0-9]\.[0-9][0-9][0-9]\.[0-9][0-9][0-9]\.([0-9]*)\..*' -AllMatches | select -ExpandProperty matches |
# select -ExpandProperty groups)[1].value
$annee=$datetoparse.Substring(0,4)
$mois=$datetoparse.Substring(4,2)
$jour=$datetoparse.Substring(6,2)
$heure=$datetoparse.Substring(8,2)
$minute=$datetoparse.Substring(10,2)
#$annee
#$mois
#$jour
#$heure
#$minute
Write-Host "$title inserted on the $jour of $mois in $annee at $heure h $minute"
#todo : use those variables to create insert statement to export from pluxml to any database
#extraction of the categories :
#$xmlfilename is supposed to be :
#xxxx.
#a csv int list -> the categories
#.001.
#date.name.xml
$mystr=$xmlfilename.Name.Substring(5)
$i=$mystr.IndexOf(".001.$datetoparse")
#$xmlfilename
$categories=$mystr.Substring(0,$i)
$catlist=$categories.split(",")
#todo : in this foreach bloc, you have all you need to add the existing used categories to the entry you are exporting
foreach($cat in $catlist)
{
write-host "belongs to cat $cat : " + $psCatList[$cat]
}
}
Connectez-vous ou Inscrivez-vous pour répondre.