ebooks sorteren
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:
Mijn vraag is, wat doe ik verkeerd dat ik de foutmelding krijg.
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?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>";
}
}
}
}
}
?>
// 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.
Hier wat uitleg over verborgen bestanden.
https://www.synology-forum.nl/externe-harddisks-en-printers/na-kopieer-taak-via-usb-copy-dubbele-kleine-bestanden/
Overigen kan je makkelijk naar epub bestanden zoeken :
https://www.synology-forum.nl/externe-harddisks-en-printers/na-kopieer-taak-via-usb-copy-dubbele-kleine-bestanden/
Overigen kan je makkelijk naar epub bestanden zoeken :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Adoptive Solution bedankt voor je tip. Het zoekdeel gebruik ik geregeld in andere scripts om iets te zoeken. Ik hoef dan een beetje aan te passen voor word pdf html of iets anders wat ik wil vinden.
Youw tip ga ik zeker gebruiken, hoewel het geen antwoord op mijn vraag was.
Youw tip ga ik zeker gebruiken, hoewel het geen antwoord op mijn vraag was.
Als ik je code toepas op epubs dan blijk dat rename niet werkt omdat van elke titel de eerste letter ontbreekt.
[
[
Inmiddels heb ik het probleem gevonden. Ik vertaalde alles naar kleine letters maar het 'van' deel moest natuurlijk de originele naam houden.
Nieuwe werkende script is nu:
Nieuwe werkende script is nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?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= substr($entry,-13); // laatste 4 tekens
echo "Synology opdracht gevonden: @synoeastream=".$synologytekst." en negeren.<br>";
if ($synologytekst=='@SynoEAStream'){$entry=(substr_replace($entry,"",-13));}
echo "Blijft over: entry=".$entry."<br>";
$van=$entry;
$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 = "../epub/".$volledigenaam;
//$van = $entry;
$naar= $nieuwemap."/".$boektitel;
echo "Verhuizen van ".$van."<br>";
echo " naar ".$naar."<br>";
rename($van, $naar);
echo "<br><br>";
echo "<br>===================<br>";
}
}
}
}
}
$path = ".";
if ( $files = scandir( $path ) )
{
$extensions = array( "epub", "jpg", "png" );
foreach ( $files as $epub )
{
$fileExtension = strtolower( pathinfo( $epub, PATHINFO_EXTENSION ) );
if( in_array( $fileExtension , $extensions ) )
{
echo $epub . '<br />' . PHP_EOL;
}
}
}
?>
// 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= substr($entry,-13); // laatste 4 tekens
echo "Synology opdracht gevonden: @synoeastream=".$synologytekst." en negeren.<br>";
if ($synologytekst=='@SynoEAStream'){$entry=(substr_replace($entry,"",-13));}
echo "Blijft over: entry=".$entry."<br>";
$van=$entry;
$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 = "../epub/".$volledigenaam;
//$van = $entry;
$naar= $nieuwemap."/".$boektitel;
echo "Verhuizen van ".$van."<br>";
echo " naar ".$naar."<br>";
rename($van, $naar);
echo "<br><br>";
echo "<br>===================<br>";
}
}
}
}
}
$path = ".";
if ( $files = scandir( $path ) )
{
$extensions = array( "epub", "jpg", "png" );
foreach ( $files as $epub )
{
$fileExtension = strtolower( pathinfo( $epub, PATHINFO_EXTENSION ) );
if( in_array( $fileExtension , $extensions ) )
{
echo $epub . '<br />' . PHP_EOL;
}
}
}
?>
Ik heb mij er ook even tegenaan bemoeid en dit kwam eruit.
Het houdt o.a. rekening met het ontbreken van een schrijver.
Toevoeging op 14/09/2020 11:23:12:
Ik zie inmiddels dat het verwijderen van kommas en spaties in de titel moet en niet in de schrijver.
Maar goed, alles behoeft uiteindelijk verbetering.
Toevoeging op 14/09/2020 11:29:00:
Als regels 33-41 worden vervangen, lukt het beter.
Het houdt o.a. rekening met het ontbreken van een schrijver.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
$aDirectories = glob( "." . '*', GLOB_ONLYDIR );
sort( $aDirectories ); // sorteren
$extensions = array( "epub" );
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 ) ) )
{
$fileExtension = strtolower( pathinfo( $entry, PATHINFO_EXTENSION ) );
if( in_array( $fileExtension , $extensions ) )
{
echo "Gevonden: entry=" . $entry . "<br />";
$volledigenaam = $entry;
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>";
$boek = explode( "-", $entry );
echo '<pre>' . print_r( $boek, TRUE ) . '</pre>';
if ( count( $boek ) == 1 )
{
$schrijver = 'Onbekend';
$boektitel = trim( $boek[0] );
} else {
$schrijver = trim( $boek[0] );
$schrijver = str_replace( ',', '_', $schrijver );
$schrijver = str_replace( ' ', '_', $schrijver );
$boektitel = trim( $boek[1] );
}
echo "Schrijver is dan " . $schrijver . "<br />";
echo "Boektitel is dan " . $boektitel . "<br />";
// kijk of er al een mapnaam bestaat en maak anders een map aan
$nieuwemap = $schrijver;
echo "Nieuwe mapnaam is: " . $nieuwemap . "<br />";
if( !is_dir( $nieuwemap ) )
{
if ( mkdir( $nieuwemap, 0777, true) === TRUE )
{
echo "Map gemaakt met naam ".$nieuwemap."<br />";
}
} else {
echo "map ".$nieuwemap." is al aanwezig. Dus niet opnieuw aangemaakt.<br /><br />";
}
// verplaatst naar de gemaakte mapnaam
$van = $volledigenaam;
$naar= $nieuwemap . "/" . $boektitel;
echo "Verhuizen van " . $van . "<br />";
echo "naar " . $naar . "<br />";
rename( $van, $naar );
echo "<br />===================<br />";
}
}
}
}
}
?>
$aDirectories = glob( "." . '*', GLOB_ONLYDIR );
sort( $aDirectories ); // sorteren
$extensions = array( "epub" );
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 ) ) )
{
$fileExtension = strtolower( pathinfo( $entry, PATHINFO_EXTENSION ) );
if( in_array( $fileExtension , $extensions ) )
{
echo "Gevonden: entry=" . $entry . "<br />";
$volledigenaam = $entry;
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>";
$boek = explode( "-", $entry );
echo '<pre>' . print_r( $boek, TRUE ) . '</pre>';
if ( count( $boek ) == 1 )
{
$schrijver = 'Onbekend';
$boektitel = trim( $boek[0] );
} else {
$schrijver = trim( $boek[0] );
$schrijver = str_replace( ',', '_', $schrijver );
$schrijver = str_replace( ' ', '_', $schrijver );
$boektitel = trim( $boek[1] );
}
echo "Schrijver is dan " . $schrijver . "<br />";
echo "Boektitel is dan " . $boektitel . "<br />";
// kijk of er al een mapnaam bestaat en maak anders een map aan
$nieuwemap = $schrijver;
echo "Nieuwe mapnaam is: " . $nieuwemap . "<br />";
if( !is_dir( $nieuwemap ) )
{
if ( mkdir( $nieuwemap, 0777, true) === TRUE )
{
echo "Map gemaakt met naam ".$nieuwemap."<br />";
}
} else {
echo "map ".$nieuwemap." is al aanwezig. Dus niet opnieuw aangemaakt.<br /><br />";
}
// verplaatst naar de gemaakte mapnaam
$van = $volledigenaam;
$naar= $nieuwemap . "/" . $boektitel;
echo "Verhuizen van " . $van . "<br />";
echo "naar " . $naar . "<br />";
rename( $van, $naar );
echo "<br />===================<br />";
}
}
}
}
}
?>
Toevoeging op 14/09/2020 11:23:12:
Ik zie inmiddels dat het verwijderen van kommas en spaties in de titel moet en niet in de schrijver.
Maar goed, alles behoeft uiteindelijk verbetering.
Toevoeging op 14/09/2020 11:29:00:
Als regels 33-41 worden vervangen, lukt het beter.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
if ( count( $boek ) == 1 )
{
$schrijver = 'Onbekend';
$boektitel = trim( $boek[0] );
} else {
$schrijver = trim( $boek[0] );
$boektitel = trim( $boek[1] );
}
$schrijver = str_replace( ',', '_', $schrijver );
$schrijver = str_replace( ' ', '_', $schrijver );
$boektitel = str_replace( ',', '_', $boektitel );
$boektitel = str_replace( ' ', '_', $boektitel );
{
$schrijver = 'Onbekend';
$boektitel = trim( $boek[0] );
} else {
$schrijver = trim( $boek[0] );
$boektitel = trim( $boek[1] );
}
$schrijver = str_replace( ',', '_', $schrijver );
$schrijver = str_replace( ' ', '_', $schrijver );
$boektitel = str_replace( ',', '_', $boektitel );
$boektitel = str_replace( ' ', '_', $boektitel );
Bedankt voor je hulp.
Ik ben er nog niet want ik moet nu nog serie en volgnummer er uit filteren.
Dan zo'n 6000 boeken normalizeren voor een database en dan alle boeken in een schrijvermap met linken vanuit de database.
Ik heb dus nog wat te doen
Toevoeging op 14/09/2020 11:46:17:
Elk boek moet dus schrijver-=volgordenummer+serie(titel.epub o.i.d. benoemd gaan worden.
Wellicht eerst daar een script op los laten.
Peter
Ik ben er nog niet want ik moet nu nog serie en volgnummer er uit filteren.
Dan zo'n 6000 boeken normalizeren voor een database en dan alle boeken in een schrijvermap met linken vanuit de database.
Ik heb dus nog wat te doen
Toevoeging op 14/09/2020 11:46:17:
Elk boek moet dus schrijver-=volgordenummer+serie(titel.epub o.i.d. benoemd gaan worden.
Wellicht eerst daar een script op los laten.
Peter




