32 lines
1.8 KiB
Python
Executable File
32 lines
1.8 KiB
Python
Executable File
#! /usr/bin/python3 --
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import re
|
|
import os
|
|
import subprocess as sp
|
|
from typing import *
|
|
|
|
"""
|
|
the web url matching regex used by markdown
|
|
http://daringfireball.net/2010/07/improved_regex_for_matching_urls
|
|
https://gist.github.com/gruber/8891611
|
|
"""
|
|
URL_REGEX = r"\b((?:https?://)?(?:(?:www\.)?(?:[\da-z\.-]+)\.(?:[a-z]{2,6})|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:(?:[0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?:(?::[0-9a-fA-F]{1,4}){1,6})|:(?:(?::[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(?::[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(?:ffff(?::0{1,4}){0,1}:){0,1}(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])|(?:[0-9a-fA-F]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])))(?::[0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])?(?:/[\w\.-]*)*/?)\b"
|
|
|
|
def main() -> int:
|
|
proc = sp.Popen(['tmux', 'capture-pane', '-J', '-p'],
|
|
stdout=sp.PIPE,
|
|
stderr=sp.DEVNULL)
|
|
pane_out, pane_err = proc.communicate()
|
|
if proc.returncode != 0:
|
|
print("Could not capture tmux pane output")
|
|
print("Err:\033[31m", pane_err, "\033[m")
|
|
input("Press any key to exit")
|
|
return 1
|
|
matches = re.findall(URL_REGEX, pane_out.decode())
|
|
sp.run([os.environ['HOME'] + '/.local/bin/tui_choice.sh'] + matches)
|
|
return 0
|
|
|
|
if __name__ == '__main__':
|
|
raise SystemExit(main())
|