Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Datenträger nach MP3s durchsuchen - Inhalt inkl. MusikTitel, Dauer, Interpret, Album, Jahr, kbits, Genre in eine .mdb schreiben

Anleitung Entwicklung VB for Applications

Mitglied: Edi.Pfisterer

Edi.Pfisterer (Level 2) - Jetzt verbinden

10.04.2010, aktualisiert 12.04.2010, 6656 Aufrufe, 1 Kommentar, 1 Danke

In Anlehnung an die Anleitung der letzten Woche nun eine Abwandlung für .mdb (damit man später per asp(x) eine Website mit Suchfunktion basteln kann....

Das Vorwort nennt schon alle relevanten Ideen...
Erklärungen zur Veränderungen finden sich in dieser Anleitung...

Dieser Code stellt auch nicht der letzten Weisheit Schluss dar, sondern soll hauptsächlich dazu dienen, Teile oder den gesamten Code als Grundlage für eigene Projekte zu verwenden...

Daher hier einfach nur der Code, der - unverändert - nur für XP funktioniert...:

Welches Ergebnis erhält man durch diesen Code?
Es wird ein Gesamtes Laufwerk bzw. bestimmter Ordner inkl. aller Unterordner auf Dateien durchsucht, die mit Eurem Musikplayer (in meinem Fall Winamp) standardmäßig geöffnet werden.
(m3u - Dateien werden von der Suche ausgespart).
Dann wird eine Datenbank erstellt, die 2 Tabellen enthält.
In der 1. Tabelle befinden sich die Ordnernamen (da ich meine Alben jeweils in eigene Unterordner gespeichert habe)
In der 2. Tabelle befinden sich alle Musiktitel inkl. Dauer, Interpret, Album, Jahr, kbits, Genre.
Zur späteren Verknüpfung der beiden Tabellen haben die jeweiligen Titel den selben Indexwert, wie ihn der Ordner hat.
Wenn im m3-Tag das Album bzw. der Interpret fehlt, wird der Ordner ausgelesen und entsprechendes in die Tabelle eingetragen
(bei mir nennen sich alle Ordner nach folgendem Muster:
LW:\Musik\A\#Allman Brothers\cd_Allman Brothers - Idlewild South

Was ist anzupassen?
Bei Verwendung von XP: NICHTS!

Bei Verwendung von Vista / 7 folgenden Teil

id = indexwert
Titel = objFolder.GetDetailsOf(strFileName, 0)
Dauer = objFolder.GetDetailsOf(strFileName, 21)
Interpret = objFolder.GetDetailsOf(strFileName, 16)
Album = objFolder.GetDetailsOf(strFileName, 17)
Jahr = objFolder.GetDetailsOf(strFileName, 18)
bit = objFolder.GetDetailsOf(strFileName, 22)
Genre = objFolder.GetDetailsOf(strFileName, 20)

nach dieser Liste...

Ordner_in_mdb.hta

01.
<head> 
02.
<meta name="author" content="Edi Pfisterer aka urobe73_administrator.de"> 
03.
<meta name="generator" content="Ulli Meybohms HTML EDITOR"> 
04.
<title>Edis Dateiliste 2 Access</title> 
05.
<HTA:APPLICATION 
06.
SCROLL="yes" 
07.
SINGLEINSTANCE="yes" 
08.
WINDOWSTATE="normal" 
09.
10.
</head> 
11.
<script language="VBScript"> 
12.
'Const myDB = "a2000.mdb" 
13.
 
14.
Sub CreateNewMDB(FileName, Format) 
15.
  Dim Engine 
16.
  Set Engine = CreateObject("DAO.DBEngine.36") 
17.
  Engine.CreateDatabase FileName, ";LANGID=0x0409;CP=1252;COUNTRY=0", Format 
18.
End Sub 
19.
 
20.
function dbanlegen(mydb) 
21.
CreateNewMDB mydb, 64 
22.
end function 
23.
 
24.
function TabelleAnlegen(mydb) 
25.
 
26.
on Error resume next 
27.
    Set Conn = CreateObject("ADODB.Connection") 
28.
 
29.
    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & myDb 
30.
 
31.
  '  conn.Execute "DROP TABLE Alben" 
32.
 
33.
    Conn.Execute ("CREATE TABLE Alben(" & _ 
34.
            "Id INTEGER      NOT NULL," & _ 
35.
            "Name   VARCHAR(255)  NOT NULL)") 
36.
 
37.
    Conn.Execute ("CREATE TABLE tbMusiktitel(" & _ 
38.
            "MusiktitelId INTEGER  ," & _ 
39.
            "Musiktitel   VARCHAR(255)  NOT NULL," & _ 
40.
            "Dauer   VARCHAR(255) ," & _ 
41.
            "Interpret   VARCHAR(255) ," & _ 
42.
            "Album   VARCHAR(255) ," & _ 
43.
            "Jahr   VARCHAR(255) ," & _ 
44.
            "kbits   VARCHAR(255) ," & _ 
45.
            "Genre  VARCHAR(255) )") 
46.
 
47.
    conn.Close 
48.
 
49.
end function 
50.
 
51.
function dbEintrag1(id,Titel,Dauer,Interpret,Album,Jahr,bit,Genre,Ordnername,mydb) 
52.
 
53.
on Error resume next 
54.
Titel = replace(Titel,"'"," ") 
55.
Interpret = replace(Interpret,"'"," ") 
56.
Album = replace(Album,"'"," ") 
57.
Genre = replace(Genre,"'"," ") 
58.
 
59.
    Set Conn = CreateObject("ADODB.Connection") 
60.
 
61.
    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & myDb 
62.
    sql ="INSERT INTO [tbMusiktitel] (MusikTitelid, MusikTitel, Dauer, Interpret, Album, Jahr, kbits, Genre) VALUES (" & id & ",'" & Titel & "','" & Dauer & "','" & Interpret & "','" & Album & "','" & Jahr & "','" & bit & "','" & Genre & "')" 
63.
 
64.
   conn.Execute (sql) 
65.
 '   MsgBox sql 
66.
 
67.
    conn.Close 
68.
 
69.
end function 
70.
 
71.
function dbEintrag(id,Album,mydb) 
72.
 
73.
on Error resume next 
74.
Album = replace(Album,"'"," ") 
75.
    Set Conn = CreateObject("ADODB.Connection") 
76.
 
77.
    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & myDb 
78.
    sql ="INSERT INTO [Alben] (id, Name) VALUES (" & id & ",'" & Album & "')" 
79.
 
80.
    conn.Execute (sql) 
81.
   ' MsgBox sql 
82.
 
83.
    conn.Close 
84.
 
85.
end function 
86.
 
87.
 
88.
 
89.
 
90.
 
91.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
92.
kopfzeile = 0 
93.
indexwert = 0 
94.
function meineVids(pfad,dateiname) 
95.
mydb = replace(dateiname,"csv","mdb") 
96.
        if kopfzeile = 0 then 
97.
        call dbAnlegen(mydb) 
98.
        call TabelleAnlegen(mydb) 
99.
        set logbuch1 =objFSO.opentextfile(dateiname, 2, true,0) 
100.
        logbuch1.write "Index;Ordnername;Musiktitel;Interpret;Album;Jahr;Dauer;bit;Genre" 
101.
        logbuch1.close 
102.
        kopfzeile = 1 
103.
        end if 
104.
 
105.
            If radiobutton(0).Checked Then 
106.
                showall = "ja" 
107.
            End If 
108.
            If radiobutton(1).Checked Then 
109.
                showall = "nein" 
110.
            End If 
111.
 
112.
        Set objFolder = objFSO.GetFolder(pfad) 
113.
        Set colSubfolders = objFolder.Subfolders 
114.
 
115.
        For Each objSubfolder in colSubfolders 
116.
       on Error resume next 
117.
                 ordnerzeichen = ordner_zeichen.value 
118.
                 vollername = objFSO.GetAbsolutePathName(objSubfolder) 
119.
                 indexwert = indexwert+1 
120.
                 if showAll = "ja" then 
121.
 
122.
                    ausgabe2 = indexwert & ";" & left(vollername,ordnerzeichen) & punktaln(vollername,ordnerzeichen) & vbcrlf 
123.
 
124.
                 end if 
125.
                 ausgabe1 = ausgabe2 & detail(vollername, showall, indexwert,mydb) 
126.
 
127.
                set logbuch1 =objFSO.opentextfile(dateiname, 8, true,0)  ' 8 zum anfügen 
128.
                logbuch1.write ausgabe1 
129.
                logbuch1.close 
130.
                dateinameneu = dateiname 
131.
 
132.
           call dbEintrag(indexwert, vollername,mydb) 
133.
         call meineVids(vollername,dateinameneu) 
134.
        Next 
135.
 
136.
end function 
137.
 
138.
function punktaln(ordnername, anzeigezeichen) 
139.
        anzeigezeichen = anzeigezeichen+1   'damit er checkt, dass anzeigezeichen eine zahl ist... 
140.
        if len(ordnername) >=  anzeigezeichen then 
141.
        anzeige = "... " 
142.
        end if 
143.
        punktaln = anzeige 
144.
end function 
145.
 
146.
function Detail(ordnername, lang, indexwert, mydb) 
147.
        dateitypen = split(Dateityp.value,";") 
148.
 
149.
        showAll = lang 
150.
            If urlbutton(0).Checked Then 
151.
                link = "ein" 
152.
            End If 
153.
            If urlbutton(1).Checked Then 
154.
                link = "aus" 
155.
            End If 
156.
        durchlauf = 1 
157.
 
158.
        Dim arrHeaders(34) 
159.
        Set objShell = CreateObject("Shell.Application") 
160.
        Set objFolder = objShell.Namespace(ordnername) 
161.
        For i = 0 to 33 
162.
            arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i) 
163.
        Next 
164.
        For Each strFileName in objFolder.Items 
165.
                ordnerzeichen = ordner_zeichen.value 
166.
                dateizeichen = datei_zeichen.value 
167.
 
168.
            for i = 0 to UBound(dateitypen) 
169.
                                if (instr(1, objFolder.GetDetailsOf(strFileName, 2), dateitypen(i), 1) >= 1) OR _ 
170.
                (instr(1, strFileName, dateitypen(i), 1) >= 1)  then 
171.
                nemmas = 1 
172.
                end if 
173.
            next 
174.
 
175.
             if nemmas = 1 then 
176.
                if durchlauf = 1 AND showAll <> "ja" then 
177.
 
178.
                        feedback = feedback & vbcrlf & indexwert & ";" & left(ordnername,ordnerzeichen) & punktaln(ordnername,ordnerzeichen) & vbcrlf 
179.
                        feedback_DVD = feedback 
180.
 
181.
                        durchlauf = 2 
182.
                end if 
183.
 
184.
                     id = indexwert 
185.
                    Titel = objFolder.GetDetailsOf(strFileName, 0) 
186.
                    Dauer = objFolder.GetDetailsOf(strFileName, 21) 
187.
                    Interpret = objFolder.GetDetailsOf(strFileName, 16) 
188.
                    Album = objFolder.GetDetailsOf(strFileName, 17) 
189.
                    Jahr = objFolder.GetDetailsOf(strFileName, 18) 
190.
                    bit = objFolder.GetDetailsOf(strFileName, 22) 
191.
                    Genre = objFolder.GetDetailsOf(strFileName, 20) 
192.
 
193.
                    if len(Album) <= 2 then 
194.
                            beginnAlbum = instr(Ordnername,"-")+1 
195.
                            Album = LTRIM(mid(Ordnername,beginnAlbum,200)) 
196.
                    end if 
197.
 
198.
                    if len(Interpret) <= 2 then 
199.
                         BeginnInterpret = instrRev(Ordnername,"\")+1 
200.
                         EndeInterpret = instr(Ordnername,"-")-1 
201.
                         Interpret = TRIM(mid(Ordnername,beginnInterpret,EndeInterpret - BeginnInterpret)) 
202.
                         Interpret = Replace(Interpret,"cd_","") 
203.
                    end if 
204.
 
205.
 
206.
                feedback2 = id & ";" & " ;" & left(Titel ,dateizeichen) _ 
207.
                    & punktaln(Titel ,dateizeichen) & "; " _ 
208.
                    & Dauer& "; " _ 
209.
                    &  Interpret & ";" &  Album & ";" _ 
210.
                    & Jahr & ";" & bit & ";" _ 
211.
                    & Genre & ";" 
212.
 
213.
                    if link = "ein" then 
214.
                    feedback3 = Chr(34) & "=hyperlink(" & Chr(34)  & Chr(34)& ordnername & "\" & Titel _ 
215.
                    & Chr(34)  & Chr(34) & ";"  & Chr(34)  & Chr(34) & "klick " &  Chr(34)  & Chr(34)& ")"  & Chr(34) 
216.
                    end if 
217.
 
218.
                    if instr(1, objFolder.GetDetailsOf(strFileName, 0),"m3u", 1) =0 then 
219.
                    feedback = feedback & feedback2 & feedback3 & vbcrlf 
220.
 
221.
 
222.
 
223.
                    call dbeintrag1(id,Titel,Dauer,Interpret,Album,Jahr,bit,Genre,Ordnername, mydb) 
224.
 
225.
                    end if 
226.
 
227.
                     if instr(1, objFolder.GetDetailsOf(strFileName, 0),"vob", 1)>=1 then feedback = feedback_DVD & "ist eine DVD" & vbcrlf 
228.
 
229.
            end if 
230.
            nemmas = 0 
231.
        Next 
232.
 
233.
        Detail = feedback 
234.
end function 
235.
 
236.
Sub Aufgabe1 
237.
 
238.
        woissndes = pfad.value 
239.
        dateiname = replace(woissndes,"\","_") 
240.
        dateiname = replace(dateiname,":","_") 
241.
        dateiname = dateiname & "_" & dateityp.value & ".csv" 
242.
 
243.
        call meineVids(woissndes,dateiname) 
244.
 
245.
         DataArea.InnerHTML = "<a href='" & dateiname & "'>CSV</a> und " & "<a href='" & replace(dateiname,"csv","mdb") & "'>MDB</a>   erfolgreich angelegt" 
246.
 
247.
 
248.
End Sub 
249.
 
250.
</script> 
251.
 
252.
 
253.
<body bgcolor=#FAF8AF> 
254.
<font face=verdana> 
255.
Pfad: <input type="Text" name="pfad" value="C:\" size="" maxlength=""><br><br> 
256.
 
257.
 
258.
Was erscheint als Typ, wenn man den Mauszeiger über eine gesuchte Datei bewegt: <input type="Text" name="Dateityp" value="audio" size="25" maxlength="20"> <br> 
259.
<font size = 1> 
260.
(es können auch mehrere Typen, durch <b>;</b> getrennt, angegeben werden!)<br> 
261.
Beispiele: Irfan;Windows Media;excel;word;winamp ...</font><br><br> 
262.
 
263.
 
264.
Die Anzeige der Ordner wird auf <input type="Text" name="ordner_zeichen" value="200" size="" maxlength=""> eingeschränkt!<br><br> 
265.
 
266.
Die Anzeige der Dateinamen wird auf <input type="Text" name="datei_zeichen" value="200" size="" maxlength=""> eingeschränkt!<br><br> 
267.
 
268.
Sollen auch Ordner angezeigt werden, die den gewünschten Dateityp NICHT enthalten? 
269.
Ja <input type="radio" name="radiobutton" value="0"> Nein <input type="radio" name="radiobutton" value="1" checked><br><br> 
270.
Sollen in der .csv-Datei Links zu den Dateien erscheinen? 
271.
Ja <input type="radio" name="urlbutton" value="0"> Nein <input type="radio" name="urlbutton" value="1" checked><br><br> 
272.
<br> 
273.
 
274.
 
275.
<input type="button" value="Datei anlegen" name="run_button" onClick="Aufgabe1"><br> 
276.
<font size = 1>(Die Verarbeitung kann mehrere Minuten dauern... Bitte um etwas Geduld)</font> 
277.
 
278.
<br><br><br> 
279.
<b> 
280.
<div id="dataarea"></div> 
281.
</b> 
282.
</font> 
283.
</body>
Anmerkungen oder Fragen sind wie immer herzlich willkommen...

lg
Edi
Mitglied: diekoenigs
20.04.2010 um 08:35 Uhr
Sehr geile Idee und sieht gut aus.
Habs zwar noch nicht versucht, werds bei Gelegenheit tun.

OT: Am coolsten find ich den Teil des Codes:

woissndes = pfad.value

:D
Eindeutig eindeutig..
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Exchange Server
Inhalt von Postfächern in Exchange löschen (9)

Frage von m.reeger zum Thema Exchange Server ...

Windows Server
gelöst SQL-Server Datenbanksicherung inkl. Benutzerberechtigungen dafür? (4)

Frage von 1410640014 zum Thema Windows Server ...

Hyper-V
gelöst Hyper-V gleiche Datenträger-ID bzw. Volume-ID (10)

Frage von Bernd16 zum Thema Hyper-V ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...