lnweb — 创建快捷方式,打开网页 (Python版)

OPai

# lnweb
// 像类似linux下ln命令一样,但我希望能用于网页
// 即,当我 lnweb 某个网址,它能创建快捷方式,这样当我点击的时候就能打开浏览器跳到这个网址
// 需要能跨平台

Code


import os
import platform
import sys

def lnweb(url, link_name=None):
    """
    Create a shortcut to a web URL, similar to the Linux 'ln' command but for web links.
    Cross-platform support for Windows, macOS, and Linux.
    
    Args:
        url (str): The URL to create a shortcut to.
        link_name (str, optional): The name of the shortcut file. Defaults to the URL's domain.
    """
    if not link_name:
        from urllib.parse import urlparse
        parsed_url = urlparse(url)
        link_name = parsed_url.netloc or 'web_shortcut'
    
    system = platform.system()
    
    if system == 'Windows':
        link_name += '.url'
        with open(link_name, 'w') as f:
            f.write(f'[InternetShortcut]\nURL={url}\n')
    elif system == 'Darwin':  # macOS
        link_name += '.webloc'
        import plistlib
        plist = {
            'URL': url
        }
        with open(link_name, 'wb') as f:
            plistlib.dump(plist, f)
    else:  # Linux and others
        link_name += '.desktop'
        with open(link_name, 'w') as f:
            f.write(f"""[Desktop Entry]
Encoding=UTF-8
Name={link_name}
Type=Link
URL={url}
Icon=text-html
""")
        os.chmod(link_name, 0o755)  # Make it executable

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print("Usage: lnweb URL [link_name]")
        sys.exit(1)
    url = sys.argv[1]
    link_name = sys.argv[2] if len(sys.argv) > 2 else None
    lnweb(url, link_name)