Script d'export des articles et catégories, tout format cible

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...)
#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.