Lokale bestanden laden m.b.v. PHP en MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jeroen van Rooij

Jeroen van Rooij

15/04/2009 10:29:00
Quote Anchor link
Hallo,

Ik heb zo een beetje op internet gezocht of er iets te vinden is over de mogelijkheid tot lokale bestanden laden m.b.v. PHP.

Wat ik dus wil maken is een webapplicatie waar ik mijn lokale muziekbestanden kan toevoegen en d.m.v. deze webapplicatie het kan opsplitsen in groepen en dus ook muziek kan zoeken e.d.

Hierbij zal ik soieso MySQL moeten gebruiken om de url's van mijn muziek in de database te zetten, zodat ik het daaruit kan halen.

Is er een mogelijkheid om dit te maken? Zo ja, dan graag even een linkje of wat uitleg over hoe ik lokale bestanden kan laden.

mvg, Jeroen
 
PHP hulp

PHP hulp

27/11/2024 10:40:18
 
- SanThe -

- SanThe -

15/04/2009 10:53:00
Quote Anchor link
Draait de webserver ook lokaal?
 
Jeroen van Rooij

Jeroen van Rooij

15/04/2009 10:58:00
Quote Anchor link
Ja ik heb gewoon een wampserver draaien.

Ben er overigens momenteel ook achter dat je met de readdir functie bestanden kan uitlezen, echter is dit niet voldoende voor wat mijn bedoeling is.
 
Jurgen assaasas

Jurgen assaasas

15/04/2009 11:20:00
Quote Anchor link
Waarom wil je dit? Kun je dit niet beter gewoon in een XML playlist laden?
 
Dennis Mertens

Dennis Mertens

15/04/2009 11:21:00
Quote Anchor link
Ik snap je bedoeling niet echt?

Wil jij je muziek delen met de rest van de wereld of?
 
Jeroen van Rooij

Jeroen van Rooij

15/04/2009 11:30:00
Quote Anchor link
Jurgen schreef op 15.04.2009 11:20:
Waarom wil je dit? Kun je dit niet beter gewoon in een XML playlist laden?

Ik had gewoon het idee om zoiets te maken voor mezelf, aangezien ik zoveel muziek heb, zodat ik het makkelijk kan sorteren en vinden. En XML is niet echt mijn sterkste punt moet ik zeggen.
Dennis Mertens schreef op 15.04.2009 11:21:
Ik snap je bedoeling niet echt?

Wil jij je muziek delen met de rest van de wereld of?

Nee, het is puur voor mezelf, het moet gewoon lokaal draaien.
Ik heb wel is ooit zoiets gehad van winamp DJ ofzoiets. Daar kon je andere mensen naar jou radio laten luisteren, maar dit is niet wat ik nu wil maken.

Ik wil dus gewoon een webapplicatie waar ik mijn muziek kan zoeken m.b.v. een zoekfunctie van MySQL en verder dat mijn applicatie mijn muziek sorteert in mappen.

En dus als ik een nummertje heb gevonden, dat ik hier dan op klik en deze dan begint af te spelen met bijvoorbeeld WMP.
Gewijzigd op 01/01/1970 01:00:00 door Jeroen van Rooij
 
Emmanuel Delay

Emmanuel Delay

15/04/2009 18:09:00
Quote Anchor link
Vanuit het internet kan je niet zomaar aan de bestanden op de pc van de gebruiker.

Lokaal zal dat wel lukken.
Indien de muziek op de server staat, zal het ook lukken.

Lees dit eens, het is (topic van een aantal dagen geleden) vrij gelijkaardig aan jouw vraag.

http://phphulp.nl/forum/showtopic.php?id=63029&cat=1&replies=0


Je vindt daar onder andere deze link klik

Laat maar weten of dit al lukt en of er nog vragen zijn.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 
Jeroen van Rooij

Jeroen van Rooij

16/04/2009 09:15:00
Quote Anchor link
Bedankt voor je reactie, maar dat is in principe wat ik al heb.

Wat ik nu heb is een lijst met de muziekbestanden die ik uit een map haal. Verder is dit alleen nog maar een lijstje (hier heb ik nu ook al een link achter zitten.)

Echter werkt dit in IE8 wel, hij opent het muziekbestand vanuit mijn lokale harde schijf en opent deze met Quicktime. Maar op het moment dat er in de naam van het bestand bijvoorbeeld haakjes () staan, dan opent IE ze niet.

Met firefox zegt ie iets heel anders, FF zegt het volgende: "Firefox weet niet hoe het dit adres moet openen, omdat het protocol (e) met geen enkel programma geassocieerd is."

Met de (e) bedoelt FF mijn Harde schijf 'E:\'.

Ik ben dus een klein beetje op weg, maar het werkt in IE wel en FF niet. En dan in IE dus nog het probleem met haakjes e.d.

Iemand anders misschien nog een idee?

Hier eventueel mijn code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($handle = opendir("E:/muziek")) {
while(($read = readdir($handle)) !== false) {
$path = "E:/muziek";
if ($read != "." && $read != ".."){
?>

<a href='
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $path; echo '/'; echo $read; ?>
'>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $read ?>
</a><br>
<EMBED src="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo 'file:///'; echo $path; echo '/'; echo $read; echo $read ?>
" width=72 height=25 type=audio/mpeg volume="100%" loop="true" autostart="true"></EMBED>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
}
}

closedir($handle);
}

?>
 
Arjan Kapteijn

Arjan Kapteijn

16/04/2009 09:27:00
Quote Anchor link
Ik zou zelf gewoon een flash-playertje pakken ipv met file:/// gaan werken. Daarnaast zou ik de voorkeur geven aan een glob() ipv een opendir/readdir.

Wat ik zou doen; 'importmap' -> alle bestanden uitlezen -> alle ID3 informatie uitlezen -> opslaan in de database -> alle bestanden die uitgelezen zijn als 'hash'.mp3 netjes in een andere map opslaan.

Dan kan je leuk met je DB gaan zoeken/sorteren/overzichten/tracklists aan gaan maken. En met 1 druk op de knop 1 of meerdere mp3 bestanden in een flash-player inladen.
 
Leon Kunst

Leon Kunst

16/04/2009 09:33:00
Quote Anchor link
Leuk!

Ik ben namelijk zelf ook bezig met mijn eigen muzieksysteem, dat werkt allemaal al goed.

Wat ik kan:

- Exports van muzieklijsten naar mysql (incl metadata)

- Vervolgens, muziek titels browsen op m'n site, toevoegen aan een playlist, en een nieuwe playlist genereren.

- Aan de achterkant kan ik de muziekpartitie en eventuele sharename veranderen.

- geexporteerde muzieklijsten open ik met WMP, en hij start ze van m'n eigen pc op.


Draait als een trein!
 
Jeroen van Rooij

Jeroen van Rooij

16/04/2009 10:32:00
Quote Anchor link
Arjan Kapteijn schreef op 16.04.2009 09:27:
Ik zou zelf gewoon een flash-playertje pakken ipv met file:/// gaan werken. Daarnaast zou ik de voorkeur geven aan een glob() ipv een opendir/readdir.

Wat ik zou doen; 'importmap' -> alle bestanden uitlezen -> alle ID3 informatie uitlezen -> opslaan in de database -> alle bestanden die uitgelezen zijn als 'hash'.mp3 netjes in een andere map opslaan.

Dan kan je leuk met je DB gaan zoeken/sorteren/overzichten/tracklists aan gaan maken. En met 1 druk op de knop 1 of meerdere mp3 bestanden in een flash-player inladen.

Ik ga deze functies is even uitzoeken, bedankt voor je hulp!
Leon Kunst schreef op 16.04.2009 09:33:
Leuk!

Ik ben namelijk zelf ook bezig met mijn eigen muzieksysteem, dat werkt allemaal al goed.

Wat ik kan:

- Exports van muzieklijsten naar mysql (incl metadata)

- Vervolgens, muziek titels browsen op m'n site, toevoegen aan een playlist, en een nieuwe playlist genereren.

- Aan de achterkant kan ik de muziekpartitie en eventuele sharename veranderen.

- geexporteerde muzieklijsten open ik met WMP, en hij start ze van m'n eigen pc op.


Draait als een trein!

En hoe heb jij dit gemaakt dan als ik vragen mag?
 
Leon Kunst

Leon Kunst

16/04/2009 11:22:00
Quote Anchor link
PHP, inclusief wat Ajax.

Allereerst heb ik al mijn muziek geexporteerd naar een .csv
met behulp van (ik geloof) UltraTag

Daarna heb ik een functie geschreven die die CSV splitst, en in de database zet.
(deze functie checkt tevens of er ongeldige regels zijn, etc etc, en krijg ik mooi foutrapport van).

In het CSV bestand staat ook het lokale pad naar de mp3tjes.
De driveletter echter wordt gestript bij het importeren naar de database.
De driverletter wordt tijdens het genereren van een m3u bestand op de site weer voor het pad aangeplakt. Dit omdat mijn driverletters wel eens willen veranderen.

Indien er gekozen wordt op de site, voor een: 'Network Export' dan, wordt de sharename en pad gebruikt ipv de partitieletter.

Het toevoegen van de liedjes wordt gedaan middels ajax, deze wordt in een aparte tabel opgeslagen met je gebruikersID.

De volgorde van de liedjes die toegevoegd zijn, kun je voor het exporteren nog veranderen, ook middels ajax.

Een screenshot:

>> KLIK HIER VOOR SCREENSHOT <<
 
Jeroen van Rooij

Jeroen van Rooij

16/04/2009 11:33:00
Quote Anchor link
Ziet er erg goed uit, je houd nog van dezelfde muziek als ik ook. xD

Alleen zou ik niet weten hoe ik het zou moeten doen, zoals jij het nu beschrijft heb ik geen idee hoe ik dat ook zou kunnen, helaas.

En om verder in te gaan op het ID3 gebeuren, het ziet er naar uit dat ik ID3 nog moet installeren d.m.v. de PEAR installer, nou heb ik hier naar gezocht, maar kom er niet echt uit waar ik die nou moet vinden, heb zitten googlen, maar daar kan ik ook niks vinden.

Nu zit ik dus eigenlijk vast. Misschien is het allemaal wat te hoog gegrepen voor mij, maar toch zou ik graag hiermee verder willen.

Ook heb ik gezocht voor wat tutorials over het ID3 gebeuren, maar dat was ook weinig succes.

Leon Kunst, schrijf even een tutje voor me ^^ Haha nee grapje.

Als iemand nog enig idee heeft, graag!

EDIT: Ik ben toch even verder gegaan met kijken hoe jij dit nou hebt gedaan Leon Kunst, ik dacht van tevoren dat UltraTag een functie was in PHP, maar nu zie ik dat het een programma is.

Als ik mijn muziek nou exporteer naar een csv bestand weet ik helaas niet wat voor script ik moet schrijven om het naar de database te schrijven.

Ook weet ik niet welke onderdelen ik moet selecteren bij het exporteren naar een csv bestand.
Gewijzigd op 01/01/1970 01:00:00 door Jeroen van Rooij
 
Leon Kunst

Leon Kunst

16/04/2009 12:34:00
Quote Anchor link
Joepj, had ik het programma toch nog goed in m'n hoofd.

Allereerst, moet je het exporteren met; TABS gescheiden waarden (mp3tjes hebben namelijk wel eens een komma in de bestandsnaam, hierdoor loopt je script in't honderd.

Je moet dus exploden op de Tab ( \T )

Daarna exploden op de komma, en dan krijg je een array terug, en die pleur je in de database met behulp van een foreach



Ik heb het hele script wel thuis, maar het probleem is, dat ik daar een uitgebreide foutafhandeling in heb zitten, die geeft dan per geimporteerde regel de (eventuele) fout aan. met regelnr erbij, en het aantal foute regels geeft ie ook weer.

Zo zie je bijv:

15 regels van de 30 geimporteerd. (15 mislukt)


Als het niet noodzakelijk is, zou je een importfunctie al kunnen maken met een paar regels code.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
// Content uit het bestand halen
$content = file_get_contents('geupload.csv');
$content = explode("\n", $content);
$content = array_slice($content, 1, -1);

// Voor elke regel de volgende handelingen uitvoeren
foreach ($content as $regel)
{

    // $regel exploden op de tab
    $stuk = explode("\t", $regel);


                    $bestandsnaam = $stuk[0];
                    if ((array_key_exists(1, $stuk)) && ($stuk[1] != ''))
                    $titel = str_replace("\"", "", $stuk[1]);
                    else
                    $titel = '';
                    if ((array_key_exists(2, $stuk)) && ($stuk[2] != ''))
                    $artiest = str_replace("\"", "", $stuk[2]);
                    else
                    $artiest = '';
                    if ((array_key_exists(3, $stuk)) && ($stuk[3] != ''))
                    $album = str_replace("\"", "", $stuk[3]);
                    else
                    $album = '';
                    if ((array_key_exists(4, $stuk)) && ($stuk[4] != ''))
                    $genre = str_replace("\"", "", $stuk[4]);
                    else
                    $genre = '';
                    if ((array_key_exists(5, $stuk)) && ($stuk[5] != ''))
                    $jaar = str_replace("\"", "", $stuk[5]);
                    else
                    $jaar = 'NULL';
                    if ((array_key_exists(6, $stuk)) && ($stuk[6] != ''))
                    $tracknummer = str_replace("\"", "", $stuk[6]);
                    else
                    $tracknummer = 'NULL';
                    if ((array_key_exists(7, $stuk)) && ($stuk[7] != ''))
                    $bitrate = str_replace("\"", "", $stuk[7]);
                    else
                    $bitrate = 'NULL';
                    if ((array_key_exists(8, $stuk)) && ($stuk[8] != ''))
                    $duur = str_replace("\"", "", $stuk[8]);
                    else
                    $duur = 'NULL';
                    if ((array_key_exists(9, $stuk)) && ($stuk[9] != ''))
                    {

                        $bestandslocatie = str_replace("\"", "", $stuk[9]);
                        $bestandslocatie_zonder_drive = substr($bestandslocatie, 3);
                    }

                    else
                    $bestandslocatie_zonder_drive = '';
            
                    $insert_music_query = mysql_query("
                    INSERT INTO muziek (bestandsnaam, titel, artiest, album, genre, jaar, tracknummer, bitrate, duur, bestandslocatie, add_date)
                    VALUES (
                    '"
.mysql_real_escape_string($bestandsnaam)."',
                    '"
.mysql_real_escape_string($titel)."',
                    '"
.mysql_real_escape_string($artiest)."',
                    '"
.mysql_real_escape_string($album)."',
                    '"
.mysql_real_escape_string($genre)."',
                     "
.mysql_real_escape_string($jaar).",
                    '"
.mysql_real_escape_string($tracknummer)."',
                    '"
.mysql_real_escape_string($bitrate)."',
                    '"
.mysql_real_escape_string($duur)."',
                    '"
.mysql_real_escape_string($bestandslocatie_zonder_drive)."',
                    NOW())
                    "
);

}


?>


Kheb even wat gesloopt uit m'n script,

Ik weet niet of er hierdoor syntaxfouten in staan, want ik heb het niet getest.
Probeer maar even...

De velden moeten wel zo zijn:

Bestandsnaam,Titel,Artiest,Album,Genre,Jaar,Tracknummer,Bitrate,Duur,Bestandslocatie

dit houd in geen spatie tussen de komma's...

suc6!
Gewijzigd op 01/01/1970 01:00:00 door Leon Kunst
 
Arjan Kapteijn

Arjan Kapteijn

16/04/2009 12:42:00
Quote Anchor link
Je kunt dan beter kijken naar fgetcsv vermoed ik, maar de keuze is aan jou.

Persoonlijk zou ik liever niet met externe programmas werken omdat je dan handmatig allemaal acties moet gaan uitvoeren ipv dat je de boel lekker automatiseert.
 
Jeroen van Rooij

Jeroen van Rooij

16/04/2009 12:45:00
Quote Anchor link
Bedankt voor je reactie!

Ik ga dit alles even bekijken, mocht ik nog vragen hebben dan hoop ik ze hier te kunnen stellen.

Nogmaals bedankt!

EDIT: Je script werkt wel, alleen pakt ie alleen het laatste record van het csv bestand, de rest importeert het script niet in de database. Enig idee waar dit aan ligt?
Gewijzigd op 01/01/1970 01:00:00 door Jeroen van Rooij
 
Leon Kunst

Leon Kunst

16/04/2009 13:07:00
Quote Anchor link
De foreach werd te vroeg afgesloten,

kheb het script even aangepast.

Het sluithaakje moest onderaan...

mocht het nog niet werken, meld het dan even :)
 
Jeroen van Rooij

Jeroen van Rooij

16/04/2009 13:13:00
Quote Anchor link
Nu werkt het!
Geweldig, nu kan ik verder, alleen zal ik dalijk waarschijnlijk tegen hetzelfde probleem aanlopen als ik eerder had.

Hoe krijg ik die files geopent met bijvoorbeeld WMP? Is hier een speciale code voor nodig?
 
Leon Kunst

Leon Kunst

16/04/2009 13:22:00
Quote Anchor link
Je moet een php bestand aanroepen, waarin wat headers zitten.

hierin moet je de tabel uitlezen waarin de geselecteerde nummers staan.

Dit ziet er zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
    // Bestandsnaam genereren
    $filename = 'Muziek_-_'.date("d-m-Y");

    // Headers aanmaken
    header("Content-Type: audio/mpegurl");
    header("Content-Disposition: attachment; filename=".$filename.".m3u");

    print '#EXTM3U'."\n";


    // En dan hier zorgen dat je met behulp van bepaalde querie, het er zo uit komt te zien:
?>


Like this dus:

#EXTINF:0,11 D-Block & S-Te-Fan - Kingdom.mp3
K:\Hardstyle Top 40 2007, 2008 en 2009\September 2008\FearFm Hardstyle Top 40 09 September\11 D-Block & S-Te-Fan - Kingdom.mp3

#EXTINF:0,07 Project One - Fantasy Or Reality.mp3
K:\Hardstyle Top 40 2007, 2008 en 2009\September 2008\FearFm Hardstyle Top 40 09 September\07 Project One - Fantasy Or Reality.mp3

#EXTINF:0,03 Davide Sonar - All Of Me.mp3
K:\Hardstyle Top 40 2007, 2008 en 2009\September 2008\FearFm Hardstyle Top 40 09 September\03 Davide Sonar - All Of Me.mp3
 
Jeroen van Rooij

Jeroen van Rooij

16/04/2009 13:34:00
Quote Anchor link
Voor de zoveelste keer, bedankt!

Ik ga weer even verder knutselen haha!
 
Mitchell

Mitchell

16/04/2009 13:39:00
Quote Anchor link
Beetje offtopic, maar is dit dan vervolgens ook mogelijk met dingen anders dan muziek, zoals filmpjes etc? Zou het fijner vinden om door mijn files te surfen in mijn eigen ontworpen UI. :)
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.