{"id":28447051,"url":"https://github.com/mateconpizza/gourl","last_synced_at":"2025-06-30T06:32:29.103Z","repository":{"id":231416399,"uuid":"773914431","full_name":"mateconpizza/GoURL","owner":"mateconpizza","description":"Extract URLs from STDIN | ✨ do not use regex 🤡 ","archived":false,"fork":false,"pushed_at":"2025-01-17T02:44:40.000Z","size":70,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-06T11:09:11.297Z","etag":null,"topics":["mutt","neomutt","st-terminal","suckless","suckless-terminal","urlscan","urlview"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mateconpizza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-03-18T16:09:02.000Z","updated_at":"2025-01-28T14:12:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"7d0eab91-a411-40f3-a431-a2cfea73d731","html_url":"https://github.com/mateconpizza/GoURL","commit_stats":null,"previous_names":["haaag/gourl","mateconpizza/gourl"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/mateconpizza/GoURL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2FGoURL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2FGoURL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2FGoURL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2FGoURL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mateconpizza","download_url":"https://codeload.github.com/mateconpizza/GoURL/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2FGoURL/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262723732,"owners_count":23354097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mutt","neomutt","st-terminal","suckless","suckless-terminal","urlscan","urlview"],"created_at":"2025-06-06T11:09:15.517Z","updated_at":"2025-06-30T06:32:29.062Z","avatar_url":"https://github.com/mateconpizza.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003e\u003cb\u003e🔗 GoURL\u003c/b\u003e\u003c/h1\u003e\n    \u003csub\u003e✨ do \u003cb\u003enot\u003c/b\u003e use \u003cb\u003eregex\u003c/b\u003e 🤡\u003c/sub\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/haaag/gourl)\n![Linux](https://img.shields.io/badge/-Linux-grey?logo=linux)\n\n\u003c/div\u003e\n\n**GoURL** is a small `Golang` program that reads `URLs` and `email` addresses from standard input `(STDIN)`\n\nYou can use any **terminal** that supports piping visible text to external programs **_(alacritty, kitty, wezterm, etc)_**.\n\nI'm using [st](https://st.suckless.org/) terminal with [externalpipe](https://st.suckless.org/patches/externalpipe/) patch to `read/pipe` current visible text to this program.\n\nUsing the option `-c, --copy`, `-o, --open` or `-x, --exec` will display the items in [dmenu](https://tools.suckless.org/dmenu/)\n\nWithout flags, prints `URLs` found to standard output `(STDOUT)`, **_you can pipe it to your preferred menu or launcher_**.\n\n### ✨ Features\n\n- Extract URLs from `STDIN`\n- Choose items with `dmenu`\n- Ignore `duplicates`\n- `Execute command` with selected items\n- `Copy` to clipboard\n- `Open` with `xdg-open`\n- Custom `regex` search\n- Add `index` to URLs found\n- Limit number of items\n\n### ⚡️Requirements\n\n- [Go](https://golang.org/) \u003e= `v1.21.3`\n- [dmenu](https://tools.suckless.org/dmenu/) \u003csub\u003e`optional`\u003c/sub\u003e\n\n### 🧰 Build\n\n```bash\n# clone the repo\n$ git clone 'https://github.com/haaag/GoURL' \u0026\u0026 cd GoURL\n\n# use make to build\n$ make\n```\n\n**Binary can be found in `GoURL/bin/gourl`**\n\n### 📦 Installation\n\n```bash\n# use make to build\n$ make\n\n# install on system wide\n$ sudo make install\n\n# or use a symlink\n$ ln -sf $PWD/bin/gourl ~/.local/bin/\n```\n\n#### 🗑️ Uninstall\n\n- \u003cb\u003eSystem\u003c/b\u003e: use `sudo make uninstall`\n- \u003cb\u003eUser\u003c/b\u003e: remove symlink with `rm ~/.local/bin/gourl`\n\n### 🚀 Usage\n\n```bash\n$ gourl -h\nExtract URLs from STDIN\n\nUsage:\n  gourl [options]\n\nOptions:\n  -c, --copy        Copy to clipboard\n  -o, --open        Open with xdg-open\n  -u, --urls        Extract URLs (default: true)\n  -e, --email       Extract emails (prefix: \"mailto:\")\n  -E, --regex       Custom regex search\n  -x, --exe         Execute command with all search results as arguments\n  -l, --limit       Limit number of items\n  -i, --index       Add index to URLs found\n  -p, --prompt      Prompt for dmenu\n  -a, --args        Args for dmenu\n  -V, --version     Output version information\n  -v, --verbose     Verbose mode\n  -h, --help        Show this message\n\n$ gourl -c \u003c urls.txt\n# or\n$ cat urls.txt | gourl -c\n\n# extract only emails\n$ gourl --url=false --email --limit 1 \u003c data.txt\n# example@email.com\n\n# with index\n$ gourl -i -l 10 \u003c urls.txt\n# [1] https://www.example.org\n# [2] https://www.example.com\n# ...\n```\n\n### 🚩 Using `-E` flag\n\nThe flag `-E` can be use for `custom regex`, like in `grep`.\n\n```bash\n# list existing remotes\ngit remote -v | gourl -E '((git|ssh|http(s)?)|(git@[\\w\\.]+))(:(//)?)([\\w\\.@\\:/\\-~]+)(\\.git)(/)?'\n# git@github.com:xxxxx/zzzzz.git\n```\n\n### ⭐ Related projects\n\n- [urlscan](https://github.com/firecat53/urlscan) - Designed to integrate with the \"mutt\" mailreader\n- [urlview](https://github.com/sigpipe/urlview) - Extract URLs from a text file and allow the user to select via a menu\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateconpizza%2Fgourl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmateconpizza%2Fgourl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateconpizza%2Fgourl/lists"}