^!+U:: { Link := A_Clipboard if (RegExMatch(Link, "^https?:\/\/")) { if (RegExMatch(Link, "^(?:https?:\/\/(?:www\.youtube\.com|youtu\.be)\/.*)$")) { static Counter := 0 ++Counter YT_Quality(Link, &Counter) } else { MPV_Open(Link) } } KeyWait "U" } YT_Quality(Link, &Counter) { MPV_Gui := "MPV_Gui" Counter MPV_Gui := Gui() MPV_Gui.OnEvent("Escape", (*) => MPV_GuiDestroy(MPV_Gui, &Counter)) MPV_Gui.Title := "yt2mpv [" Counter "]" MPV_Gui.Opt("-SysMenu") MPV_Gui.SetFont("s12", "Tahoma") List := [ "1080p # (bv*[height<=1080][width>=1080]/bv*[width<=1080])[format_note!*=HDR]+ba/b" , "720p # (bv*[height<=720][width>=1080]/bv*[width<=720])[format_note!*=HDR]+ba/b" , "AUDIO # ba/b" , "BEST # bv*[format_note!*=HDR]+ba/b" ] for each, Item in List { Name := Trim(StrSplit(Item, "#")[1]) Quality := Trim(StrSplit(Item, "#")[2]) MPV_Gui.Add("Button", "w100", Name).OnEvent("Click", MPV_Open.Bind(Link, Quality, MPV_Gui, &Counter)) } MPV_Gui["1080p"].Focus() MPV_Gui.Show } MPV_Open(Link, Quality := "", MPV_Gui := "", &Counter := "", *) { if (Quality and MPV_Gui) { Run "mpv --ytdl-format=" Quality " " Link,,, &PID MPV_GuiDestroy(MPV_Gui, &Counter) } else { Run "mpv " Link,,, &PID } StartTime := A_TickCount SetTimer MPV_WindowCheck.Bind(PID, StartTime), 100 } MPV_GuiDestroy(MPV_Gui, &Counter) { MPV_Gui.Destroy() --Counter } MPV_WindowCheck(PID, StartTime) { if (WinExist("ahk_pid" PID)) { WinActivate "ahk_pid" PID SetTimer , 0 } else if (A_TickCount >= StartTime + 40000) { ProcessClose PID SetTimer , 0 } }