summary refs log tree commit diff
path: root/.config/mpv/scripts/SmartCopyPaste-2.2.lua
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2020-12-16 19:49:01 +0100
committerRobert Günzler <r@gnzler.io>2021-01-21 19:39:13 +0100
commitcb0f13135fbbae8c3d1f66bb236fd2652fd5e4b8 (patch)
tree67c0b3fd6bde5b54db33cff5bb21dde9438f7c1f /.config/mpv/scripts/SmartCopyPaste-2.2.lua
parent81bd6e5fbf3001220693d30ce4bd4ebd06a3973f (diff)
mpv: update to make use of script-dirs
Diffstat (limited to '')
-rw-r--r--.config/mpv/scripts/SmartCopyPaste-2.2.lua324
1 files changed, 0 insertions, 324 deletions
diff --git a/.config/mpv/scripts/SmartCopyPaste-2.2.lua b/.config/mpv/scripts/SmartCopyPaste-2.2.lua
deleted file mode 100644
index 37f695a..0000000
--- a/.config/mpv/scripts/SmartCopyPaste-2.2.lua
+++ /dev/null
@@ -1,324 +0,0 @@
--- Copyright (c) 2020, Eisa AlAwadhi
--- License: BSD 2-Clause License
-
--- Creator: Eisa AlAwadhi
--- Project: SmartCopyPaste
--- Version: 2.2
-
-local utils = require 'mp.utils'
-local msg = require 'mp.msg'
-local protocols
-local extensions
-local pasted = false
-
-----------------------------USER CUSTOMIZATION SETTINGS-----------------------------------
---These settings are for users to manually change some options in the script.
---Keybinds can be defined in the bottom of the script.
-
-local device = nil --nil is for automatic device detection, or manually change to: 'windows' or 'mac' or 'linux'
-
-local linux_copy = 'wl-copy' --copy command that will be used in Linux. OR write a different command
-local linux_paste = 'wl-paste' --paste command that will be used in Linux. OR write a different command
-
-local mac_copy = 'pbcopy' --copy command that will be used in MAC. OR write a different command
-local mac_paste = 'pbpaste' --paste command that will be used in MAC. OR write a different command
-
-local windows_copy = 'powershell' --'powershell' is for using windows powershell to copy. OR write the copy command, e.g: ' clip'
-local windows_paste = 'powershell' --'powershell' is for using windows powershell to paste. OR write the paste command
-
-local paste_anything = false --false is for specific paste based on the specified extensions and protocols. Change to true so paste accepts anything (not recommended to change this).
-
-if not paste_anything then
-	protocols = { --add below (after a comma) any protocol you want SmartCopyPaste to work with; e.g: ,'ftp://'
-		'https?://' ,'magnet:'
-	}
-	extensions = { --add below (after a comma) any extension you want SmartCopyPaste to work with; e.g: ,'pdf'
-		--video & audio
-		'ac3', 'a52', 'eac3', 'mlp', 'dts', 'dts-hd', 'dtshd', 'true-hd', 'thd', 'truehd', 'thd+ac3', 'tta', 'pcm', 'wav', 'aiff', 'aif',  'aifc', 'amr', 'awb', 'au', 'snd', 'lpcm', 'yuv', 'y4m', 'ape', 'wv', 'shn', 'm2ts', 'm2t', 'mts', 'mtv', 'ts', 'tsv', 'tsa', 'tts', 'trp', 'adts', 'adt', 'mpa', 'm1a', 'm2a', 'mp1', 'mp2', 'mp3', 'mpeg', 'mpg', 'mpe', 'mpeg2', 'm1v', 'm2v', 'mp2v', 'mpv', 'mpv2', 'mod', 'tod', 'vob', 'vro', 'evob', 'evo', 'mpeg4', 'm4v', 'mp4', 'mp4v', 'mpg4', 'm4a', 'aac', 'h264', 'avc', 'x264', '264', 'hevc', 'h265', 'x265', '265', 'flac', 'oga', 'ogg', 'opus', 'spx', 'ogv', 'ogm', 'ogx', 'mkv', 'mk3d', 'mka', 'webm', 'weba', 'avi', 'vfw', 'divx', '3iv', 'xvid', 'nut', 'flic', 'fli', 'flc', 'nsv', 'gxf', 'mxf', 'wma', 'wm', 'wmv', 'asf', 'dvr-ms', 'dvr', 'wtv', 'dv', 'hdv', 'flv','f4v', 'f4a', 'qt', 'mov', 'hdmov', 'rm', 'rmvb', 'ra', 'ram', '3ga', '3ga2', '3gpp', '3gp', '3gp2', '3g2', 'ay', 'gbs', 'gym', 'hes', 'kss', 'nsf', 'nsfe', 'sap', 'spc', 'vgm', 'vgz', 'm3u', 'm3u8', 'pls', 'cue',
-		--images
-		"ase", "art", "bmp", "blp", "cd5", "cit", "cpt", "cr2", "cut", "dds", "dib", "djvu", "egt", "exif", "gif", "gpl", "grf", "icns", "ico", "iff", "jng", "jpeg", "jpg", "jfif", "jp2", "jps", "lbm", "max", "miff", "mng", "msp", "nitf", "ota", "pbm", "pc1", "pc2", "pc3", "pcf", "pcx", "pdn", "pgm", "PI1", "PI2", "PI3", "pict", "pct", "pnm", "pns", "ppm", "psb", "psd", "pdd", "psp", "px", "pxm", "pxr", "qfx", "raw", "rle", "sct", "sgi", "rgb", "int", "bw", "tga", "tiff", "tif", "vtf", "xbm", "xcf", "xpm", "3dv", "amf", "ai", "awg", "cgm", "cdr", "cmx", "dxf", "e2d", "egt", "eps", "fs", "gbr", "odg", "svg", "stl", "vrml", "x3d", "sxd", "v2d", "vnd", "wmf", "emf", "art", "xar", "png", "webp", "jxr", "hdp", "wdp", "cur", "ecw", "iff", "lbm", "liff", "nrrd", "pam", "pcx", "pgf", "sgi", "rgb", "rgba", "bw", "int", "inta", "sid", "ras", "sun", "tga",
-		--other types
-		'torrent'
-	}
----------------------------END OF USER CUSTOMIZATION SETTINGS------------------------
-else
-	protocols = {''}
-	extensions = {''}
-end
-
-if not device then
-	if os.getenv('windir') ~= nil then
-		device = 'windows'
-	elseif os.execute '[ -d "/Applications" ]' == 0 and os.execute '[ -d "/Library" ]' == 0 or os.execute '[ -d "/Applications" ]' == true and os.execute '[ -d "/Library" ]' == true then
-		device = 'mac'
-	else
-		device = 'linux'
-  end
-end
-
-function handleres(res, args)
-  if not res.error and res.status == 0 then
-      return res.stdout
-  else
-    msg.error("There was an error getting "..device.." clipboard: ")
-    msg.error("  Status: "..(res.status or ""))
-    msg.error("  Error: "..(res.error or ""))
-    msg.error("  stdout: "..(res.stdout or ""))
-    msg.error("args: "..utils.to_string(args))
-    return ''
-  end
-end
-
-function os.capture(cmd, raw)
-  local f = assert(io.popen(cmd, 'r'))
-  local s = assert(f:read('*a'))
-  f:close()
-  if raw then return s end
-  s = string.gsub(s, '^%s+', '')
-  s = string.gsub(s, '%s+$', '')
-  s = string.gsub(s, '[\n\r]+', ' ')
-  return s
-end
-
-local function get_extension(path)
-    match = string.match(path, '%.([^%.]+)$' )
-    if match == nil then
-        return 'nomatch'
-    else
-        return match
-    end
-end
-
-local function get_extentionpath(path)
-    match = string.match(path,'(.*)%.([^%.]+)$')
-    if match == nil then
-        return 'nomatch'
-    else
-        return match
-    end
-end
-
-local function has_extension (tab, val)
-    for index, value in ipairs(tab) do
-        if value == val then
-            return true
-        end
-    end
-
-    return false
-end
-
-local function starts_protocol (tab, val)
-    for index, value in ipairs(tab) do
-        if (val:find(value) == 1) then
-            return true
-        end
-	end
-    return false
-end
-
-
-function get_clipboard()
-local clip
-  if device == 'linux' then
-	clip = os.capture(linux_paste, false)
-	return clip
-  elseif device == 'windows' then
-	if windows_paste == 'powershell' then
-		local args = {
-		  'powershell', '-NoProfile', '-Command', [[& {
-				Trap {
-					Write-Error -ErrorRecord $_
-					Exit 1
-				}
-				$clip = Get-Clipboard -Raw -Format Text -TextFormatType UnicodeText
-				if ($clip) {
-					$clip = $clip
-					}
-				else {
-					$clip = Get-Clipboard -Raw -Format FileDropList
-				}
-				$u8clip = [System.Text.Encoding]::UTF8.GetBytes($clip)
-				[Console]::OpenStandardOutput().Write($u8clip, 0, $u8clip.Length)
-			}]]
-		}
-		return handleres(utils.subprocess({ args =  args, cancellable = false }), args)
-	else
-		clip = os.capture(windows_paste, false)
-		return clip
-	end
-  elseif device == 'mac' then
-	clip = os.capture(mac_paste, false)
-	return clip
-  end
-  return ''
-end
-
-
-function set_clipboard(text)
-	local pipe
-	if device == 'linux' then
-		pipe = io.popen(linux_copy, 'w')
-		pipe:write(text)
-		pipe:close()
-	elseif device == 'windows' then
-		if windows_copy == 'powershell' then
-			local res = utils.subprocess({ args = {
-				'powershell', '-NoProfile', '-Command', string.format([[& {
-					Trap {
-						Write-Error -ErrorRecord $_
-						Exit 1
-					}
-					Add-Type -AssemblyName PresentationCore
-					[System.Windows.Clipboard]::SetText('%s')
-				}]], text)
-			} })
-		else
-			pipe = io.popen(windows_copy,'w')
-			pipe:write(text)
-			pipe:close()
-		end
-	elseif device == 'mac' then
-		pipe = io.popen(mac_copy,'w')
-		pipe:write(text)
-		pipe:close()
-	  end
-  return ''
-end
-
-
-local function copy()
-    local filePath = mp.get_property_native('path')
-	if (filePath ~= nil) then
-		local time = math.floor(mp.get_property_number('time-pos'))
-		set_clipboard(filePath..' |time='..tostring(time))
-		mp.osd_message("Copied:\n"..filePath..' |time='..tostring(time))
-	else
-		mp.osd_message('Failed to Copy\nNo Video Found')
-	end
-
-end
-
-
-local function copy_path()
-    local filePath = mp.get_property_native('path')
-	if (filePath ~= nil) then
-		set_clipboard(filePath)
-		mp.osd_message("Copied Video Only:\n"..filePath)
-	else
-		return false
-	end
-end
-
-
-function paste()
-	local clip = get_clipboard()
-	clip = string.gsub(clip, "[\r\n]" , "")
-
-	local filePath = mp.get_property_native('path')
-	local time
-
-	if string.match(clip, '(.*) |time=') then
-		videoFile = string.match(clip, '(.*) |time=')
-		time = string.match(clip, ' |time=(.*)')
-	elseif string.match(clip, '^\"(.*)\"$') then
-		videoFile = string.match(clip, '^\"(.*)\"$')
-	else
-		videoFile = clip
-	end
-	
-	local currentVideoExtension = string.lower(get_extension(videoFile))
-	local currentVideoExtensionPath = (get_extentionpath(videoFile))
-	
-	if (filePath == nil) and has_extension(extensions, currentVideoExtension) and (currentVideoExtensionPath~= '') then
-		mp.commandv('loadfile', videoFile)
-		mp.osd_message("Pasted:\n"..videoFile)
-	elseif (filePath == nil) and (starts_protocol(protocols, videoFile)) then
-		mp.commandv('loadfile', videoFile)
-		mp.osd_message("Pasted:\n"..videoFile)
-	elseif (filePath ~= nil) and (filePath ~= videoFile) and has_extension(extensions, currentVideoExtension) and (currentVideoExtensionPath~= '') or (starts_protocol(protocols, videoFile)) and (filePath ~= videoFile) then
-		mp.commandv('loadfile', videoFile, 'append-play')
-		mp.osd_message('Pasted Into Playlist:\n'..videoFile)
-	elseif (filePath == videoFile) and (time == nil) then
-		mp.osd_message('Same file is already running:\n'..clip)		
-	elseif (filePath == videoFile) and (time ~= nil) then
-		mp.commandv('seek', time, 'absolute', 'exact')
-		mp.osd_message('Resumed to Copied Time')
-	else
-		mp.osd_message('Failed to Paste\nPasted Unsupported Item:\n'..clip)
-	end
-	
-	pasted = true
-end
-
-
-function paste_playlist()
-	local clip = get_clipboard()
-	clip = string.gsub(clip, "[\r\n]" , "")
-	
-	local filePath = mp.get_property_native('path')
-
-	if string.match(clip, '(.*) |time=') then
-		videoFile = string.match(clip, '(.*) |time=')
-	elseif string.match(clip, '^\"(.*)\"$') then
-		videoFile = string.match(clip, '^\"(.*)\"$')
-	else
-		videoFile = clip
-	end
-	local currentVideoExtension = string.lower(get_extension(videoFile))
-	local currentVideoExtensionPath = (get_extentionpath(videoFile))
-	
-	if has_extension(extensions, currentVideoExtension) and (currentVideoExtensionPath~= '') or (starts_protocol(protocols, videoFile)) then
-		mp.commandv('loadfile', videoFile, 'append-play')
-		mp.osd_message('Pasted Into Playlist:\n'..videoFile)
-	else
-		mp.osd_message('Failed to Add Into Playlist\nPasted Unsupported Item:\n'..clip)
-	end
-	
-	pasted = true
-end
-
-
-mp.register_event('end-file', function()
-	pasted = false
-end)
-
-
-mp.register_event('file-loaded', function()
-	if (pasted == true) then
-		local clip = get_clipboard()
-		local time = string.match(clip, ' |time=(.*)')
-		local videoFile = string.match(clip, '(.*) |time=')
-		local filePath = mp.get_property_native('path')
-
-		if (filePath == videoFile) and (time ~= nil) then
-			mp.commandv('seek', time, 'absolute', 'exact')
-		end
-	else
-		return false
-	end
-end)
-
----------------------------KEYBINDS CUSTOMIZATION SETTINGS---------------------------------
-if device == 'mac' then --MAC OS Keybinds
-	mp.add_key_binding('Meta+c', 'copy', copy)
-	mp.add_key_binding('Meta+C', 'copyCaps', copy)
-	mp.add_key_binding('Meta+v', 'paste', paste)
-	mp.add_key_binding('Meta+V', 'pasteCaps', paste)
-
-	mp.add_key_binding('Meta+alt+c', 'copy-path', copy_path)
-	mp.add_key_binding('Meta+alt+C', 'copy-pathCaps', copy_path)
-	mp.add_key_binding('Meta+alt+v', 'paste-playlist', paste_playlist)
-	mp.add_key_binding('Meta+alt+V', 'paste-playlistCaps', paste_playlist)
-else --Windows and Linux Keybinds
-	mp.add_key_binding('ctrl+c', 'copy', copy)
-	mp.add_key_binding('ctrl+C', 'copyCaps', copy)
-	mp.add_key_binding('ctrl+v', 'paste', paste)
-	mp.add_key_binding('ctrl+V', 'pasteCaps', paste)
-
-	mp.add_key_binding('ctrl+alt+c', 'copy-path', copy_path)
-	mp.add_key_binding('ctrl+alt+C', 'copy-pathCaps', copy_path)
-	mp.add_key_binding('ctrl+alt+v', 'paste-playlist', paste_playlist)
-	mp.add_key_binding('ctrl+alt+V', 'paste-playlistCaps', paste_playlist)
-end
----------------------END OF KEYBINDS CUSTOMIZATION SETTINGS---------------------------------