Location Report 1.2 [MM2]
Location Report 1.2 [MM2]
This is a custom script designed by Hank. It lists all the tracks within the selected folder and subfolders. First click on the Location or My Computer node of the folder and then click "File, Create Report, Location Report". An HTML file will be created containing the list.
Download my scripts at my own MediaMonkey fansite.
All the code for my website and scripts is safely backed up immediately and for free using Dropbox.
All the code for my website and scripts is safely backed up immediately and for free using Dropbox.
Code: Select all
'
' MediaMonkey Script
'
' NAME: LocationReport 1.2
'
' AUTHOR: trixmoto (http://trixmoto.net)
' DATE : 04/06/2007
'
' INSTALL: Copy to Scripts directory and add the following to Scripts.ini
' Don't forget to remove comments (') and set the order appropriately
'
' FIXES: Added stylesheet to align headers left
' Added folder name to empty rows
' Added track numbers to the first column
'
' [LocationReport]
' FileName=LocationReport.vbs
' ProcName=LocationReport
' Order=100
' DisplayName=&Location Report
' Description=Location Report
' Language=VBScript
' ScriptType=1
'
Option Explicit
Sub LocationReport
'get location
Dim cur : Set cur = SDB.MainTree.CurrentNode
If cur Is Nothing Then
Call SDB.MessageBox("LocationReport: No node is selected.",mtError,Array(mbOk))
Exit Sub
End If
'check location
Dim loc : loc = ""
Select Case cur.NodeType
Case 64
loc = SDB.MainTree.CurrentNode.Path&"%"
Case 62
loc = Mid(SDB.MainTree.CurrentNode.Path,2)&"%"
Case Else
Call SDB.MessageBox("LocationReport: Selected node is ("&cur.NodeType&") not a suitable type.",mtError,Array(mbOk))
Exit Sub
End Select
'count tracks
Dim dit : Set dit = SDB.Database.OpenSQL("SELECT Count(1) FROM Songs WHERE Songs.SongPath LIKE '"&loc&"'")
If dit.ValueByIndex(0) = 0 Then
Call SDB.MessageBox("LocationReport: Selected node contains no tracks.",mtError,Array(mbOk))
Exit Sub
End If
'select path
Dim dlg : Set dlg = SDB.CommonDialog
dlg.DefaultExt = ".htm"
dlg.Filter = "Report (*.htm)|*.htm"
dlg.Flags = cdlOFNOverwritePrompt + cdlOFNHideReadOnly + cdlOFNNoChangeDir
dlg.InitDir = SDB.IniFile.StringValue("Scripts","LocationReportFile")
dlg.ShowSave
If (dlg.Ok = False) Or (dlg.FileName = "") Then
Exit Sub
End If
SDB.IniFile.StringValue("Scripts","LocationReportFile") = dlg.FileName
'create report
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim htm : Set htm = fso.CreateTextFile(dlg.FileName,True)
htm.WriteLine "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">"
htm.WriteLine "<html><head><title>Location Report</title><link rel=Stylesheet href='report.css' type='text/css'></head><body>"
htm.WriteLine "<h1>Location Report</h1><table width=100%><tr><th>Folder Name</th><th>Artist Name</th><th>Track Name</th><th>Time</th></tr>"
'get tracks
Dim dic : Set dic = CreateObject("Scripting.Dictionary")
Dim tmp : tmp = ""
Set dit = SDB.Database.OpenSQL("SELECT Songs.ID,Songs.SongPath,Artists.Artist,Songs.SongTitle,Songs.SongLength FROM Songs LEFT JOIN Artists ON Songs.IDArtist = Artists.ID WHERE Songs.SongPath LIKE '"&loc&"' ORDER BY Artists.Artist")
While (Not dit.EOF)
tmp = Left(dit.StringByIndex(1),InStrRev(dit.StringByIndex(1),"\"))
tmp = Left(tmp,Len(tmp)-1)
loc = "<tr><td>##</td><td>"&dit.StringByIndex(2)&"</td><td>"&dit.StringByIndex(3)&"</td><td>"&gettime(dit.ValueByIndex(4)/1000)&"</td></tr>"
If dic.Exists(tmp) Then
dic.Item(tmp) = dic.Item(tmp)&loc
Else
dic.Item(tmp) = loc
End If
dit.Next
WEnd
'sort folders
Dim arr : arr = dic.Keys
Dim i : i = 0
Dim b : b = False
Do
b = True
For i = 0 To UBound(arr)-1
If arr(i+1) < arr(i) Then
b = False
tmp = arr(i)
arr(i) = arr(i+1)
arr(i+1) = tmp
End If
Next
Loop Until b
'write report
For i = 0 To UBound(arr)
tmp = Mid(arr(i),InStrRev(arr(i),"\")+1)
Dim j : j = 0
loc = dic(arr(i))
While InStr(loc,"##") > 0
j = j + 1
loc = Replace(loc,"##",lead2(j),1,1)
WEnd
htm.WriteLine "<tr><td colspan=4>"&tmp&"</td></tr>"&loc
Next
htm.WriteLine "</table><p>Created using 'Location Report' script by <a href='http://trixmoto.net'>Trixmoto</a>.</p></body></html>"
htm.Close
'show report
If SDB.MessageBox("LocationReport: Report complete, display now?",mtConfirmation,Array(mbYes,mbNo)) = mrYes Then
Dim wsh : Set wsh = CreateObject("WScript.Shell")
Call wsh.Run(Chr(34)&dlg.FileName&Chr(34),1,0)
End If
End Sub
Function gettime(sec)
Dim min
min = 0
sec = Int(sec)
Do While sec > 59
sec = sec - 60
min = min + 1
Loop
If sec < 10 Then
gettime = min&":0"&sec
Else
gettime = min&":"&sec
End If
End Function
Function lead2(num)
If num < 10 Then
lead2 = "0"&num
Else
lead2 = ""&num
End If
End Function
Download my scripts at my own MediaMonkey fansite.
All the code for my website and scripts is safely backed up immediately and for free using Dropbox.
All the code for my website and scripts is safely backed up immediately and for free using Dropbox.
-
- Posts: 2153
- Joined: Fri Jan 14, 2005 1:45 am
- Location: Germany
- Contact:
"SongList Report"?
It lists all of the tracks in a certain folder and it's subfolders, so I guess it primarily depends on your file structure.
It lists all of the tracks in a certain folder and it's subfolders, so I guess it primarily depends on your file structure.
Download my scripts at my own MediaMonkey fansite.
All the code for my website and scripts is safely backed up immediately and for free using Dropbox.
All the code for my website and scripts is safely backed up immediately and for free using Dropbox.