database van liedjes op pc

Status
Niet open voor verdere reacties.

jensmens

Gebruiker
Lid geworden
16 aug 2010
Berichten
13
hallo,

ik ben een database aan het maken die alle liedjes op mijn harde schijf bevat, maar ik zou dit graag automatisch laten gebeuren.
ik kan al de *.mp3 files uit 1 map in de database steken, maar ik vraag mij hoe ik al mijn mappen in 1 keer kan 'scannen' naar *.mp3 files..en hoe ik die dan automatisch in de database kan steken?

bedankt!
 
Je kunt een recursieve loop gebruiken die elke map naloopt op files. Is meer een PHP vraag though. Zoiets:

PHP:
$basedir = 'C:\\'; // je basis map, alles hierbinnen wordt gescand

function recursive_readdir( $basedir, $path_to = '' ) {
  $dir = opendir ( $path_to . $basedir );
  while ( $file = readdir( $dir ) ) {
    if ( $file == '.' || $file == '..' ) { 
      // ignore
      continue;
    }
    if ( is_dir ( $path_to . $basedir . $file ) {
      // het is een directory; dus deze gaan we ook scannen
      recursive_readdir( $file, $path_to );
  }
  elseif( substr( $file , 0, - 4 ) == '.mp3' ) {
    // toevoegen aan DB, hier heb je ws al code voor.
  }
}

Niet getest maar dit is ongeveer het idee...
 
helemaal niet gedacht dat dit met php moet/kan;
ik zoek even verder in de richting van php

bedankt voor de snelle post! :)
 
zeer mooi programma! het is al in gebruik :)
maar toch blijf ik zoeken hoe ik het kan doen :)

Thx!
 
Maar MediaMonkey doet toch wat je vraagt:

ik ben een database aan het maken die alle liedjes op mijn harde schijf bevat, maar ik zou dit graag automatisch laten gebeuren.
ik kan al de *.mp3 files uit 1 map in de database steken, maar ik vraag mij hoe ik al mijn mappen in 1 keer kan 'scannen' naar *.mp3 files..en hoe ik die dan automatisch in de database kan steken?
 
ja, en ik vind het ook een interessant en handig programma, maar ik heb net mijn 1e jaar informatica achter de rug op school en vind het een uitdaging om dat zelf te kunnen :)

thx
 
Laatst bewerkt:
cmd prompt:

c:
cd \
dir /s /d *.mp3 >almijnmp3.txt

vlakke 1-dimentionale database met alle mp3 bestanden op schijf C: . :P

Welk element wil niet lukken om in de database te krijgen?
 
Laatst bewerkt:
simpel, maar effectief is da:)
maar wat ik wil is eigenlijk het volgende:);

ik wil een database aanmaken/en automatisch laten updaten van elk liedje op mijn pc, dus als er een nieuw bijkomt moet het in de database gevoegd worden. daarnaast wil ik met VB.Net een listview met de gegevens van elk liedje (artiest ,titel,pad,lengte,grootte).
vervolgens zou ik dan een zoekfunctie maken die dan in de database filtert. :)

die zoekfunctie lijkt me op zich geen struikelblok maar het vullen van de database geeft mij problemen. met het bovenstaande php script vind ik ook geen oplossing..:o

ik heb ook al een dll-bestand die de gegevens van een liedje kan ophalen (uit de eigenschappen). dit bestand heb ik op internet gevonden.

thx:)
 
welke database wil je gebruiken en hoe wil je 'm vullen (met welke taal)

In principe kun je met EXCEL en C# of VB.net dit redelijk makkelijk uitvoeren. Excel kan namelijk worden benaderd met SQL voor het doen van queries (mocht dat het doel zijn), terwijl het makkelijk in algemeen gebruik is en om mee te spelen.

Ik ben zelf met een EXCEL/C# combi begonnen, omdat de .XLS ook gewoon te openen is en je zodoende makkelijk in je "database" kan kijken om te debuggen etc.

Dit vereist natuurlijk wel een office licentie en, als je meer dat 65000 lines in je database wil hebben, minimaal office 2007

Maak een lijst van al je mp3's (je kunt dat dir-commando zoals gegeven in mijn vorige post misbruiken, of de interne api's van MS)
haal de tags op
doe 'insert's op je database (unique only)
 
ik zou het graag doen met een MS SQL server 2005 database, en die dan oproepen via VB.NET, en dan in VB.Net een zoekfunctie aanmaken die de database doorzoekt en het resultaat weergeeft in een listview/gridview :)

ik heb een .txt bestand gemaakt van mijn muziek via het bovenstaande commando:, en dat ziet er zo uit:
Code:
 Map van H:\Mijn muziek\Adamski

Killer (Ft. Seal).mp3   
               1 bestand(en)        6.008.704 bytes

 Map van H:\Mijn muziek\Adele

Adele - Hometown Glory.mp3   
Chasing Pavements.mp3        
               2 bestand(en)        8.914.546 bytes

met excel probeerde ik het ook te doen, maar ik krijg nooit de titel en artiest etc in de juiste kolom..
 
ah, klein foutje zie ik. je wil deze hebben:

dir /s /b *.mp3 (niet /d)

MS SQL is prima. Mijn voorbeeld met excel had ook betrekking op excel gebruiken ipv MSSQL

deze code bijv:

Code:
                bool fs = true; //FS flag used later to determine succesful read
                DataTable readtable = new DataTable();
                string conn;
                OleDbCommand tcm = new OleDbCommand();
                conn = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=" + fn + ";" + "Extended Properties=Excel 8.0;"; //connection string
                OleDbConnection connection = new OleDbConnection(conn);
                OleDbDataAdapter DA = new OleDbDataAdapter();
 
                try
                {
                    tcm.CommandText = "select * from [Summary LWS$b39:e55]"; //database command to run on selected range of cells from specified sheet
                    tcm.Connection = connection;
                    DA.SelectCommand = tcm;
                    DA.Fill(readtable); //load result of query into "readtable"
                }
                catch (Exception ex)
                {
                    //file does not have a "Summary LWS" sheet or range is out of bounds, assume other XLfile
                    connection.Close();
                    fs=false;
                }
                if (fs) {data afhandelen........}

voert de SQL query: "select * from [Summary LWS$b39:e55]" uit op de excel file 'fn'
Indien je de connection string aanpast kun je ook een MS-SQL database openen. Dit maakt gebruik standaard libraries, dus dit zou ook van toepassing zijn op vb.net
 
de gegevens in excel opslaan is mij bij deze net gelukt :)
de bovenstaande code heb ik ingevoerd in vb.net en de syntax aangepast, nu ik het programma wil uitvoeren kan hij niet verbinden denk ik..
ik geef mijn code mee:

Code:
Dim fs As Boolean = True
        Dim readtable As DataTable = New DataTable()
        Dim conn As String
        Dim tcm As OleDb.OleDbCommand = New OleDb.OleDbCommand()

        conn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + "C:\\Users\\Jens\\Documents\\Muziek.xlsx" + ";" + "Extended Properties=Excel 8.0;"

        Dim connection As OleDb.OleDbConnection = New OleDb.OleDbConnection(conn)
        Dim DA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter()

        Try

            tcm.CommandText = "select * from [Muziek$A01:e55]"
            tcm.Connection = connection
            DA.SelectCommand = tcm
            DA.Fill(readtable)
        Catch ex As Exception
            MsgBox("verbinding")
        End Try

zoals gezegd komt de msgbox met de melding tevoorschijn.
als ik het programma uitvoer zonder try-catch krijg ik een fout bij 'DA.Fill(readtable)' : 'de externe tabel heeft niet de verwachte indeling'
mijn excel werkblad ziet er zo uit:
Code:
ACDC	ACDC - Whole Lotta Rosie.mp3
ACDC	ACDC - you shook me all night long.mp3
Ace of Base	Ace Of Base - All That She Wants.mp3
Ace of Base	Ace Of Base - I Saw The Sign.mp3


wat kan hier het probleem zijn?:)
thx!
 
Een aantal punten die mogelijk invlode hebben:

*De connectie verwacht dat de bovenste lijn (1) de headers heeft voor de tabel. tabelnamen mogen geen spaties e.d. bevatten.
dus regel 1 moet bevatten : <Artiest > <nummer> oid

*heeft VB de dubbele backslashes nodig voor escaping? (connect string)

*extended properties staat op excel 8. normaal is dit geen probleem, indien je speciale extended features wil gebruiken is dit waarschijnlijk 12/13 afhankelijk van je office versie (excel 8.0 = office 2000 voor backwards compat)
 
het 2e puntje had ik over het hoofd gezien, dit is inderdaad niet de bedoeling.
punt 1 heb ik geprobeerd maar hij geeft steeds dezelfde foutmelding..
bij het derde weet ik niet onmiddellijk wat je wilt bedoelen. ik werk met office 2007 ..:)
 
oké die link lijkt wel iets, ik ga aan de hand van jullie tips wat verder zoeken!:)

bedankt voor de moeite!:)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan