#include <File.au3>
;####Filecheck by YellowWeedSeed####
;beliebig änderbar solange es nicht als Eigen ausgegeben wird

;~####Errorcodes:####

;_____________________________________________________________
;#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
;#~	-1 = Fehler beim öffnen der Datei						~#
;#~	-2 = Fehler beim zählen der Zeilen						~#
;#~	-3 = $file[$i] ist kein array							~#
;#~	-4 = Fehler beim auslesen einer zeile in der Datei		~#
;#~	-10 = String enthält keine dateien						~#
;#~	-11 = Zeile konnte nicht beschrieben werden				~#
;#~	-12 = Datei existiert bereits							~#
;#~	-13 = Zeile enthält kein Dateiname						~#
;#~	-14 = Zeile enthält keine Endung						~#
;#~	-15 = $miss ist kein Array								~#
;#~	-16 = $miss enthält keine Dateien						~#
;#~	-17 = Fehler beim downloaden der Datei					~#
;#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
;_____________________________________________________________


Func _filecheck($filename)

	$checksum = 0
	$miss = "missing Files: "
	$open = FileOpen($filename, 0)
	If @error Then Return -1

	$number = _FileCountLines($filename)
	If @error Then Return -2

	$x = $number + 1
	Dim $file[$x]
	Dim $file2[$x]
	Dim $string[$x]
	Dim $instr[$x]

	If Not IsArray($file) Then Return -3

	For $y = 0 To $number - 1

		$file2[$y] = FileReadLine($open, ($y + 1))

		If $file2[$y] = "" Then Return $y + 1 & "_1"

		$instr[$y] = StringInStr($file2[$y], "|")

		If $instr[$y] = 0 Then Return $y + 1 & "_2"

		$split1 = StringSplit($file2[$y], "|")
		$string[$y] = StringInStr($split1[1], '.')

		If $split1[2] = "" Then Return $y + 1 & "_3"
		If $string[$y] = 0 Then Return -14

	Next

	For $i = 0 To $number - 1
		$i2 = $i + 1
		$file[$i] = FileReadLine($open, $i2)
		If @error Then Return -4
		$split2 = StringSplit($file[$i], "|")
		If Not FileExists($split2[1]) Then
			$miss &= ("°" & $split2[1])
		ElseIf FileExists($split2[1]) Then
			$checksum += 1
		EndIf
	Next

	If $checksum = $number Then
		Return 1
	ElseIf $checksum < $number Then
		Return $miss
	EndIf
	FileClose($filename)
EndFunc   ;==>_filecheck

Func _filecheck_listcreate($filename, $files_2, $url)
	If Not FileExists($filename) Then
		FileWrite($filename, "")
		$a = StringSplit($files_2, "°")
		If Not IsArray($a) Then Return -10

		If Not StringInStr($url, "°") = 0 Then
			$c = StringSplit($url, "°")
		Else
			$c = $url
		EndIf

		For $o = 1 To $a[0]
			_FileWriteToLine($filename, $o, $a[$o] & "|" & $c[$o])
			If @error Then Return -11
		Next
		Return 1
	Else
		Return -12
	EndIf
EndFunc   ;==>_filecheck_listcreate

Func _filecheck_download($filename, $miss, $url)
	$fail = "failed downloads:"
	$download = StringSplit($miss, "°")
	If Not IsArray($download) Then Return -15

	$dim = UBound($download)
	If $dim > 2 Then Return -16

	For $z = 1 To $dim - 1
		InetGet($url, $download[$z])
		If @error Then $fail &= "°" & $download[$z]
	Next

	If Not $fail = "failed downloads:" Then
		Return $fail
	Else
		Return 1
	EndIf

EndFunc   ;==>_filecheck_download