Post by effel » 06 Apr 2021, 10:16
just me wrote: ↑06 Apr 2021, 06:37
...Anmerkungen...
Danke Just Me
Code: Select all
, 21: {I: 18, N: "ActorPicTitel"} ; ?
, 25: {I: 17, N: "ActorPicCopyright"} ; ?
Das ist kein Schreibfehler, Copyright ist bei den Schauspieler Bildern oft mit Daten gefüllt
- 20210406162359.jpg (42.02 KiB) Viewed 1657 times
Ich merge grade zwei Script Dateien, langsam nimmt es Form an.
just me wrote: ↑06 Apr 2021, 06:37
Ich frage mich auch, wofür Du die eingeschobene Arraydimension Obj2TreeArr[Split.1, 13, "ActorPicName"] := ActorPicName brauchst
Ich dachte, das ich die Datenstruktur so halte, dass alle Variablen in
einer imdbArray gespeichert sind, (Obj2TreeArr wird auch zu imdbArray) ich speichere alles ab, auch die Daten die ich nicht für die GUI oder für den Ablauf des Programms benötige.
Das hat als einzigen Grund, das ich noch immer lernen muss wie ich mit Arrays verfahren kann
Nichtsdestotrotz freue ich mich über weitere Anmerkungen und Poste den aktuellen (grade zusammengefügten) Code der mit Key sogar funktioniert:
Die vorgeschlagenen Änderungen sind noch nicht berücksichtigt
Code: Select all
#NoEnv
#SingleInstance force
#Persistent
FileEncoding, UTF-8
SetBatchLines, -1
SetTitleMatchMode, 2
SetKeyDelay 20
SetTimer,UPDATEDSCRIPT,500
#Include M:\GUI Datenbank\LVA.ahk
#Include JSON.ahk
APIkey := "nimmDeinen"
LVcounter := 0
FileCopy, ListViewLoad.txt, %A_Now%-Old-ListViewLoad.txt
FileDelete, ListViewLoad.txt
Gui, New
Gui, Font, s12
Gui, +hwndHGUI +LastFound
Gui, Add, Tab3, gTab3 x10 y7 Buttons +0x8 vResizeTab, PlayList|Actors|Serien|Filme|LVA_SetCellHistory|Einstellung
Gui, Tab, Actors,, exact
HILActors := IL_Create() ; ActorsView
ImgW := 64 ; Breite der Bilder
ImgH := 88 ; Höhe der Bilder
IL_SetSize(HILActors, ImgW, ImgH)
RowsLVActors = Foto|FilmID|ActorID|Actor|Character|Loadlate|HREF|BigPicture|ActorPicName|ActorPicGröße|ActorPicAutoren|ActorPicDatum|ActorPicCopyright|ActorPicTitel|ActorPicAbmessungen|ActorPicBewertung
RowsLVActorsArr := StrSplit(Rows,"|")
MaxRowsLVActors := RowsArr.Count() ;25
Gui, Add, ListView, w1200 h800 +LV0x00010000 +LV0x20 vLVActors AltSubmit Grid cBlack BackgroundFFDD99, % RowsLVActors
LV_SetImageList(HILActors, 1)
LVA_ListViewAdd("LVActors", "+AR cfFF0000 cbFFDD99")
Loop, % LV_GetCount("Columns")
; LV_ModifyCol(A_Index, "AutoHdr")
LV_ModifyCol(A_Index, 164)
LV_ModifyCol(1, 64)
LV_ModifyCol(2, 120)
LV_ModifyCol(3, 120)
LV_ModifyCol(4, 164)
LV_ModifyCol(5, 164)
LV_ModifyCol(6, 64)
LV_ModifyCol(7, 64)
LV_ModifyCol(8, 64)
LV_ModifyCol(9, 164)
LV_ModifyCol(10, 164)
LV_ModifyCol(11, 0)
LV_ModifyCol(12, 0)
LV_ModifyCol(13, 0)
LV_ModifyCol(14, 0)
LV_ModifyCol(15, 0)
LV_ModifyCol(16, 0)
;Gui, Tab, Playlist,, exact
GUi, Tab, PlayList,, Exact
HIL := IL_Create()
ImgW := 150 ; Breite der Bilder
ImgH := 220 ; Höhe der Bilder
IL_SetSize(HIL, ImgW, ImgH)
FileDelete, rows.txt
rows = Cover|Actors|Awards|BoxOffice|Country|Director|DVD|Genre|imdbID|imdbRating|imdbVotes|Language|Metascore|Plot|Poster|Production|Rated|Released|Response|Runtime|Title|totalSeasons|Type|Website|Writer|Year
RowsArr := StrSplit(Rows,"|")
MaxRows := RowsArr.Count() ;25
FileAppend, % MaxRows "`n" rows, rows.txt
Gui, Add, ListView, w1200 h800 +LV0x00010000 +LV0x20 vLV AltSubmit Grid cBlack BackgroundFFDD99, % Rows
LV_SetImageList(HIL, 1)
LVA_ListViewAdd("LV", "+AR cfFF0000 cbFFDD99")
Loop, % LV_GetCount("Columns")
; LV_ModifyCol(A_Index, "AutoHdr")
LV_ModifyCol(A_Index, 150)
Gui, Show, , % A_ScriptName
Gosub TestMe
;Run, ListViewLoad.txt
OnMessage("0x4E", "LVA_OnNotify")
Return
/*
;imdbArr := JSON2AHK(imdb)
;MsgBox,,%A_LineNumber%-imdbObj, % imdbObj ; {"Title":"Mr. Robot","Year":"2015–2019","Rated":"TV-MA","Released":"24 Jun 2015","Runtime":"49 min","Genre":"Crime, Drama, Thriller","Director":"N/A","Writer":"Sam Esmail","Actors":"Rami Malek, Christian Slater, Carly Chaikin, Martin Wallström","Plot":"Elliot, a brilliant but highly unstable young cyber-security engineer and vigilante hacker, becomes a key figure in a complex game of global dominance when he and his shadowy allies try to take down the corrupt corporation he works for.","Language":"English, Swedish, Danish, Chinese, Persian, Spanish, Arabic, German","Country":"USA","Awards":"Won 2 Golden Globes. Another 19 wins & 78 nominations.","Poster":"https://m.media-amazon.com/images/M/MV5BMzgxMmQxZjQtNDdmMC00MjRlLTk1MDEtZDcwNTdmOTg0YzA2XkEyXkFqcGdeQXVyMzQ2MDI5NjU@._V1_SX300.jpg","Ratings":[{"Source":"Internet Movie Database","Value":"8.5/10"}],"Metascore":"N/A","imdbRating":"8.5","imdbVotes":"334,252","imdbID":"tt4158110","Type":"series","totalSeasons":"4","Response":"True"}
;MsgBox,,%A_LineNumber%-imdbObj, % imdbArr["imdbID"] ;tt4158110
;MsgBox,,%A_LineNumber%-imdbObj, % imdbArr[imdbArr["imdbID"], "imdbID"] ; tt4158110
*/
TestMe:
;/*
drei := true
imdbObj := omdb("tt4158110",,,APIkey) ; mr. Robot
imdbArr := JSON2AHK(imdbObj)
Gosub, ListViewLoad
If drei
{
imdbObj := omdb("tt3896198",,,APIkey) ; Guardians of the Galaxy V.2
imdbArr := JSON2AHK(imdbObj)
Gosub, ListViewLoad
imdbObj := omdb("tt0383164",,,APIkey) ; Der Adler
imdbArr := JSON2AHK(imdbObj)
Gosub, ListViewLoad
FilmTitel := "tt3896198"
Gosub, LoadActores
FilmTitel := "tt4158110"
Gosub, LoadActores
FilmTitel := "tt0383164"
Gosub, LoadActores
}
;*/
Return
Tab3:
Return
;#########################################################################################################################
; ======================================================================================================================
LoadActores:
;imdb datenbank auslesen Seite 2
;https://www.autohotkey.com/boards/viewtopic.php?p=391696#p391696
UrlDownLoadToFile, % "https://www.imdb.com/title/" FilmTitel, html.txt
FileRead, html, html.txt
;FilmTitel := "tt0818165"
Doc := DocumentFromHTML(HTML)
CastObj := {}
CastList := Doc.querySelector("table.cast_list")
TableRows := CastList.getElementsByTagName("tr")
NumOfRows := TableRows.length
RowIndex := 1 ; erste Zeile überspringen
While (RowIndex < NumOfRows) {
TR := TableRows[RowIndex]
Actor := {}
; Zweites <td> Element der Zeile
Actor["Actor"] := Trim(TR.querySelector("td:nth-child(2)").innertext, " `t`r`n")
; Viertes <td> Element der Zeile
Actor["Character"] := Trim(TR.querySelector("td:nth-child(4)").innertext, " `t`r`n")
; <td> Element der Klasse "primary_photo"
TD := TR.querySelector("td.primary_photo")
Photo := {}
Photo["HREF"] := TD.querySelector("a").href
Img := TD.querySelector("img")
For Each, Attr In ["Height", "Width", "Alt", "Title", "Src", "Loadlate"]
Photo[Attr] := Img.getAttribute(Attr)
Actor["Photo"] := Photo
CastObj.Push(Actor)
RowIndex++
For Each, Object In Actor {
If IsObject(Object)
For K, var In Object
Obj2TreeVar .= RowIndex-1 ";" A_Index ";" k ";" var "`n"
Else
Obj2TreeVar .= (A_Index-1) ? (RowIndex-1 ";" 9 ";" "Character" ";" Object "`n") : (RowIndex-1 ";" 8 ";" "Actor" ";" Object "`n")
}
}
LoopCounter := RowIndex-1
; ======================================================================================================================
;Gui, Add, TreeView, w1000 r40 AltSubmit vTV gSubTV
;Obj2Tree(CastObj)
;Gui, Show, , ObjektTree
; ======================================================================================================================
propsAllArr := object()
Obj2TreeArr := object()
Loop, Parse, Obj2TreeVar, `n
{
ALoopField := A_LoopField
Split := StrSplit(ALoopField, ";")
Obj2TreeArr[Split.1, Split.2, Split.3] := Split[4]
If InStr(Split.4, "ref_")
{
HREFm := StrSplit(Split.4, "/")
Split[6] := "https://m.imdb.com/name/" HREFm[3]
Obj2TreeArr[Split.1, 11, "HREFm"] := Split[6]
Obj2TreeArr[Split.1, 12, "ActorID"] := HREFm[3]
}
; Split[7] := HREFm[3]
If InStr(Split.4, "_V1_")
{
ActorPictureSplit := StrSplit(Split.4, "_V1_") ; grosses ActorPicture
Split[5] := ActorPictureSplit[1] "_V1_.jpg"
Obj2TreeArr[Split.1, 10, "BigPicture"] := Split[5]
If !FileExist(FilmTitel "\Actors")
FileCreateDir, % FilmTitel "\Actors"
PicFileName := FilmTitel "\Actors\" FilmTitel A_Space HREFm[3] A_Space (Obj2TreeArr[Split.1, 8, "Actor"]) ".jpg" ; "tt0480249 nm0000226 Will Smith.jpg"
UrlDownLoadToFile, % Split[5], % PicFileName
Loop, % A_ScriptDir "\" FilmTitel "\Actors\*.jpg"
If InStr(A_LoopFilePath, (Obj2TreeArr[Split.1, 8, "Actor"]))
{
ALoopFileName := A_LoopFileName
If InStr(_V1_Counter, A_LoopFilePath)
continue
_V1_Counter .= A_LoopFilePath "|"
; https://www.autohotkey.com/boards/viewtopic.php?p=356281 by BoBo
; Eigenschaften/properties der Actoren aus Fotodatei laden
MaxGap := 12
SplitPath,% A_LoopFilePath, fileName, dirPath
Folder := ComObjCreate("Shell.Application").NameSpace(dirPath)
FolderItem := Folder.ParseName(fileName)
Gap := 0
While (Gap < MaxGap)
If (Value := Folder.GetDetailsOf(FolderItem, A_Index - 1))
{
ActorPicName := (A_Index - 1=0) ? (Value, Gap := 0) : ("", Gap := 0)
If ActorPicName
Obj2TreeArr[Split.1, 13, "ActorPicName"] := ActorPicName
ActorPicGröße := (A_Index - 1=1) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicGröße
Obj2TreeArr[Split.1, 14, "ActorPicGröße"] := ActorPicGröße
ActorPicDatum := (A_Index - 1=12) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicDatum
Obj2TreeArr[Split.1, 15, "ActorPicDatum"] := ActorPicDatum
ActorPicAutoren := (A_Index - 1=20) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicAutoren
Obj2TreeArr[Split.1, 16, "ActorPicAutoren"] := ActorPicAutoren
ActorPicCopyright := (A_Index - 1=25) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicCopyright
Obj2TreeArr[Split.1, 17, "ActorPicCopyright"] := ActorPicCopyright
ActorPicTitel := (A_Index - 1=21) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicTitel
Obj2TreeArr[Split.1, 18, "ActorPicTitel"] := ActorPicTitel
ActorPicAbmessungen := (A_Index - 1=31) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicAbmessungen
Obj2TreeArr[Split.1, 19, "ActorPicAbmessungen"] := ActorPicAbmessungen
ActorPicBewertung := (A_Index - 1=19) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicBewertung
Obj2TreeArr[Split.1, 20, "ActorPicBewertung"] := ActorPicBewertung
propsAllArr[A_Index - 1] := Value
propsAll .= A_Index - 1 " : " Value " | ", Gap := 0
}
Else
Gap++
;msgbox,,%A_LineNumber%, % Obj2TreeArr[Split.1, 13, "ActorPicName"], .1
}
;FileDelete, % ALoopFileName "-allPictureDetails.txt"
;FileAppend, % propsAll, % ALoopFileName "-allPictureDetails.txt"
;Run, % ALoopFileName "-allPictureDetails.txt"
propsAll=""
}
If !FileExist(FilmTitel "\Actors")
FileCreateDir, % FilmTitel "\Actors"
; msgbox,,%A_LineNumber%, % Split[1] "`n" Split[2] "`n" Split[3] "`n" Split[4] "`n" Split[5] "`n" Split[6] "`n" Split[x]
}
Gosub, ListViewLoadActors
Test := true_
If Test
Loop, % LoopCounter
{
MsgBox,,Zeile: %A_LineNumber% | %A_Index% %A_Space% %xcounter% Obj2TreeArr, % ""
. FilmTitel "`n"
. Obj2TreeArr[A_Index, 12, "ActorID"] "`n"
. Obj2TreeArr[A_Index, 8, "Actor"] "`n"
. Obj2TreeArr[A_Index, 9, "Character"] "`n"
. Obj2TreeArr[A_Index, 3, "HREF"] "`n"
. Obj2TreeArr[A_Index, 4, "Loadlate"] "`n"
. Obj2TreeArr[A_Index, 10, "BigPicture"] "`n"
. Obj2TreeArr[A_Index, 11, "HREFm"] "`n"
. Obj2TreeArr[A_Index, 13, "ActorPicName"] "`n"
. Obj2TreeArr[A_Index, 14, "ActorPicGröße"] "`n"
. Obj2TreeArr[A_Index, 15, "ActorPicDatum"] "`n"
. Obj2TreeArr[A_Index, 16, "ActorPicAutoren"] "`n"
. Obj2TreeArr[A_Index, 17, "ActorPicCopyright"] "`n"
. Obj2TreeArr[A_Index, 18, "ActorPicTitel"] "`n"
. Obj2TreeArr[A_Index, 19, "ActorPicAbmessungen"] "`n"
. Obj2TreeArr[A_Index, 20, "ActorPicBewertung"],7
}
properties := ""
For i, v In propsAllArr {
properties .= i A_Tab v "`n"
}
;FileDelete, properties.txt
;FileAppend, % properties, properties.txt
;Run, properties.txt
MsgBox,,Zeile: #%A_LineNumber%, FERTIG!,1
Return
;#########################################################################################################################
; ======================================================================================================================
ListViewLoad:
Gui, ListView, LV
ListViewLoad := imdbArr[imdbArr["imdbID"], "Actors"] ";"
. imdbArr[imdbArr["imdbID"], "Awards"] ";"
. imdbArr[imdbArr["imdbID"], "BoxOffice"] ";"
. imdbArr[imdbArr["imdbID"], "Country"] ";"
. imdbArr[imdbArr["imdbID"], "Director"] ";"
. imdbArr[imdbArr["imdbID"], "DVD"] ";"
. imdbArr[imdbArr["imdbID"], "Genre"] ";"
. imdbArr[imdbArr["imdbID"], "imdbID"] ";"
. imdbArr[imdbArr["imdbID"], "imdbRating"] ";"
. imdbArr[imdbArr["imdbID"], "imdbVotes"] ";"
. imdbArr[imdbArr["imdbID"], "Language"] ";"
. imdbArr[imdbArr["imdbID"], "Metascore"] ";"
. imdbArr[imdbArr["imdbID"], "Plot"] ";"
. imdbArr[imdbArr["imdbID"], "Poster"] ";"
. imdbArr[imdbArr["imdbID"], "Production"] ";"
. imdbArr[imdbArr["imdbID"], "Rated"] ";"
. imdbArr[imdbArr["imdbID"], "Released"] ";"
. imdbArr[imdbArr["imdbID"], "Response"] ";"
. imdbArr[imdbArr["imdbID"], "Runtime"] ";"
. imdbArr[imdbArr["imdbID"], "Title"] ";"
. imdbArr[imdbArr["imdbID"], "totalSeasons"] ";"
. imdbArr[imdbArr["imdbID"], "Type"] ";"
. imdbArr[imdbArr["imdbID"], "Website"] ";"
. imdbArr[imdbArr["imdbID"], "Writer"] ";"
. imdbArr[imdbArr["imdbID"], "Year"] "`n"
FileAppend, % ListViewLoad "", ListViewLoad.txt
GuiControl, -Redraw, LV
LVcounter++
Img%LVcounter% := (imdbArr[imdbArr["imdbID"], "imdbID"]) ".jpg"
IL_Add(HIL, Img%LVcounter%, 0xFFFFFF, 1)
LV_Add("Icon" . LVcounter, "", StrSplit(ListViewLoad, ";")*)
lva_Refresh("LV")
lva_Refresh(LV)
GuiControl, +Redraw, LV
Return
;#########################################################################################################################
; ======================================================================================================================
ListViewLoadActors:
Gui, ListView, LVActors
/*
xRowsLVActors = FilmID|ActorID|Actor|Character|Loadlate|HREF|BigPicture|ActorPicName|ActorPicGröße|ActorPicAutoren|ActorPicDatum|ActorPicCopyright|ActorPicTitel|ActorPicAbmessungen|ActorPicBewertung
GuiControl, -Redraw, LVActors
LVcounterActors++
Img%LVcounterActors% := A_ScriptDir "\" FilmTitel "\Actors\" Obj2TreeArr[A_Index, 13, "ActorPicName"]
IL_Add(HILActors, Img%LVcounterActors%, 0xFFFFFF, 1)
LV_Add("Icon" . 999999, "", StrSplit(xRowsLVActors, "|")*)
GuiControl, +Redraw, LVActors
*/
Loop, % LoopCounter
{
If Obj2TreeArr[A_Index, 9, "Character"]
{
ListViewLoadActors := FilmTitel ";"
. Obj2TreeArr[A_Index, 12, "ActorID"] ";"
. Obj2TreeArr[A_Index, 8, "Actor"] ";"
. Obj2TreeArr[A_Index, 9, "Character"] ";"
. Obj2TreeArr[A_Index, 4, "Loadlate"] ";"
. Obj2TreeArr[A_Index, 3, "HREF"] ";"
. Obj2TreeArr[A_Index, 10, "BigPicture"] ";"
. Obj2TreeArr[A_Index, 13, "ActorPicName"] ";"
. Obj2TreeArr[A_Index, 14, "ActorPicGröße"] ";"
. Obj2TreeArr[A_Index, 16, "ActorPicAutoren"] ";"
. Obj2TreeArr[A_Index, 15, "ActorPicDatum"] ";"
. Obj2TreeArr[A_Index, 17, "ActorPicCopyright"] ";"
. Obj2TreeArr[A_Index, 18, "ActorPicTitel"] ";"
. Obj2TreeArr[A_Index, 19, "ActorPicAbmessungen"] ";"
. Obj2TreeArr[A_Index, 20, "ActorPicBewertung"] "`n"
; MsgBox,,%A_LineNumber% ActorPicName,% Obj2TreeArr[A_Index, 13, "ActorPicName"]
GuiControl, -Redraw, LVActors
LVcounterActors++
Img%LVcounterActors% := A_ScriptDir "\" FilmTitel "\Actors\" Obj2TreeArr[A_Index, 13, "ActorPicName"]
IL_Add(HILActors, Img%LVcounterActors%, 0xFFFFFF, 1)
LV_Add("Icon" . LVcounterActors, "", StrSplit(ListViewLoadActors, ";")*)
lva_Refresh("LVActors")
lva_Refresh(LVActors)
GuiControl, +Redraw, LVActors
}}
FileDelete, % FilmTitel "\Actors\" FilmTitel ".txt"
FileAppend, % ActorsSaveVar, % FilmTitel "\Actors\" FilmTitel ".txt"
Return
;#########################################################################################################################
; ======================================================================================================================
; Originally released by teadrinker -> https://www.autohotkey.com/boards/viewtopic.php?p=333543#p333543
; ======================================================================================================================
JSON2AHK_(JSON, Recursive := False) {
Local
Static Doc := ComObjCreate("htmlfile")
, __ := Doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
, JS := Doc.parentWindow
If (!Recursive)
Obj := JSON2AHK(JS.eval("(" . JSON . ")"), True)
Else If !IsObject(JSON)
Obj := JSON
Else If (JSON.toString() != "[object Object]") {
Obj := []
Loop % JSON.length
Obj.Push(JSON2AHK(JSON[A_Index - 1], True) )
}
Else {
Obj := {}
Keys := JS.Object.keys(JSON)
Loop % Keys.length {
K := Keys[A_Index - 1]
Obj[K] := JSON2AHK(JSON[K], True)
}
}
Return Obj
}
;#########################################################################################################################
; ======================================================================================================================
JSON2AHK(JSON, Recursive := False) {
Local
Static Doc := ComObjCreate("htmlfile")
, __ := Doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
, JS := Doc.parentWindow
If (!Recursive)
Obj := JSON2AHK(JS.eval("(" . JSON . ")"), True)
Else If !IsObject(JSON)
Obj := JSON
Else If (JSON.toString() != "[object Object]") {
Obj := []
Loop % JSON.length
Obj.Push(JSON2AHK(JSON[A_Index - 1], True) )
}
Else {
Obj := {}
Keys := JS.Object.keys(JSON)
Loop % Keys.length {
K := Keys[A_Index - 1]
Obj[K] := JSON2AHK(JSON[K], True)
}
}
imdbID := Obj[Obj["imdbID"], "imdbID"] := Obj["imdbID"] ; muss oben stehen
IfNotExist % (Obj[Obj["imdbID"], "imdbID"])
FileCreateDir % (Obj[Obj["imdbID"], "imdbID"])
imdbID := Obj[Obj["imdbID"], "imdbID"] := Obj["imdbID"] ; muss oben stehen
IfNotExist % (Obj[Obj["imdbID"], "imdbID"])
FileCreateDir % (Obj[Obj["imdbID"], "imdbID"])
KeysObjCount := Obj[Obj["imdbID"], "KeysObjCount"] := Obj.Count()
Actors := Obj[Obj["imdbID"], "Actors"] := Obj["Actors"]
Awards := Obj[Obj["imdbID"], "Awards"] := Obj["Awards"]
BoxOffice := Obj[Obj["imdbID"], "BoxOffice"] := Obj["BoxOffice"]
Country := Obj[Obj["imdbID"], "Country"] := Obj["Country"]
Director := Obj[Obj["imdbID"], "Director"] := Obj["Director"]
DVD := Obj[Obj["imdbID"], "DVD"] := Obj["DVD"]
Genres := Obj[Obj["imdbID"], "Genre"] := Obj["Genre"]
imdbRating := Obj[Obj["imdbID"], "imdbRating"] := Obj["imdbRating"]
imdbVotes := Obj[Obj["imdbID"], "imdbVotes"] := Obj["imdbVotes"]
Language := Obj[Obj["imdbID"], "Language"] := Obj["Language"]
Metascore := Obj[Obj["imdbID"], "Metascore"] := Obj["Metascore"]
Plot := Obj[Obj["imdbID"], "Plot"] := Obj["Plot"]
Poster := Obj[Obj["imdbID"], "Poster"] := Obj["Poster"]
IfNotExist % (Obj[Obj["imdbID"], "imdbID"]) "\" (Obj[Obj["imdbID"], "imdbID"]) ".jpg"
; UrlDownLoadToFile, % (Obj[Obj["imdbID"], "Poster"])
UrlDownLoadToFile, % StrReplace((Obj[Obj["imdbID"], "Poster"]), "SX300") ; grosses poster
, % (Obj[Obj["imdbID"], "imdbID"]) "\" (Obj[Obj["imdbID"], "imdbID"]) ".jpg"
IfNotExist % (Obj[Obj["imdbID"], "imdbID"]) ".jpg"
; UrlDownLoadToFile, % (Obj[Obj["imdbID"], "Poster"]) ; kleines poster <50KB
UrlDownLoadToFile, % StrReplace((Obj[Obj["imdbID"], "Poster"]), "SX300") ; grosses poster >50KB
, % (Obj[Obj["imdbID"], "imdbID"]) ".jpg"
Rated := Obj[Obj["imdbID"], "Rated"] := Obj["Rated"]
Released := Obj[Obj["imdbID"], "Released"] := Obj["Released"]
Response := Obj[Obj["imdbID"], "Response"] := Obj["Response"]
Runtime := Obj[Obj["imdbID"], "Runtime"] := Obj["Runtime"]
Title := Obj[Obj["imdbID"], "Title"] := Obj["Title"]
totalSeasons := Obj[Obj["imdbID"], "totalSeasons"] := Obj["totalSeasons"]
Type := Obj[Obj["imdbID"], "Type"] := Obj["Type"]
Website := Obj[Obj["imdbID"], "Website"] := Obj["Website"]
Writer := Obj[Obj["imdbID"], "Writer"] := Obj["Writer"]
Year := Obj[Obj["imdbID"], "Year"] := Obj["Year"]
Return Obj
}
;#########################################################################################################################
; ======================================================================================================================
; https://www.autohotkey.com/boards/viewtopic.php?p=388487#p388487 by BoBo
; ======================================================================================================================
omdb(req:="",year:="",p:=0,APIkey:="") {
if !req
Return "Missing parameter"
req := SubStr(req,1,2)="tt" ? "i=" . req . "&plot=full"
: (p > 0) ? "s=" . StrReplace(req,A_Space,"+") . "&y=" . year . "&page=" . p . "&plot=full"
: (req != "") ? "t=" . StrReplace(req,A_Space,"+") . "&y=" . year . "&plot=full"
: ""
myAPIkey:= APIkey ; http://omdbapi.com/apikey.aspx
reqURL := "http://www.omdbapi.com/?apikey="
. myAPIkey
. "&"
. req
; omdb := JSON.Load(UrlDownloadToVar(reqURL)) ; laden in ein object
omdb := UrlDownloadToVar(reqURL) ;
Return omdb
}
;#########################################################################################################################
; ======================================================================================================================
UrlDownloadToVar(url) {
req := ComObjCreate("Msxml2.XMLHTTP")
req.open("GET", url, False)
req.Send()
Return req.responseText
}
;#########################################################################################################################
; ======================================================================================================================
; https://www.autohotkey.com/boards/viewtopic.php?p=350106#p350106 by Teadrinker, modified by just me
; ======================================================================================================================
DocumentFromHTML(HTML) {
Local
Doc := ComObjCreate("htmlfile")
Doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
Doc.write(HTML)
Return Doc
}
;#########################################################################################################################
;-------------------------------------------------------------------------------------------------------------------------
; https://www.autohotkey.com/boards/viewtopic.php?p=389488#p389488
; ======================================================================================================================
; IL_SetSize(ILID, W, H)
; Function: Sets the dimensions of images in an image list and removes all images from the list.
; Parameters: ILID - The unique ID (HIMAGELIST) of the ImageList returned by IL_Create().
; W - The width, in pixels, of all images in the image list.
; H - The height, in pixels, of all images in the image list.
; Return values: Returns nonzero if successful, or zero otherwise.
; MSDN: http://msdn.microsoft.com/en-us/library/bb775224(VS.85).aspx
; Remarks: All images in an image list have the same dimensions.
; ======================================================================================================================
IL_SetSize(ILID, W, H) {
Return DllCall("ComCtl32.dll\ImageList_SetIconSize", "Ptr", ILID, "Int", W, "Int", H, "Int")
}
;#########################################################################################################################
;-------------------------------------------------------------------------------------------------------------------------
UPDATEDSCRIPT:
FileGetAttrib,attribs,%A_ScriptFullPath%
IfInString,attribs,A
{
FileSetAttrib,-A,%A_ScriptFullPath%
SplashTextOn,,,Updated script,
Sleep,1500
Reload
}
;SetTimer,UPDATEDSCRIPT,500
Return
;#########################################################################################################################
;-------------------------------------------------------------------------------------------------------------------------
SubTV:
If (A_GuiEvent = "Normal") && !TV_GetChild(A_EventInfo) {
Path := ""
ID := A_EventInfo
While (ID := TV_GetParent(ID)) {
TV_GetText(Txt, ID)
Path := Txt "`n" (Path <> "" ? "|" . Path : "") "`n" ID ; "`n`n" TV_GetParent(ID)
}
ToolTip, %Path%
}
;msgbox,,%A_LineNumber%, % Obj2TreeVar
; ======================================================================================================================
Obj2Tree(Obj, Parent := 0) {
For K, V In Obj {
If IsObject(V)
Obj2Tree(V, TV_Add(K, Parent, "Expand1"))
Else
TV_Add(V, TV_Add(K, Parent, "Expand1"))
}
}
;#########################################################################################################################
;-------------------------------------------------------------------------------------------------------------------------
- Unbenannt.png (241.01 KiB) Viewed 1657 times
[quote="just me" post_id=392166 time=1617709079 user_id=148]...Anmerkungen...[/quote]
Danke Just Me
[code] , 21: {I: 18, N: "ActorPicTitel"} ; ?
, 25: {I: 17, N: "ActorPicCopyright"} ; ?
[/code]
Das ist kein Schreibfehler, Copyright ist bei den Schauspieler Bildern oft mit Daten gefüllt
[attachment=1]20210406162359.jpg[/attachment]
Ich merge grade zwei Script Dateien, langsam nimmt es Form an.
[quote="just me" post_id=392166 time=1617709079 user_id=148]Ich frage mich auch, wofür Du die eingeschobene Arraydimension Obj2TreeArr[Split.1, 13, "ActorPicName"] := ActorPicName brauchst[/quote]
Ich dachte, das ich die Datenstruktur so halte, dass alle Variablen in [b]einer[/b] imdbArray gespeichert sind, (Obj2TreeArr wird auch zu imdbArray) ich speichere alles ab, auch die Daten die ich nicht für die GUI oder für den Ablauf des Programms benötige.
Das hat als einzigen Grund, das ich noch immer lernen muss wie ich mit Arrays verfahren kann
Nichtsdestotrotz freue ich mich über weitere Anmerkungen und Poste den aktuellen (grade zusammengefügten) Code der mit Key sogar funktioniert:
Die vorgeschlagenen Änderungen sind noch nicht berücksichtigt
[code]#NoEnv
#SingleInstance force
#Persistent
FileEncoding, UTF-8
SetBatchLines, -1
SetTitleMatchMode, 2
SetKeyDelay 20
SetTimer,UPDATEDSCRIPT,500
#Include M:\GUI Datenbank\LVA.ahk
#Include JSON.ahk
APIkey := "nimmDeinen"
LVcounter := 0
FileCopy, ListViewLoad.txt, %A_Now%-Old-ListViewLoad.txt
FileDelete, ListViewLoad.txt
Gui, New
Gui, Font, s12
Gui, +hwndHGUI +LastFound
Gui, Add, Tab3, gTab3 x10 y7 Buttons +0x8 vResizeTab, PlayList|Actors|Serien|Filme|LVA_SetCellHistory|Einstellung
Gui, Tab, Actors,, exact
HILActors := IL_Create() ; ActorsView
ImgW := 64 ; Breite der Bilder
ImgH := 88 ; Höhe der Bilder
IL_SetSize(HILActors, ImgW, ImgH)
RowsLVActors = Foto|FilmID|ActorID|Actor|Character|Loadlate|HREF|BigPicture|ActorPicName|ActorPicGröße|ActorPicAutoren|ActorPicDatum|ActorPicCopyright|ActorPicTitel|ActorPicAbmessungen|ActorPicBewertung
RowsLVActorsArr := StrSplit(Rows,"|")
MaxRowsLVActors := RowsArr.Count() ;25
Gui, Add, ListView, w1200 h800 +LV0x00010000 +LV0x20 vLVActors AltSubmit Grid cBlack BackgroundFFDD99, % RowsLVActors
LV_SetImageList(HILActors, 1)
LVA_ListViewAdd("LVActors", "+AR cfFF0000 cbFFDD99")
Loop, % LV_GetCount("Columns")
; LV_ModifyCol(A_Index, "AutoHdr")
LV_ModifyCol(A_Index, 164)
LV_ModifyCol(1, 64)
LV_ModifyCol(2, 120)
LV_ModifyCol(3, 120)
LV_ModifyCol(4, 164)
LV_ModifyCol(5, 164)
LV_ModifyCol(6, 64)
LV_ModifyCol(7, 64)
LV_ModifyCol(8, 64)
LV_ModifyCol(9, 164)
LV_ModifyCol(10, 164)
LV_ModifyCol(11, 0)
LV_ModifyCol(12, 0)
LV_ModifyCol(13, 0)
LV_ModifyCol(14, 0)
LV_ModifyCol(15, 0)
LV_ModifyCol(16, 0)
;Gui, Tab, Playlist,, exact
GUi, Tab, PlayList,, Exact
HIL := IL_Create()
ImgW := 150 ; Breite der Bilder
ImgH := 220 ; Höhe der Bilder
IL_SetSize(HIL, ImgW, ImgH)
FileDelete, rows.txt
rows = Cover|Actors|Awards|BoxOffice|Country|Director|DVD|Genre|imdbID|imdbRating|imdbVotes|Language|Metascore|Plot|Poster|Production|Rated|Released|Response|Runtime|Title|totalSeasons|Type|Website|Writer|Year
RowsArr := StrSplit(Rows,"|")
MaxRows := RowsArr.Count() ;25
FileAppend, % MaxRows "`n" rows, rows.txt
Gui, Add, ListView, w1200 h800 +LV0x00010000 +LV0x20 vLV AltSubmit Grid cBlack BackgroundFFDD99, % Rows
LV_SetImageList(HIL, 1)
LVA_ListViewAdd("LV", "+AR cfFF0000 cbFFDD99")
Loop, % LV_GetCount("Columns")
; LV_ModifyCol(A_Index, "AutoHdr")
LV_ModifyCol(A_Index, 150)
Gui, Show, , % A_ScriptName
Gosub TestMe
;Run, ListViewLoad.txt
OnMessage("0x4E", "LVA_OnNotify")
Return
/*
;imdbArr := JSON2AHK(imdb)
;MsgBox,,%A_LineNumber%-imdbObj, % imdbObj ; {"Title":"Mr. Robot","Year":"2015–2019","Rated":"TV-MA","Released":"24 Jun 2015","Runtime":"49 min","Genre":"Crime, Drama, Thriller","Director":"N/A","Writer":"Sam Esmail","Actors":"Rami Malek, Christian Slater, Carly Chaikin, Martin Wallström","Plot":"Elliot, a brilliant but highly unstable young cyber-security engineer and vigilante hacker, becomes a key figure in a complex game of global dominance when he and his shadowy allies try to take down the corrupt corporation he works for.","Language":"English, Swedish, Danish, Chinese, Persian, Spanish, Arabic, German","Country":"USA","Awards":"Won 2 Golden Globes. Another 19 wins & 78 nominations.","Poster":"https://m.media-amazon.com/images/M/MV5BMzgxMmQxZjQtNDdmMC00MjRlLTk1MDEtZDcwNTdmOTg0YzA2XkEyXkFqcGdeQXVyMzQ2MDI5NjU@._V1_SX300.jpg","Ratings":[{"Source":"Internet Movie Database","Value":"8.5/10"}],"Metascore":"N/A","imdbRating":"8.5","imdbVotes":"334,252","imdbID":"tt4158110","Type":"series","totalSeasons":"4","Response":"True"}
;MsgBox,,%A_LineNumber%-imdbObj, % imdbArr["imdbID"] ;tt4158110
;MsgBox,,%A_LineNumber%-imdbObj, % imdbArr[imdbArr["imdbID"], "imdbID"] ; tt4158110
*/
TestMe:
;/*
drei := true
imdbObj := omdb("tt4158110",,,APIkey) ; mr. Robot
imdbArr := JSON2AHK(imdbObj)
Gosub, ListViewLoad
If drei
{
imdbObj := omdb("tt3896198",,,APIkey) ; Guardians of the Galaxy V.2
imdbArr := JSON2AHK(imdbObj)
Gosub, ListViewLoad
imdbObj := omdb("tt0383164",,,APIkey) ; Der Adler
imdbArr := JSON2AHK(imdbObj)
Gosub, ListViewLoad
FilmTitel := "tt3896198"
Gosub, LoadActores
FilmTitel := "tt4158110"
Gosub, LoadActores
FilmTitel := "tt0383164"
Gosub, LoadActores
}
;*/
Return
Tab3:
Return
;#########################################################################################################################
; ======================================================================================================================
LoadActores:
;imdb datenbank auslesen Seite 2
;https://www.autohotkey.com/boards/viewtopic.php?p=391696#p391696
UrlDownLoadToFile, % "https://www.imdb.com/title/" FilmTitel, html.txt
FileRead, html, html.txt
;FilmTitel := "tt0818165"
Doc := DocumentFromHTML(HTML)
CastObj := {}
CastList := Doc.querySelector("table.cast_list")
TableRows := CastList.getElementsByTagName("tr")
NumOfRows := TableRows.length
RowIndex := 1 ; erste Zeile überspringen
While (RowIndex < NumOfRows) {
TR := TableRows[RowIndex]
Actor := {}
; Zweites <td> Element der Zeile
Actor["Actor"] := Trim(TR.querySelector("td:nth-child(2)").innertext, " `t`r`n")
; Viertes <td> Element der Zeile
Actor["Character"] := Trim(TR.querySelector("td:nth-child(4)").innertext, " `t`r`n")
; <td> Element der Klasse "primary_photo"
TD := TR.querySelector("td.primary_photo")
Photo := {}
Photo["HREF"] := TD.querySelector("a").href
Img := TD.querySelector("img")
For Each, Attr In ["Height", "Width", "Alt", "Title", "Src", "Loadlate"]
Photo[Attr] := Img.getAttribute(Attr)
Actor["Photo"] := Photo
CastObj.Push(Actor)
RowIndex++
For Each, Object In Actor {
If IsObject(Object)
For K, var In Object
Obj2TreeVar .= RowIndex-1 ";" A_Index ";" k ";" var "`n"
Else
Obj2TreeVar .= (A_Index-1) ? (RowIndex-1 ";" 9 ";" "Character" ";" Object "`n") : (RowIndex-1 ";" 8 ";" "Actor" ";" Object "`n")
}
}
LoopCounter := RowIndex-1
; ======================================================================================================================
;Gui, Add, TreeView, w1000 r40 AltSubmit vTV gSubTV
;Obj2Tree(CastObj)
;Gui, Show, , ObjektTree
; ======================================================================================================================
propsAllArr := object()
Obj2TreeArr := object()
Loop, Parse, Obj2TreeVar, `n
{
ALoopField := A_LoopField
Split := StrSplit(ALoopField, ";")
Obj2TreeArr[Split.1, Split.2, Split.3] := Split[4]
If InStr(Split.4, "ref_")
{
HREFm := StrSplit(Split.4, "/")
Split[6] := "https://m.imdb.com/name/" HREFm[3]
Obj2TreeArr[Split.1, 11, "HREFm"] := Split[6]
Obj2TreeArr[Split.1, 12, "ActorID"] := HREFm[3]
}
; Split[7] := HREFm[3]
If InStr(Split.4, "_V1_")
{
ActorPictureSplit := StrSplit(Split.4, "_V1_") ; grosses ActorPicture
Split[5] := ActorPictureSplit[1] "_V1_.jpg"
Obj2TreeArr[Split.1, 10, "BigPicture"] := Split[5]
If !FileExist(FilmTitel "\Actors")
FileCreateDir, % FilmTitel "\Actors"
PicFileName := FilmTitel "\Actors\" FilmTitel A_Space HREFm[3] A_Space (Obj2TreeArr[Split.1, 8, "Actor"]) ".jpg" ; "tt0480249 nm0000226 Will Smith.jpg"
UrlDownLoadToFile, % Split[5], % PicFileName
Loop, % A_ScriptDir "\" FilmTitel "\Actors\*.jpg"
If InStr(A_LoopFilePath, (Obj2TreeArr[Split.1, 8, "Actor"]))
{
ALoopFileName := A_LoopFileName
If InStr(_V1_Counter, A_LoopFilePath)
continue
_V1_Counter .= A_LoopFilePath "|"
; https://www.autohotkey.com/boards/viewtopic.php?p=356281 by BoBo
; Eigenschaften/properties der Actoren aus Fotodatei laden
MaxGap := 12
SplitPath,% A_LoopFilePath, fileName, dirPath
Folder := ComObjCreate("Shell.Application").NameSpace(dirPath)
FolderItem := Folder.ParseName(fileName)
Gap := 0
While (Gap < MaxGap)
If (Value := Folder.GetDetailsOf(FolderItem, A_Index - 1))
{
ActorPicName := (A_Index - 1=0) ? (Value, Gap := 0) : ("", Gap := 0)
If ActorPicName
Obj2TreeArr[Split.1, 13, "ActorPicName"] := ActorPicName
ActorPicGröße := (A_Index - 1=1) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicGröße
Obj2TreeArr[Split.1, 14, "ActorPicGröße"] := ActorPicGröße
ActorPicDatum := (A_Index - 1=12) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicDatum
Obj2TreeArr[Split.1, 15, "ActorPicDatum"] := ActorPicDatum
ActorPicAutoren := (A_Index - 1=20) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicAutoren
Obj2TreeArr[Split.1, 16, "ActorPicAutoren"] := ActorPicAutoren
ActorPicCopyright := (A_Index - 1=25) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicCopyright
Obj2TreeArr[Split.1, 17, "ActorPicCopyright"] := ActorPicCopyright
ActorPicTitel := (A_Index - 1=21) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicTitel
Obj2TreeArr[Split.1, 18, "ActorPicTitel"] := ActorPicTitel
ActorPicAbmessungen := (A_Index - 1=31) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicAbmessungen
Obj2TreeArr[Split.1, 19, "ActorPicAbmessungen"] := ActorPicAbmessungen
ActorPicBewertung := (A_Index - 1=19) ? (Value ";", Gap := 0) : ("", Gap := 0)
If ActorPicBewertung
Obj2TreeArr[Split.1, 20, "ActorPicBewertung"] := ActorPicBewertung
propsAllArr[A_Index - 1] := Value
propsAll .= A_Index - 1 " : " Value " | ", Gap := 0
}
Else
Gap++
;msgbox,,%A_LineNumber%, % Obj2TreeArr[Split.1, 13, "ActorPicName"], .1
}
;FileDelete, % ALoopFileName "-allPictureDetails.txt"
;FileAppend, % propsAll, % ALoopFileName "-allPictureDetails.txt"
;Run, % ALoopFileName "-allPictureDetails.txt"
propsAll=""
}
If !FileExist(FilmTitel "\Actors")
FileCreateDir, % FilmTitel "\Actors"
; msgbox,,%A_LineNumber%, % Split[1] "`n" Split[2] "`n" Split[3] "`n" Split[4] "`n" Split[5] "`n" Split[6] "`n" Split[x]
}
Gosub, ListViewLoadActors
Test := true_
If Test
Loop, % LoopCounter
{
MsgBox,,Zeile: %A_LineNumber% | %A_Index% %A_Space% %xcounter% Obj2TreeArr, % ""
. FilmTitel "`n"
. Obj2TreeArr[A_Index, 12, "ActorID"] "`n"
. Obj2TreeArr[A_Index, 8, "Actor"] "`n"
. Obj2TreeArr[A_Index, 9, "Character"] "`n"
. Obj2TreeArr[A_Index, 3, "HREF"] "`n"
. Obj2TreeArr[A_Index, 4, "Loadlate"] "`n"
. Obj2TreeArr[A_Index, 10, "BigPicture"] "`n"
. Obj2TreeArr[A_Index, 11, "HREFm"] "`n"
. Obj2TreeArr[A_Index, 13, "ActorPicName"] "`n"
. Obj2TreeArr[A_Index, 14, "ActorPicGröße"] "`n"
. Obj2TreeArr[A_Index, 15, "ActorPicDatum"] "`n"
. Obj2TreeArr[A_Index, 16, "ActorPicAutoren"] "`n"
. Obj2TreeArr[A_Index, 17, "ActorPicCopyright"] "`n"
. Obj2TreeArr[A_Index, 18, "ActorPicTitel"] "`n"
. Obj2TreeArr[A_Index, 19, "ActorPicAbmessungen"] "`n"
. Obj2TreeArr[A_Index, 20, "ActorPicBewertung"],7
}
properties := ""
For i, v In propsAllArr {
properties .= i A_Tab v "`n"
}
;FileDelete, properties.txt
;FileAppend, % properties, properties.txt
;Run, properties.txt
MsgBox,,Zeile: #%A_LineNumber%, FERTIG!,1
Return
;#########################################################################################################################
; ======================================================================================================================
ListViewLoad:
Gui, ListView, LV
ListViewLoad := imdbArr[imdbArr["imdbID"], "Actors"] ";"
. imdbArr[imdbArr["imdbID"], "Awards"] ";"
. imdbArr[imdbArr["imdbID"], "BoxOffice"] ";"
. imdbArr[imdbArr["imdbID"], "Country"] ";"
. imdbArr[imdbArr["imdbID"], "Director"] ";"
. imdbArr[imdbArr["imdbID"], "DVD"] ";"
. imdbArr[imdbArr["imdbID"], "Genre"] ";"
. imdbArr[imdbArr["imdbID"], "imdbID"] ";"
. imdbArr[imdbArr["imdbID"], "imdbRating"] ";"
. imdbArr[imdbArr["imdbID"], "imdbVotes"] ";"
. imdbArr[imdbArr["imdbID"], "Language"] ";"
. imdbArr[imdbArr["imdbID"], "Metascore"] ";"
. imdbArr[imdbArr["imdbID"], "Plot"] ";"
. imdbArr[imdbArr["imdbID"], "Poster"] ";"
. imdbArr[imdbArr["imdbID"], "Production"] ";"
. imdbArr[imdbArr["imdbID"], "Rated"] ";"
. imdbArr[imdbArr["imdbID"], "Released"] ";"
. imdbArr[imdbArr["imdbID"], "Response"] ";"
. imdbArr[imdbArr["imdbID"], "Runtime"] ";"
. imdbArr[imdbArr["imdbID"], "Title"] ";"
. imdbArr[imdbArr["imdbID"], "totalSeasons"] ";"
. imdbArr[imdbArr["imdbID"], "Type"] ";"
. imdbArr[imdbArr["imdbID"], "Website"] ";"
. imdbArr[imdbArr["imdbID"], "Writer"] ";"
. imdbArr[imdbArr["imdbID"], "Year"] "`n"
FileAppend, % ListViewLoad "", ListViewLoad.txt
GuiControl, -Redraw, LV
LVcounter++
Img%LVcounter% := (imdbArr[imdbArr["imdbID"], "imdbID"]) ".jpg"
IL_Add(HIL, Img%LVcounter%, 0xFFFFFF, 1)
LV_Add("Icon" . LVcounter, "", StrSplit(ListViewLoad, ";")*)
lva_Refresh("LV")
lva_Refresh(LV)
GuiControl, +Redraw, LV
Return
;#########################################################################################################################
; ======================================================================================================================
ListViewLoadActors:
Gui, ListView, LVActors
/*
xRowsLVActors = FilmID|ActorID|Actor|Character|Loadlate|HREF|BigPicture|ActorPicName|ActorPicGröße|ActorPicAutoren|ActorPicDatum|ActorPicCopyright|ActorPicTitel|ActorPicAbmessungen|ActorPicBewertung
GuiControl, -Redraw, LVActors
LVcounterActors++
Img%LVcounterActors% := A_ScriptDir "\" FilmTitel "\Actors\" Obj2TreeArr[A_Index, 13, "ActorPicName"]
IL_Add(HILActors, Img%LVcounterActors%, 0xFFFFFF, 1)
LV_Add("Icon" . 999999, "", StrSplit(xRowsLVActors, "|")*)
GuiControl, +Redraw, LVActors
*/
Loop, % LoopCounter
{
If Obj2TreeArr[A_Index, 9, "Character"]
{
ListViewLoadActors := FilmTitel ";"
. Obj2TreeArr[A_Index, 12, "ActorID"] ";"
. Obj2TreeArr[A_Index, 8, "Actor"] ";"
. Obj2TreeArr[A_Index, 9, "Character"] ";"
. Obj2TreeArr[A_Index, 4, "Loadlate"] ";"
. Obj2TreeArr[A_Index, 3, "HREF"] ";"
. Obj2TreeArr[A_Index, 10, "BigPicture"] ";"
. Obj2TreeArr[A_Index, 13, "ActorPicName"] ";"
. Obj2TreeArr[A_Index, 14, "ActorPicGröße"] ";"
. Obj2TreeArr[A_Index, 16, "ActorPicAutoren"] ";"
. Obj2TreeArr[A_Index, 15, "ActorPicDatum"] ";"
. Obj2TreeArr[A_Index, 17, "ActorPicCopyright"] ";"
. Obj2TreeArr[A_Index, 18, "ActorPicTitel"] ";"
. Obj2TreeArr[A_Index, 19, "ActorPicAbmessungen"] ";"
. Obj2TreeArr[A_Index, 20, "ActorPicBewertung"] "`n"
; MsgBox,,%A_LineNumber% ActorPicName,% Obj2TreeArr[A_Index, 13, "ActorPicName"]
GuiControl, -Redraw, LVActors
LVcounterActors++
Img%LVcounterActors% := A_ScriptDir "\" FilmTitel "\Actors\" Obj2TreeArr[A_Index, 13, "ActorPicName"]
IL_Add(HILActors, Img%LVcounterActors%, 0xFFFFFF, 1)
LV_Add("Icon" . LVcounterActors, "", StrSplit(ListViewLoadActors, ";")*)
lva_Refresh("LVActors")
lva_Refresh(LVActors)
GuiControl, +Redraw, LVActors
}}
FileDelete, % FilmTitel "\Actors\" FilmTitel ".txt"
FileAppend, % ActorsSaveVar, % FilmTitel "\Actors\" FilmTitel ".txt"
Return
;#########################################################################################################################
; ======================================================================================================================
; Originally released by teadrinker -> https://www.autohotkey.com/boards/viewtopic.php?p=333543#p333543
; ======================================================================================================================
JSON2AHK_(JSON, Recursive := False) {
Local
Static Doc := ComObjCreate("htmlfile")
, __ := Doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
, JS := Doc.parentWindow
If (!Recursive)
Obj := JSON2AHK(JS.eval("(" . JSON . ")"), True)
Else If !IsObject(JSON)
Obj := JSON
Else If (JSON.toString() != "[object Object]") {
Obj := []
Loop % JSON.length
Obj.Push(JSON2AHK(JSON[A_Index - 1], True) )
}
Else {
Obj := {}
Keys := JS.Object.keys(JSON)
Loop % Keys.length {
K := Keys[A_Index - 1]
Obj[K] := JSON2AHK(JSON[K], True)
}
}
Return Obj
}
;#########################################################################################################################
; ======================================================================================================================
JSON2AHK(JSON, Recursive := False) {
Local
Static Doc := ComObjCreate("htmlfile")
, __ := Doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
, JS := Doc.parentWindow
If (!Recursive)
Obj := JSON2AHK(JS.eval("(" . JSON . ")"), True)
Else If !IsObject(JSON)
Obj := JSON
Else If (JSON.toString() != "[object Object]") {
Obj := []
Loop % JSON.length
Obj.Push(JSON2AHK(JSON[A_Index - 1], True) )
}
Else {
Obj := {}
Keys := JS.Object.keys(JSON)
Loop % Keys.length {
K := Keys[A_Index - 1]
Obj[K] := JSON2AHK(JSON[K], True)
}
}
imdbID := Obj[Obj["imdbID"], "imdbID"] := Obj["imdbID"] ; muss oben stehen
IfNotExist % (Obj[Obj["imdbID"], "imdbID"])
FileCreateDir % (Obj[Obj["imdbID"], "imdbID"])
imdbID := Obj[Obj["imdbID"], "imdbID"] := Obj["imdbID"] ; muss oben stehen
IfNotExist % (Obj[Obj["imdbID"], "imdbID"])
FileCreateDir % (Obj[Obj["imdbID"], "imdbID"])
KeysObjCount := Obj[Obj["imdbID"], "KeysObjCount"] := Obj.Count()
Actors := Obj[Obj["imdbID"], "Actors"] := Obj["Actors"]
Awards := Obj[Obj["imdbID"], "Awards"] := Obj["Awards"]
BoxOffice := Obj[Obj["imdbID"], "BoxOffice"] := Obj["BoxOffice"]
Country := Obj[Obj["imdbID"], "Country"] := Obj["Country"]
Director := Obj[Obj["imdbID"], "Director"] := Obj["Director"]
DVD := Obj[Obj["imdbID"], "DVD"] := Obj["DVD"]
Genres := Obj[Obj["imdbID"], "Genre"] := Obj["Genre"]
imdbRating := Obj[Obj["imdbID"], "imdbRating"] := Obj["imdbRating"]
imdbVotes := Obj[Obj["imdbID"], "imdbVotes"] := Obj["imdbVotes"]
Language := Obj[Obj["imdbID"], "Language"] := Obj["Language"]
Metascore := Obj[Obj["imdbID"], "Metascore"] := Obj["Metascore"]
Plot := Obj[Obj["imdbID"], "Plot"] := Obj["Plot"]
Poster := Obj[Obj["imdbID"], "Poster"] := Obj["Poster"]
IfNotExist % (Obj[Obj["imdbID"], "imdbID"]) "\" (Obj[Obj["imdbID"], "imdbID"]) ".jpg"
; UrlDownLoadToFile, % (Obj[Obj["imdbID"], "Poster"])
UrlDownLoadToFile, % StrReplace((Obj[Obj["imdbID"], "Poster"]), "SX300") ; grosses poster
, % (Obj[Obj["imdbID"], "imdbID"]) "\" (Obj[Obj["imdbID"], "imdbID"]) ".jpg"
IfNotExist % (Obj[Obj["imdbID"], "imdbID"]) ".jpg"
; UrlDownLoadToFile, % (Obj[Obj["imdbID"], "Poster"]) ; kleines poster <50KB
UrlDownLoadToFile, % StrReplace((Obj[Obj["imdbID"], "Poster"]), "SX300") ; grosses poster >50KB
, % (Obj[Obj["imdbID"], "imdbID"]) ".jpg"
Rated := Obj[Obj["imdbID"], "Rated"] := Obj["Rated"]
Released := Obj[Obj["imdbID"], "Released"] := Obj["Released"]
Response := Obj[Obj["imdbID"], "Response"] := Obj["Response"]
Runtime := Obj[Obj["imdbID"], "Runtime"] := Obj["Runtime"]
Title := Obj[Obj["imdbID"], "Title"] := Obj["Title"]
totalSeasons := Obj[Obj["imdbID"], "totalSeasons"] := Obj["totalSeasons"]
Type := Obj[Obj["imdbID"], "Type"] := Obj["Type"]
Website := Obj[Obj["imdbID"], "Website"] := Obj["Website"]
Writer := Obj[Obj["imdbID"], "Writer"] := Obj["Writer"]
Year := Obj[Obj["imdbID"], "Year"] := Obj["Year"]
Return Obj
}
;#########################################################################################################################
; ======================================================================================================================
; https://www.autohotkey.com/boards/viewtopic.php?p=388487#p388487 by BoBo
; ======================================================================================================================
omdb(req:="",year:="",p:=0,APIkey:="") {
if !req
Return "Missing parameter"
req := SubStr(req,1,2)="tt" ? "i=" . req . "&plot=full"
: (p > 0) ? "s=" . StrReplace(req,A_Space,"+") . "&y=" . year . "&page=" . p . "&plot=full"
: (req != "") ? "t=" . StrReplace(req,A_Space,"+") . "&y=" . year . "&plot=full"
: ""
myAPIkey:= APIkey ; http://omdbapi.com/apikey.aspx
reqURL := "http://www.omdbapi.com/?apikey="
. myAPIkey
. "&"
. req
; omdb := JSON.Load(UrlDownloadToVar(reqURL)) ; laden in ein object
omdb := UrlDownloadToVar(reqURL) ;
Return omdb
}
;#########################################################################################################################
; ======================================================================================================================
UrlDownloadToVar(url) {
req := ComObjCreate("Msxml2.XMLHTTP")
req.open("GET", url, False)
req.Send()
Return req.responseText
}
;#########################################################################################################################
; ======================================================================================================================
; https://www.autohotkey.com/boards/viewtopic.php?p=350106#p350106 by Teadrinker, modified by just me
; ======================================================================================================================
DocumentFromHTML(HTML) {
Local
Doc := ComObjCreate("htmlfile")
Doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
Doc.write(HTML)
Return Doc
}
;#########################################################################################################################
;-------------------------------------------------------------------------------------------------------------------------
; https://www.autohotkey.com/boards/viewtopic.php?p=389488#p389488
; ======================================================================================================================
; IL_SetSize(ILID, W, H)
; Function: Sets the dimensions of images in an image list and removes all images from the list.
; Parameters: ILID - The unique ID (HIMAGELIST) of the ImageList returned by IL_Create().
; W - The width, in pixels, of all images in the image list.
; H - The height, in pixels, of all images in the image list.
; Return values: Returns nonzero if successful, or zero otherwise.
; MSDN: http://msdn.microsoft.com/en-us/library/bb775224(VS.85).aspx
; Remarks: All images in an image list have the same dimensions.
; ======================================================================================================================
IL_SetSize(ILID, W, H) {
Return DllCall("ComCtl32.dll\ImageList_SetIconSize", "Ptr", ILID, "Int", W, "Int", H, "Int")
}
;#########################################################################################################################
;-------------------------------------------------------------------------------------------------------------------------
UPDATEDSCRIPT:
FileGetAttrib,attribs,%A_ScriptFullPath%
IfInString,attribs,A
{
FileSetAttrib,-A,%A_ScriptFullPath%
SplashTextOn,,,Updated script,
Sleep,1500
Reload
}
;SetTimer,UPDATEDSCRIPT,500
Return
;#########################################################################################################################
;-------------------------------------------------------------------------------------------------------------------------
SubTV:
If (A_GuiEvent = "Normal") && !TV_GetChild(A_EventInfo) {
Path := ""
ID := A_EventInfo
While (ID := TV_GetParent(ID)) {
TV_GetText(Txt, ID)
Path := Txt "`n" (Path <> "" ? "|" . Path : "") "`n" ID ; "`n`n" TV_GetParent(ID)
}
ToolTip, %Path%
}
;msgbox,,%A_LineNumber%, % Obj2TreeVar
; ======================================================================================================================
Obj2Tree(Obj, Parent := 0) {
For K, V In Obj {
If IsObject(V)
Obj2Tree(V, TV_Add(K, Parent, "Expand1"))
Else
TV_Add(V, TV_Add(K, Parent, "Expand1"))
}
}
;#########################################################################################################################
;-------------------------------------------------------------------------------------------------------------------------
[/code]
[attachment=0]Unbenannt.png[/attachment]