Bild-Automatisierung

Hi,

heute einmal etwas zum Thema Automatisierung.
Es gibt ja schon einige Tools zum Automatisieren, aber nicht viele mit Bild-Erkennung.

Hier kommt die Software Sikuli bzw. SikuliX ins Spiel.
Mit dieser könnt Ihr über Screenshots eure Software oder Prozesse automatisieren. Und das Beste: Es funktioniert Dank Java auf jedem Betriebssystem.

Ich habe dies z.B. mit dem Browser-Spiel Goodgame Empire zum Abholen der Steuern getestet. Diese werden sobald fertig abgeholt und dann wieder ein neuer durchlauf geordert. Um dies genauer zu zeigen hier das Sikuli-Script

patterns = (Pattern("1405884495038.png").similar(0.80),Pattern("1405884506644.png").similar(0.80),"1405884531009.png",Pattern("1406315875293.png").similar(0.78),Pattern("1406315785603.png").similar(0.80),Pattern("1406316973856.png").similar(0.82),Pattern("1406372148504.png").similar(0.80),Pattern("1406379490536.png").similar(0.82))
closetaxeswindow=Pattern("1406317936903.png").targetOffset(162,-17)
newtaxesscreen=Pattern("1406315290793.png")
gettaxes=Pattern("1405884531009.png")
startnewtaxescollection=Pattern("1406315337449.png").targetOffset(-19,0)
retrievetaxes=Pattern("1406316179768.png")
closenewtakesscreen=Pattern("1406318736692.png").targetOffset(146,-47)

def clickexists(p):
    click(exists(p, 0))

while True:
    for p in patterns:
        m = exists(gettaxes, 0)
        if m:
            click(m)
            wait(2)
            clickexists(retrievetaxes)
            wait(2)
            clickexists(closetaxeswindow)
            wait(2)
            clickexists(newtaxesscreen)
            wait(2)
            clickexists(startnewtaxescollection)
            wait(2)
            clickexists(closenewtakesscreen)
        else:
            clickexists(p)

und einmal nun das ganze als Bild:

An sich könnt ihr dies mit jeder beliebigen Software machen.
Vielleicht möchtet ihr dies ja als Grundlage nutzen 🙂

Gruß, Matthias

PLS,M3U,MPCPL Playliste mit Powershell erstellen

Hallo mal wieder,

heute gibt es was zum programmieren:
Hattet ihr es auch schon öfters, dass Ihr mehrere Ordner habt und für jeden Ordner eine Playliste automatisch erstellen möchtet?

Dann  habe ich vielleicht das richtige für euch.
Ich habe ein kleines Powershell Script welches für jeden Ordner unterhalb eines Root-Ordners eine MPCPL, PLS oder M3U Playliste anlegt und in diese Dateien mit bestimmten Endungen aufnimmt.

Natürlich bleibt es euch frei dies zu bearbeiten – falls es dann doch mal Probleme geben sollte.
Hoffe es hilft euch.

Hier nun das Script: – Speichert es als .ps1 Datei und gibt die 4 gleich genannten Parameter mit

# Parameters for Script
	## -source : The Subfolders of the source path will be checked for MediaFiles (recursivly)
	## -destination : Specify the path where to save the Playlists - Each subfolder gets a Playlist-File with the folder name
	## -playlisttype : MPCPL, PLS OR M3U
	## -filetypes : Which files should be in the playlist - Seperate multiple by ","
	param([string]$source = "\\server\share",[string]$destination = "\\server\share\PLS",[string]$playlisttype = "mpcpl",[string]$filetypes = "avi,wmv,mpg,asf,mp3,ogg,wav,wma,mp4,mkv,mov")

	#$filetypesarray = $filetypes.split(",") | where-object {$_ -ne ","}
	$filetypesmatch = "." + $filetypes.Replace(",", "|.")
	$playlisttype = $playlisttype.ToLower()
	$dir = get-childitem -literalPath $source -force
    $subdirs = @($Dir | where {$_.PSIsContainer -eq "True"} | Sort-Object $_.DirectoryName)
	Foreach ($subdir in $subdirs)
    {
		[int]$fileindex = 0
		$FileName = $subdir.Name + "." + $playlisttype
		$outfile = $destination + "\" + $FileName		

		$searchfiles = (Get-Childitem -literalPath $subdir.PSPath -recurse -force) | where { $_.Extension -match $filetypesmatch }
        Foreach ($searchfile in $searchfiles)
    	{
			if ($fileindex -eq 0)
			{
				switch ($playlisttype) {
					"mpcpl"
					{
						$output = "MPCPLAYLIST"
						Write-Output $output | Out-File $outfile -append
					}
					"pls"
					{
						$output = ""
						Write-Output $output | Out-File $outfile -append
					}
					default
					{
					}
				}
			}


			switch ($playlisttype) {
				"mpcpl"
				{
					[string]$output = [string]$fileindex + ",type,0"
					Write-Output $output | Out-File $outfile -append
					[string]$output = [string]$fileindex + ",filename," + $searchfile.FullName
					Write-Output $output | Out-File $outfile -append
					$fileindex = $fileindex + 1
				}
				"pls"
				{
					$fileindex = $fileindex + 1
					[string]$output = "File" + [string]$fileindex + "=" + $searchfile.FullName
					Write-Output $output | Out-File $outfile -append
				}
				default
				{
					[string]$output = $searchfile.FullName
					Write-Output $output | Out-File $outfile -append -Encoding ASCII
				}
			}
		}
		if ($searchfiles.Count -ge 1)
		{
			switch ($playlisttype) {
				"pls"
				{
					[string]$output = "NumberOfEntries=" + [string]$fileindex
					Write-Output $output | Out-File $outfile -append
				}
				default
				{
				}
			}
		}
	}