V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
AllenHua
V2EX  ›  分享发现

UrlParamsRemover 自动删除 url 中的参数并写入系统剪贴板

  •  
  •   AllenHua · 2022-05-13 16:13:01 +08:00 · 1375 次点击
    这是一个创建于 925 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个习惯,分享给别人一个不需要参数就能准确定位的资源链接,我一定“强迫症一样”把参数全都删了然后再发给别人。这里不谈论好坏,强迫症,也不谈论意义,我简单用 Java 写了一段代码实现了,但是不够优雅,还请各位看官批评。

    举个例子

    https://www.bilibili.com/video/BV1Ez411v7eL?from=search&seid=3493040094031299633&spm_id_from=333.337.0.0
    

    这个链接很明显是用户搜索了什么关键词之后点进去视频页面产生的 url ,现在我复制它,在 Powershell 下输入 url 回车

    剪贴板已经变成了

    https://www.bilibili.com/video/BV1Ez411v7eL
    

    接着在任何想要粘贴的地方粘贴即可(比如微信聊天框💬️)

    感觉我的实现还是太 low 了,希望有更好的,让我学习一下,我是真的很有这个需求。虽然通过 windows batch file 配合 powershell alias 加上本程序已经很快了,但是我想要通过快捷键,比如 windows/command + shift + R 快速执行程序,然后让程序写入新的 url 到系统剪贴板,这个 work flow 更加无感,也更便捷。

    比如 picgo: 截图 --> control/command + shift + P --> 等待上传成功,url 自动写入系统剪贴板 --> 在需要的地方粘贴。

    我的代码: https://github.com/hellodk34/UrlParamsRemover


    有下面这些步骤。

    下载 jar file

    releases 下载最新 jar file.

    在 jdk11 下开发和测试,不知道 java8 是否兼容。

    编写 batch file

    @ECHO OFF
    start java -jar <your_jar_file_path>.jar
    

    编写 powershell profile 脚本

    此处可参考我的文章: 为 PowerShell 设置 alias

    编辑文件 xxx\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,添加如下内容(如果没有请生成,请参考上文操作)。

    function url {d:\UrlParamsRemover.bat}
    

    此处 url 就是 alias.

    整个 flow 就是用户(从浏览器地址栏)复制 url 然后 powershell 输入 url 执行就能将新的 url 写入剪贴板,用户可以在任何地方粘贴。


    大家有更好的方法吗?感觉 go 适合写这个小工具。来实现一个吧:)最好能绑定系统快捷键。

    7 条回复    2022-05-13 23:01:24 +08:00
    exocell
        1
    exocell  
       2022-05-13 17:32:34 +08:00
    powershell 可以读取剪贴板内容呀。

    写个 PS1,读取剪贴板,处理字符串,然后输出剪贴板.

    然后拉个快捷方式,属性里设置热键就行.

    复制 URL 后,按热键,然后粘贴,完事.
    AllenHua
        2
    AllenHua  
    OP
       2022-05-13 17:38:01 +08:00
    @exocell #1 powershell 不会,我学一学 :(
    DOLLOR
        3
    DOLLOR  
       2022-05-13 17:42:02 +08:00
    试着用一个 HTML 文件实现

    <!DOCTYPE html>
    <div>把 URL 粘贴下来,自动移除参数,并复制到剪切板</div>
    <textarea style="width: 500px;height: 200px;" oninput="textareaOnInput(this)"></textarea>
    <script>
    /** @type {(url:string)=>string} */
    const urlParamsRemove=(url)=> {
    const u = new URL(url)
    return `${u.origin}${u.pathname}`
    }

    /** @type {(ev:HTMLTextAreaElement)=>void} */
    const textareaOnInput = (el) => {
    el.value = urlParamsRemove(el.value)
    navigator.clipboard.writeText(el.value)
    }
    </script>
    xiozf
        4
    xiozf  
       2022-05-13 17:56:38 +08:00
    啊,我也有这个习惯。我感觉这个事不要再离开浏览器最方便,另开一个工具太繁琐了,我现在用书签版。书签栏常驻,需要净化时点一下书签,页面会自动刷新,页面内的链接也会被净化(只测过淘宝购物车内的链接),净化后的地址也会自动复制到剪贴板,你可以看看。
    这是作品首页(书签版和油猴版): https://dmscode.github.io/Link-cleaner/
    这是书签版发布讨论页: https://meta.appinn.net/t/topic/3130
    这是油猴版发布讨论页: https://www.appinn.com/dms-links-clean-greasemonkey/
    xiozf
        5
    xiozf  
       2022-05-13 18:00:00 +08:00
    书签版如果不常驻书签栏,我试了无法生效。
    不喜欢书签栏常驻的,可能要等其他人开发出一个小 app ,再绑定鼠标手势。复制网址后做一个手势,手势软件自动调用净化 app 完成净化,我感觉这样也方便。
    renmu123
        6
    renmu123  
       2022-05-13 18:04:03 +08:00 via Android
    utools 或者 ahk 之类写起来都很方便
    就读取剪切板第一条然后做些操作然后再写入
    AllenHua
        7
    AllenHua  
    OP
       2022-05-13 23:01:24 +08:00
    @xiozf 确实是,还要单独再开一个终端不是我想要的 flow
    @renmu123 win 下类似 alfred 的软件就用过微软 powertoys ,而且还很有差异。utools 没用过但听过,有机会可以尝试一下,感谢
    @DOLLOR good job
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2745 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:52 · PVG 17:52 · LAX 01:52 · JFK 04:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.