Hallo,
Ik wil mijn e-books gaan sorteren en in een database gaan zetten zodat ik makkelijker kan zien welk boek ik heb. Mijn eerste stap is om de boeken bij elkaar in mappen te doen op een Synology. Ik werk met PHP en werk in een webbased omgeving.
Inmiddels ben ik redelijk ver dankzij hulp van Google maar ik struikel nu bij de opdracht rename waar ik maar geen oplossing voor vind.
Het blijkt dat de namen van de boeken op de Synology een extra verborgen naam krijgen Laanen_Rob-Anavatos.epub@SynoEAStream dat laatste @SynoEAStream is zichtbaar via PHP maar niet zichtbaar in windows verkenner.
Draai ik het script dan krijg ik de volgende meldingen:
Zoek naar epub in de map
Gevonden: entry=Laanen_Rob-Anavatos.epub@SynoEAStream
Synology opdracht gevonden: @synoeastream=@synoeastream en negeren.
Blijft over: entry=laanen_rob-anavatos.epub
extentie=epub
schrijver-boek laanen_rob-anavatos.epub
teken - staat op 10 plaats
Schrijver is dan laanen_rob
Boektitel is dan anavatos.epub
Nieuwe mapnaam is: laanen_rob
map laanen_rob is al aanwezig. Dus niet opnieuw aangemaakt.
Verhuizen van ../epub/Laanen_Rob-Anavatos.epub@SynoEAStream
naar laanen_rob/anavatos.epub
Warning: rename(../epub/Laanen_Rob-Anavatos.epub@SynoEAStream,laanen_rob/anavatos.epub): No such file or directory in /volume1/web/epub/index.php on line 73
Bij de opdracht rename heb ik $van en $naar. Ik heb van al geprobeerd met de volledige Anavatos.epub@SynoEAStream en met de Anavatos.epub maar bij beide houd ik de melding No such file or directory in /volume1/web/epub/index.php on line 73 waarbij regel 73 de regel met rename is.
Ik heb geprobeerd:
(de startmap is epub programma is index.php)
../epub/Laanen_Rob-Anavatos.epub@SynoEAStream
Laanen_Rob-Anavatos.epub@SynoEAStream
/Laanen_Rob-Anavatos.epub@SynoEAStream
/Laanen_Rob-Anavatos.epub
Laanen_Rob-Anavatos.epub
Of ik dacht dat ik dit allemaal geprobeerd heb.;-)
Het script:
<?php
// lees mappen
//lees alle directories
$sDirName = '';
$aDirectories = glob( $sDirName . '*', GLOB_ONLYDIR );
sort( $aDirectories ); // sorteren
foreach ( $aDirectories as $sDirectory )
{
echo "Zoek naar epub in de map<br>";
// lees de epubs in mappen
if ($handle = opendir($sDirectory))
{
while (false !== ($entry = readdir($handle)))
{
if ($entry != "." && $entry != "..")
{
echo "Gevonden: entry=".$entry."<br>";
$volledigenaam=$entry;
//staat er @SynoEAStream achter van de Synology?
$synologytekst= strtolower(substr($entry,-13)); // laatste 4 tekens
echo "Synology opdracht gevonden: @synoeastream=".$synologytekst." en negeren.<br>";
if ($synologytekst=='@synoeastream'){$entry=(strtolower(substr_replace($entry,"",-13)));}
echo "Blijft over: entry=".$entry."<br>";
$extentie = strtolower(substr($entry,-4)); // laatste 4 tekens
echo "extentie=".$extentie."<br>";
// lees alleen maar epubs in
if ($extentie == "epub")
{
// omzetten naar kleine letters
$naam= strtolower($entry);
echo "schrijver-boek ".$entry."<br>";
//echo "gevonden epub = $naam<br>";
// filter de schrijvernaam er uit
// links van -
$pos = strpos($naam, '-');
echo "teken - staat op ".$pos." plaats<br>";
if ($pos<=1){echo "Bij $naam geen scheiding tussen schrijver en boeknaam gevonden.<br><br>";}
// de naam die daar staat is:
// alles naar kleine letters.
$schrijver = strtolower(substr($naam,0,$pos));
$boektitel = strtolower(substr($naam,$pos+1));
echo "<br>Schrijver is dan ".$schrijver."<br>";
echo "Boektitel is dan ".$boektitel."<br>";
// komma en spatie er uit filteren
$schrijver=TRIM($schrijver);
$schrijver=str_replace(',', '_', $schrijver);
$schrijver=str_replace(' ', '_' , $schrijver);
$schrijver="$schrijver";
// kijk of er al een mapnaam bestaat en maak anders een map aan
$nieuwemap=$schrijver;
echo "<br>Nieuwe mapnaam is: ".$nieuwemap."<br>";
if (!file_exists($nieuwemap))
{
mkdir($nieuwemap, 0777, true);
echo "Map gemaakt met naam ".$nieuwemap."<br>";
}else{
echo "map ".$nieuwemap." is al aanwezig. Dus niet opnieuw aangemaakt.<br><br>";
}
$nieuwemap=TRIM($nieuwemap);
$boektitel=TRIM($boektitel);
// verplaatst naar de gemaakte mapnaam
$van = $volledigenaam;
//$van = $entry;
$naar= $nieuwemap."/".$boektitel;
echo "Verhuizen van ".$van."<br>";
echo " naar ".$naar."<br>";
rename($van, $naar);
echo "<br><br>";
echo "<br>===================<br>";
}
}
}
}
}
?>
Mijn vraag is, wat doe ik verkeerd dat ik de foutmelding krijg.
1.936 views