Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: Edi.Pfisterer

Edi.Pfisterer (Level 2) - Jetzt verbinden

10.04.2010, aktualisiert 12.04.2010, 6980 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 ..
Neue Wissensbeiträge
Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 3 TagenWindows 71 Kommentar

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 5 TagenInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 6 TagenMicrosoft Office9 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 8 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
Windows Installation
Windows10 Home Neuinstallation - Raketentechnik
Frage von spacyfreakWindows Installation15 Kommentare

"Kannst du den Rechner von der Tante von WindowsXP auf Windows10 Home upgraden" haben sie gefragt? "Sicher, was kann ...

Utilities
Teamviewer 9.x "out of date" ??
gelöst Frage von keine-ahnungUtilities13 Kommentare

Moin at all, mein topaktueller teamviewer (alles 9.x - releases) verweigert seit heute die Arbeit und bemeckert: "the remote ...

Peripheriegeräte
PS2 Y-Kabel für Maus+Tastatur an PS2 Combo-Anschluss ASUS Prime X370-A
gelöst Frage von Windows10GegnerPeripheriegeräte11 Kommentare

Hallo, ich bin am Überlegen das o.g. Motherboard anzuschaffen. Da ich aber noch PS/2 für Maus+Tastatur benötige (bei optischen ...

Windows 10
Netzlaufwerk verschwindet (aber nur bestimmter Laufwerksbuchstabe)
gelöst Frage von survial555Windows 1010 Kommentare

Hallo, ich habe ein ganz seltsames Problem. Systemumgebung: Server 2012 R2 als DC und Windows 10 Pro als Clients ...