by Grrdi » Mon Feb 15, 2016 5:46 am
Erzeuge eine Playliste deren Einträge bei guten Bewertungen mehrfach vorkommen
Anbei ein AutoHotKey-Skript welches eine solche Playliste aus den in MediaMonkey selektierten Songs erzeugt:
(zusätzlich kann es optional noch MP3-Player mit der Auswahl der Songs bestücken, unter Beibehaltung der original Ordnerstruktur.) PS. AutoHotKey muss dazu nicht installiert werden, wenn man sich eine aktuelle AutoHotKey.exe besorgt
http://ahkscript.org und diese umbenennt, sodass sie gleichnamig ist wie das Skript. Nun kann man die Exe ohne Installation starten.
Code: Select all
MM := ComObjCreate("SongsDB.SDBApplication")
Clipboard:="Genre:yZb Genre:-Doppelt Genre:-Spoken Genre:-Medley Genre:-NotShuffle"
MsgBox Im Clipboard ist ein Vorschlag fuer das MediaMonkey Suchfeld!
InputBox,AbRating,Bewertung,Ab welcher Bewertung `n0 - 9 (wobei 2 einem * entpricht) `nsoll in die Playlist uebernommen werden?,,,,,,,,1
if ErrorLevel
ExitApp
if AbRating is not Integer
{
MsgBox 0 bis 9 erwartet`nSkriptende
ExitApp
}
Markiert:=MM.CurrentSongList.count
if (Markiert=0)
MsgBox Bitte die Songs in MediaMonkey selektieren.
else
MsgBox, 262180, Songliste, ist die gewuenschte Songliste (%Markiert% Songs) in MediaMonkey selektiert?
IfMsgBox,No
ExitApp
MsgBox, 262436, Song-Kopien, sollen die selektierten Songs auch kopiert werden? ...
IfMsgBox,Yes
{
SongsKopieren:=true
InputBox,ZielpathDir,Zielpfad,wohin soll kopiert werden?,,,,,,,,C:\temp\SongKopieAb%AbRating%
IfNotExist,%ZielpathDir%
{
FileCreateDir,%ZielpathDir%
IfNotExist,%ZielpathDir%
{
MsgBox, 262160, Zielpfad, Der Zielpfad %ZielpathDir% konnte nicht erstellt werden!`n`nSkriptende
ExitApp
}
}
}
else
SongsKopieren:=false
BasisQuellDirBekannt:=false
ErstAnzeige:=true
Markiert:=MM.CurrentSongList.count
Loop % Markiert
{
i:=A_Index-1
; if(SubStr(i,-1)="00")
if SongsKopieren
{
QuellPath:=MM.CurrentSongList.Item(i).Path
if not BasisQuellDirBekannt
{
if (BasisQuellDir="")
{
QuellPathLast:=MM.CurrentSongList.Item(Markiert-1).Path
Loop % StrLen(QuellPath)
{
if(SubStr(QuellPath,A_Index,1)<>SubStr(QuellPathLast,A_Index,1))
{
DiffPos:=A_Index
break
}
}
BasisQuellDirVorgekuerzt:=substr(QuellPath,1,DiffPos-2)
SplitPath,BasisQuellDirVorgekuerzt,,BasisQuellDirVorgekuerztVater
Clipboard:=BasisQuellDirVorgekuerztVater
FileSelectFolder,BasisQuellDir,*%BasisQuellDirVorgekuerzt%,3,Basis-Ordner`nzur Erzeugung der relativen Playlist. Vorschlag: %BasisQuellDirVorgekuerzt%`nAchtung: pruefen ob Ordner drueber %BasisQuellDirVorgekuerztVater% (Clipboard)
; InputBox,BasisQuellDir,BasisQuellDir,von rechts loeschen?,,,,,,,,%BasisQuellDirVorgekuerzt%
IfNotExist,%BasisQuellDir%
{
MsgBox, 262160, BasisQuellDir, BasisQuellDir %BasisQuellDir% existiert nicht!`n`nSkriptende
ExitApp
}
else
BasisQuellDirBekannt:=true
}
}
RelPath:=SubStr(QuellPath,StrLen(BasisQuellDir)+2)
ZielPath=%ZielpathDir%\%RelPath%
SplitPath,ZielPath,,ZielDir
IfNotExist %ZielDir%
{
FileCreateDir %ZielDir%
IfNotExist %ZielDir%
MsgBox, 262192, Fehler, %ZielDir% konnte nicht erzeugt werden.
}
if ErstAnzeige
{
; MsgBox %QuellPath%`n%ZielPath%
MsgBox, 262145, Zur Kontrolle, %QuellPath%`n`n%ZielPath%
IfMsgBox,Cancel
ExitApp
}
if(not instr(QuellPath,BasisQuellDir))
{
MsgBox Der Basisordner %BasisQuellDir% ist nicht in %QuellPath% enthalten. Vorschlag: einen Ordner naeher der Wurzel verwenden.`nSkriptende
ExitApp
}
FileCopy,%QuellPath%,%ZielPath%
IfNotExist,%ZielPath%
MsgBox, 262192, Fehler, %ZielPath% konnte nicht erzeugt werden.
else
ErstAnzeige:=false
}
if(SubStr(A_Index,-3,1)-SubStr(A_Index,-2,1) = SubStr(A_Index,-1,1)-SubStr(A_Index,-0,1))
ToolTip % i " von " Markiert
Faktor:=MM.CurrentSongList.Item(i).Rating/10 +1 -AbRating
if (Faktor>0 and not InStr(MM.CurrentSongList.Item(i).Genre,"Doppelt"))
{
Loop % Faktor
{
if SongsKopieren
Ges .= ".\" RelPath "`r`n"
else
Ges .= MM.CurrentSongList.Item(i).Path "`r`n"
}
}
}
StringTrimRight,Ges,Ges,2
if SongsKopieren
AusgabePath:= ZielpathDir "\MmSelBewertetSongListAb" AbRating "_" A_Now ".m3u"
else
AusgabePath:=A_Temp "\MmSelBewertetSongListAb" AbRating "_" A_Now ".m3u"
FileAppend,%Ges%,%AusgabePath%
Run, Notepad.exe %AusgabePath%
; MsgBox % Ges
if SongsKopieren
run %ZielpathDir%
MM:=""
ExitApp
[quote]Erzeuge eine Playliste deren Einträge bei guten Bewertungen mehrfach vorkommen[/quote]
Anbei ein AutoHotKey-Skript welches eine solche Playliste aus den in MediaMonkey selektierten Songs erzeugt:
(zusätzlich kann es optional noch MP3-Player mit der Auswahl der Songs bestücken, unter Beibehaltung der original Ordnerstruktur.) PS. AutoHotKey muss dazu nicht installiert werden, wenn man sich eine aktuelle AutoHotKey.exe besorgt [url]http://ahkscript.org[/url] und diese umbenennt, sodass sie gleichnamig ist wie das Skript. Nun kann man die Exe ohne Installation starten.
[code]MM := ComObjCreate("SongsDB.SDBApplication")
Clipboard:="Genre:yZb Genre:-Doppelt Genre:-Spoken Genre:-Medley Genre:-NotShuffle"
MsgBox Im Clipboard ist ein Vorschlag fuer das MediaMonkey Suchfeld!
InputBox,AbRating,Bewertung,Ab welcher Bewertung `n0 - 9 (wobei 2 einem * entpricht) `nsoll in die Playlist uebernommen werden?,,,,,,,,1
if ErrorLevel
ExitApp
if AbRating is not Integer
{
MsgBox 0 bis 9 erwartet`nSkriptende
ExitApp
}
Markiert:=MM.CurrentSongList.count
if (Markiert=0)
MsgBox Bitte die Songs in MediaMonkey selektieren.
else
MsgBox, 262180, Songliste, ist die gewuenschte Songliste (%Markiert% Songs) in MediaMonkey selektiert?
IfMsgBox,No
ExitApp
MsgBox, 262436, Song-Kopien, sollen die selektierten Songs auch kopiert werden? ...
IfMsgBox,Yes
{
SongsKopieren:=true
InputBox,ZielpathDir,Zielpfad,wohin soll kopiert werden?,,,,,,,,C:\temp\SongKopieAb%AbRating%
IfNotExist,%ZielpathDir%
{
FileCreateDir,%ZielpathDir%
IfNotExist,%ZielpathDir%
{
MsgBox, 262160, Zielpfad, Der Zielpfad %ZielpathDir% konnte nicht erstellt werden!`n`nSkriptende
ExitApp
}
}
}
else
SongsKopieren:=false
BasisQuellDirBekannt:=false
ErstAnzeige:=true
Markiert:=MM.CurrentSongList.count
Loop % Markiert
{
i:=A_Index-1
; if(SubStr(i,-1)="00")
if SongsKopieren
{
QuellPath:=MM.CurrentSongList.Item(i).Path
if not BasisQuellDirBekannt
{
if (BasisQuellDir="")
{
QuellPathLast:=MM.CurrentSongList.Item(Markiert-1).Path
Loop % StrLen(QuellPath)
{
if(SubStr(QuellPath,A_Index,1)<>SubStr(QuellPathLast,A_Index,1))
{
DiffPos:=A_Index
break
}
}
BasisQuellDirVorgekuerzt:=substr(QuellPath,1,DiffPos-2)
SplitPath,BasisQuellDirVorgekuerzt,,BasisQuellDirVorgekuerztVater
Clipboard:=BasisQuellDirVorgekuerztVater
FileSelectFolder,BasisQuellDir,*%BasisQuellDirVorgekuerzt%,3,Basis-Ordner`nzur Erzeugung der relativen Playlist. Vorschlag: %BasisQuellDirVorgekuerzt%`nAchtung: pruefen ob Ordner drueber %BasisQuellDirVorgekuerztVater% (Clipboard)
; InputBox,BasisQuellDir,BasisQuellDir,von rechts loeschen?,,,,,,,,%BasisQuellDirVorgekuerzt%
IfNotExist,%BasisQuellDir%
{
MsgBox, 262160, BasisQuellDir, BasisQuellDir %BasisQuellDir% existiert nicht!`n`nSkriptende
ExitApp
}
else
BasisQuellDirBekannt:=true
}
}
RelPath:=SubStr(QuellPath,StrLen(BasisQuellDir)+2)
ZielPath=%ZielpathDir%\%RelPath%
SplitPath,ZielPath,,ZielDir
IfNotExist %ZielDir%
{
FileCreateDir %ZielDir%
IfNotExist %ZielDir%
MsgBox, 262192, Fehler, %ZielDir% konnte nicht erzeugt werden.
}
if ErstAnzeige
{
; MsgBox %QuellPath%`n%ZielPath%
MsgBox, 262145, Zur Kontrolle, %QuellPath%`n`n%ZielPath%
IfMsgBox,Cancel
ExitApp
}
if(not instr(QuellPath,BasisQuellDir))
{
MsgBox Der Basisordner %BasisQuellDir% ist nicht in %QuellPath% enthalten. Vorschlag: einen Ordner naeher der Wurzel verwenden.`nSkriptende
ExitApp
}
FileCopy,%QuellPath%,%ZielPath%
IfNotExist,%ZielPath%
MsgBox, 262192, Fehler, %ZielPath% konnte nicht erzeugt werden.
else
ErstAnzeige:=false
}
if(SubStr(A_Index,-3,1)-SubStr(A_Index,-2,1) = SubStr(A_Index,-1,1)-SubStr(A_Index,-0,1))
ToolTip % i " von " Markiert
Faktor:=MM.CurrentSongList.Item(i).Rating/10 +1 -AbRating
if (Faktor>0 and not InStr(MM.CurrentSongList.Item(i).Genre,"Doppelt"))
{
Loop % Faktor
{
if SongsKopieren
Ges .= ".\" RelPath "`r`n"
else
Ges .= MM.CurrentSongList.Item(i).Path "`r`n"
}
}
}
StringTrimRight,Ges,Ges,2
if SongsKopieren
AusgabePath:= ZielpathDir "\MmSelBewertetSongListAb" AbRating "_" A_Now ".m3u"
else
AusgabePath:=A_Temp "\MmSelBewertetSongListAb" AbRating "_" A_Now ".m3u"
FileAppend,%Ges%,%AusgabePath%
Run, Notepad.exe %AusgabePath%
; MsgBox % Ges
if SongsKopieren
run %ZielpathDir%
MM:=""
ExitApp
[/code]