You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: main.lua
+38-35
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
----NO-WORD-WRAP FOR THIS SCRIPT. https://GITHUB.COM/yt-dlp/yt-dlp/releases FOR YOUTUBE STREAMING. CHECK FOR UPDATED BUILDS OR ELSE SOME NEW UPLOADS AREN'T SUPPORTED. RUMBLE, ODYSSEY, REDTUBE & RUTUBE.RU ALSO. CAN RE-ASSIGN open_url IN SMPLAYER (EXAMPLE: CTRL+U & SHIFT+TAB). X.COM NOT seeking.
2
2
----WINDOWS : --script=. IN SMPLAYER &/OR script=../ IN mpv.conf. PLACE ALL scripts WITH smplayer.exe & ENTER ITS ADVANCED mpv PREFERENCES. CAN ALSO CREATE 1-LINE TEXT-FILE mpv\mpv\mpv.conf INSIDE smplayer-portable. mpv.conf ENABLES DOUBLE-CLICKING mpv.exe & DRAG & DROP OF FILES & YOUTUBE URL, IN LINUX/MACOS TOO. IF NOT PORTABLE, SET-UP IS LIKE FOR LINUX: --script=~/Desktop/mpv-scripts/
3
-
----LINUX/MACOS: --script=~/Desktop/mpv-scripts/ IN SMPLAYER &/OR script=~/Desktop/mpv-scripts/ IN mpv.conf. PLACE mpv-scripts ON Desktop. EDIT ~/.config/mpv/mpv.conf TO DRAG & DROP DIRECTLY ONTO MPV. IN LINUX CAN RIGHT-CLICK ON AN MP4 & OPEN-WITH-MPV. LINUX snap: --script=/home/user/Desktop/mpv-scripts/
3
+
----LINUX/MACOS: --script=~/Desktop/mpv-scripts/ IN SMPLAYER &/OR script=~/Desktop/mpv-scripts/ IN mpv.conf. PLACE mpv-scripts ON Desktop. EDIT ~/.config/mpv/mpv.conf TO DRAG & DROP DIRECTLY ONTO MPV. IN MACOS CAN "Keep in Dock". IN LINUX CAN RIGHT-CLICK ON AN MP4 & OPEN-WITH-MPV. LINUX snap: --script=/home/user/Desktop/mpv-scripts/
4
4
----ANDROID : script=/sdcard/Android/media/is.xyz.mpv/ IN ADVANCED SETTINGS: Edit mpv.conf. PLACE ALL SCRIPTS IN THIS FOLDER IN INTERNAL MAIN STORAGE. OTHER FOLDERS DON'T WORK. ENABLE MPV MEDIA-ACCESS USING ITS FILE-PICKER, & SET BACKGROUND-PLAYBACK TO ALWAYS (GENERAL SETTING). 'sdcard'~='SD card'(EXTERNAL) CAN ALSO INSTALL cx-file-explorer & 920 (.APK). 920 CAN HANDLE WORDWRAP & WHITESPACE. https://SNAPDROP.NET CAN TRANSFER TO /sdcard/Android/media/is.xyz.mpv/
5
5
6
6
options= {
@@ -14,7 +14,7 @@ options = {
14
14
ytdl= { --YOUTUBE DOWNLOAD. PLACE EXECUTABLE WITH main.lua. LIST ALL POSSIBLE FILENAMES TO HOOK, IN PREFERRED ORDER. EXISTING HOOK APPENDS. NO ";" ALLOWED. CAN SET SMPLAYER Preferences→Network TO USE mpv INSTEAD OF auto. NOT FOR ANDROID OR LINUX snap.
15
15
"yt-dlp" , --.exe
16
16
"yt-dlp_x86" , --win32 REMOVE THESE TO SHORTEN script-opts. WILDCARDS INVALID.
17
-
"yt-dlp_linux", --CASE SENSITIVE. sudo apt remove yt-dlp TO REMOVE OLD VERSION.
17
+
"yt-dlp_linux", --CASE SENSITIVE. RIGHT-CLICK→Properties→Permissions→Allow executing file as program. sudo apt remove yt-dlp TO REMOVE OLD VERSION.
'osd-level 0','osc no', --DEFAULTS=3,yes osd-level=0 PREVENTS UNWANTED MESSAGES @load-script. osc AWAITS ITS CONFIG. SOME THINGS MUST BE SWITCHED OFF/ON.
35
35
},
36
-
title='{\\fs40\\bord2}${media-title}', --REMOVE FOR NO title. $ FOR PROPERTIES. STYLE OVERRIDES: \\,fs##,bord# = \,FONTSIZE(p),BORDER(p) MORE: alpha##,an#,c######,shad#,b1,be1,i1,u1,s1,fn*,fr##,fscx##,fscy## = TRANSPARENCY,ALIGNMENT-NUMPAD,COLOR,SHADOW(p),BOLD,BLUREDGES,ITALIC,UNDERLINE,STRIKEOUT,FONTNAME,FONTROTATION(°ANTI-CLOCKWISE),FONTSCALEX(%),FONTSCALEY(%) cFF=RED,cFF0000=BLUE,ETC title HAS NO TOGGLE.
37
-
title_duration=6 , --SECONDS.
38
-
autoloop_duration=6 , --SECONDS. 0 MEANS NO AUTO-loop. MAX duration TO ACTIVATE INFINITE loop, FOR GIF & SHORT MP4. NOT FOR JPEG (MIN>0). BASED ON https://GITHUB.COM/zc62/mpv-scripts/blob/master/autoloop.lua
36
+
title='{\\fs40\\bord2}${media-title}', --REMOVE FOR NO title. STYLE OVERRIDES: \\N,fs##,bord# = NEWLINE,FONTSIZE(p),BORDER(p) MORE: alpha##,an#,c######,shad#,b1,be1,i1,u1,s1,fn*,fr##,fscx##,fscy## = TRANSPARENCY,ALIGNMENT-NUMPAD,COLOR,SHADOW(p),BOLD,BLUREDGES,ITALIC,UNDERLINE,STRIKEOUT,FONTNAME,FONTROTATION(°ANTI-CLOCKWISE),FONTSCALEX(%),FONTSCALEY(%) cFF=RED,cFF0000=BLUE,ETC title HAS NO TOGGLE.
37
+
title_duration=6 , --SECONDS.
38
+
autoloop_duration=6 , --SECONDS. 0 MEANS NO AUTO-loop. MAX duration TO ACTIVATE INFINITE loop, FOR GIF & SHORT MP4. NOT FOR JPEG (MIN>0). BASED ON https://GITHUB.COM/zc62/mpv-scripts/blob/master/autoloop.lua
39
39
options_delay=.3 , --SECONDS, FROM playback_start. title ALSO TRIGGERS THEN.
40
40
options_delayed= { --@playback_started+options_delay, FOR EVERY FILE.
41
41
'osd-level 1','osc yes', --RETURNS osd & osc.
@@ -47,17 +47,17 @@ options = {
47
47
},
48
48
}
49
49
50
-
o,p,timers= {},{},{} --o,p=options,PROPERTIES. timers={playback_start,title} TRIGGER ONCE PER file.
50
+
o,p,timers= {},{},{} --o,p=options,PROPERTIES. timers={title_update,title_remove} TRIGGER ONCE PER file.
math.randomseed(os.time()+mp.get_time()) --os,mp=OPERATING-SYSTEM,MEDIA-PLAYER. os.time()=INTEGER SECONDS FROM 1970. mp.get_time()=μs IS MORE RANDOM THAN os.clock()=ms. os.getenv('RANDOM')=nil BUT COULD ECHO BACK %RANDOM% OR $RANDOM USING A subprocess.
53
53
54
-
functionpexpand(arg) --ALSO @print_arg, @show & @title_update. PROTECTED/PROPERTY EXPANSION. '${speed}+2'=3. COULD BE RENAMED ppexpand.
54
+
functionpexpand(arg) --ALSO @pexpand_to_string, @show & @title_update. PROTECTEDPROPERTY EXPANSION. '${speed}+2'=3. COULD BE RENAMED ppexpand.
55
55
iftype(arg)~='string' thenreturnargend
56
-
pcode, pval=pcall(loadstring('return '..mp.command_native({'expand-text',arg}))) --''→nil. load INVALID ON MPV.APP. PROTECTED-CALL.
directory=utils.split_path(gp('scripts')[1]) --ASSUME PRIMARY DIRECTORY IS split FROM WHATEVER THE USER ENTERED FIRST. mp.get_script_directory() & mp.get_script_file() DON'T WORK THE SAME WAY.
81
81
directory_expanded=mp.command_native({'expand-path',directory}) --command_native EXPANDS '~/' FOR ytdl_hook.
@@ -109,7 +109,7 @@ function playback_restart() --ALSO @on_pause
109
109
ifplayback_startedorp.pausethenreturnend--AWAIT UNPAUSE, IF PAUSED. PROCEED ONCE ONLY, PER file.
110
110
playback_started=true--ONLY AFTER UNPAUSE.
111
111
set_loop=gp('duration')>0andp.duration<o.autoloop_durationandmp.set_property('loop','inf') --autoloop BEFORE DELAY.
mp.register_event('end-file',function() playback_restarted,playback_started=set_loopandmp.set_property('loop','no') andnilend) --CLEAR SWITCHES FOR NEXT FILE. UNDO-set_loop.
@@ -120,21 +120,22 @@ function on_pause(_, paused)
120
120
end
121
121
mp.observe_property('pause','bool',on_pause)
122
122
123
-
functiontitle_update(data,title_duration) --@script-message & @timers.playback_start. DELAY REQUIRED TO SUPPRESS UNWANTED MESSAGES DUE TO SMPLAYER.
124
-
command=''
123
+
functiontitle_update(data,title_duration) --@script-message & @playback_restart. ALSO SETS options_delayed. DELAY REQUIRED TO SUPPRESS UNWANTED MESSAGES DUE TO SMPLAYER.
functionset(script_opt,val) --@script-message IN FUTURE VERSION. ULTIMATELY A GUI COULD CONTROL ALL SCRIPTS BY SENDING HUNDRED/S OF set COMMANDS. SIMPLER THAN SETTING script-opts. THE ORIGINAL options ARE ONLY AN EXAMPLE.
functioncallstring(string) loadstring(string)() end--@script-message. CAN REPLACE ANY OTHER. IRONICALLY GOOD EXAMPLES GET THEIR OWN NAMES. IF pcall, COULD BE RENAMED ploadstring. OR scall (STRING-CALL).
----~200 LINES & ~2000 WORDS. SPACE-COMMAS FOR SMARTPHONE. SOME TEXT EDITORS DON'T HAVE LEFT/RIGHT KEYS. LEADING COMMAS ON EACH LINE ARE AVOIDED.
195
+
----~200 LINES & ~3000 WORDS. ~8000 TYPICAL. SPACE-COMMAS FOR SMARTPHONE. SOME TEXT EDITORS DON'T HAVE LEFT/RIGHT KEYS. LEADING COMMAS ON EACH LINE ARE AVOIDED.
193
196
----SAFETY INSPECTION: LUA SCRIPTS CAN BE CHECKED FOR os.execute io.popen mp.command* utils.subprocess* load-script subprocess* run COMMANDS MAY BE UNSAFE, BUT expand-path expand-text show-text seek playlist-next playlist-play-index stop quit af* vf* ARE ALL SAFE. set* SAFE EXCEPT FOR script-opts WHICH MAY HOOK AN UNSAFE EXECUTABLE.
194
-
----FUTURE VERSION SHOULD ALSO HAVE o.double_pause_timeout=0 (p&p DOUBLE-TAP). BUT NOT WHEN PAUSED. NEEDED FOR android albumart.
195
-
----FUTURE VERSION SHOULD HAVE script-message set TO CHANGE o ON THE FLY. OR RESPOND TO CHANGING script-opts (function on_update).
196
-
----FUTURE VERSION COULD HAVE o.double_mute_timeout, o.double_aid_timeout, o.double_sid_timeout, o.double_mute_command, o.double_aid_command & o.double_sid_command.
197
+
----FUTURE VERSION SHOULD HAVE o.doubletap_timeout, o.double_mute_command, o.double_aid_command & o.double_sid_command.
198
+
----FUTURE VERSION SHOULD HAVE o.double_pause_timeout=0 (p&p DOUBLE-TAP). BUT NOT WHEN PAUSED. NEEDED FOR android albumart.
199
+
----FUTURE VERSION SHOULD RESPOND TO CHANGING script-opts (function on_update).
197
200
198
201
199
202
----aspect_none reset_zoom SMPLAYER ACTIONS CAN START EACH FILE (ADVANCED PREFERENCES). correct-pts ESSENTIAL. MOUSE WHEEL FUNCTION CAN BE SWITCHED FROM seek TO volume. seek WITH GRAPHS IS SLOW, BUT zoom & volume INSTANT. FINAL video-zoom CONTROLLED BY SMPLAYER→[gpu].
0 commit comments