Hello community,
here is the log from the commit of package urlscan for openSUSE:Factory checked in at 2019-02-08 12:13:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/urlscan (Old)
and /work/SRC/openSUSE:Factory/.urlscan.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "urlscan"
Fri Feb 8 12:13:41 2019 rev:5 rq:672416 version:0.9.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/urlscan/urlscan.changes 2018-12-12 17:31:29.106649248 +0100
+++ /work/SRC/openSUSE:Factory/.urlscan.new.28833/urlscan.changes 2019-02-08 12:13:45.873461149 +0100
@@ -1,0 +2,7 @@
+Thu Feb 7 07:46:49 UTC 2019 - Dr. Werner Fink
+
+- Update to version 0.9.2
+ * Add shortcut to copy URL to clipboard (primary).
+ * Add option to pipe URL into external command.
+
+-------------------------------------------------------------------
Old:
----
urlscan-0.9.1.tar.gz
New:
----
urlscan-0.9.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ urlscan.spec ++++++
--- /var/tmp/diff_new_pack.olMsUY/_old 2019-02-08 12:13:46.585460883 +0100
+++ /var/tmp/diff_new_pack.olMsUY/_new 2019-02-08 12:13:46.585460883 +0100
@@ -1,7 +1,7 @@
#
# spec file for package urlscan
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: urlscan
-Version: 0.9.1
+Version: 0.9.2
Release: 0
Summary: An other URL extractor/viewer
License: GPL-2.0-or-later
++++++ urlscan-0.9.1.tar.gz -> urlscan-0.9.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlscan-0.9.1/README.rst new/urlscan-0.9.2/README.rst
--- old/urlscan-0.9.1/README.rst 2018-12-01 00:12:00.000000000 +0100
+++ new/urlscan-0.9.2/README.rst 2019-01-22 00:05:53.000000000 +0100
@@ -49,11 +49,16 @@
- Configure colors via ~/.config/urlscan/config.json. Generate default config
file for editing with `P`. Cycle through available palettes with `p`.
+- Copy URL to clipboard (primary) with `C`. Requires xsel or xclip.
+
+- Run a command with the selected URL as the argument or pipe the selected
+ URL to a command.
+
Installation and setup
----------------------
-To install urlscan, install from your distribution repositories, from Pypi,
-install the `Archlinux Package`_ , or install from source using setup.py.
+To install urlscan, install from your distribution repositories (Archlinux),
+from Pypi, or install from source using setup.py.
.. NOTE::
@@ -82,7 +87,7 @@
::
- urlscan [-n, --no-browser] [-c, --compact] [-d, --dedupe] [-r, --run <expression>] <file>
+ urlscan [-n, --no-browser] [-c, --compact] [-d, --dedupe] [-r, --run <expression>] [-p, --pipe] <file>
Urlscan can extract URLs and email addresses from emails or any text file.
Calling with no flags will start the curses browser. Calling with '-n' will just
@@ -91,6 +96,12 @@
duplicate URLs. Files can also be piped to urlscan using normal shell pipe
mechanisms: `cat <something> | urlscan` or `urlscan < <something>`
+Instead of opening a web browser, the selected URL can be passed as the
+argument to a command using `--run <command>`. Alternatively, the URL can be
+piped to the command using `--run <command> --pipe`. Using --run with --pipe is
+preferred if the command supports it, as it is marginally more secure and
+tolerant of special characters in the URL.
+
Theming
-------
@@ -115,5 +126,4 @@
sub-parts, rather than just picking one, which may lead to URLs and context
appearing twice. (Bypass this by selecting the '--dedupe' option)
-.. _Archlinux Package: https://aur.archlinux.org/packages/urlscan-git/
.. _Urwid display attributes: http://urwid.org/manual/displayattributes.html#display-attributes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlscan-0.9.1/bin/urlscan new/urlscan-0.9.2/bin/urlscan
--- old/urlscan-0.9.1/bin/urlscan 2018-12-01 00:12:00.000000000 +0100
+++ new/urlscan-0.9.2/bin/urlscan 2019-01-22 00:05:53.000000000 +0100
@@ -5,7 +5,7 @@
"""
#
# Copyright (C) 2006-2007 Daniel Burrows
-# Copyright (C) 2018 Scott Hansen
+# Copyright (C) 2019 Scott Hansen
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -55,6 +55,9 @@
"instead of opening URL in browser. Use {} to "
"represent the URL value in the expression. "
"For example: --run 'echo {} | xclip -i'")
+ arg_parse.add_argument('--pipe', '-p', dest='pipe',
+ action='store_true', default=False,
+ help='Pipe URL into the command specified by --run')
arg_parse.add_argument('message', nargs='?', default=sys.stdin,
help="Filename of the message to parse")
return arg_parse.parse_args()
@@ -174,7 +177,8 @@
tui = urlchoose.URLChooser(urlscan.msgurls(msg),
compact=args.compact,
dedupe=args.dedupe,
- run=args.run)
+ run=args.run,
+ pipe=args.pipe)
tui.main()
else:
out = urlchoose.URLChooser(urlscan.msgurls(msg),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlscan-0.9.1/setup.py new/urlscan-0.9.2/setup.py
--- old/urlscan-0.9.1/setup.py 2018-12-01 00:12:00.000000000 +0100
+++ new/urlscan-0.9.2/setup.py 2019-01-22 00:05:53.000000000 +0100
@@ -3,12 +3,12 @@
from setuptools import setup
setup(name="urlscan",
- version="0.9.1",
+ version="0.9.2",
description="View/select the URLs in an email message or file",
author="Scott Hansen",
author_email="firecat4153@gmail.com",
url="https://github.com/firecat53/urlscan",
- download_url="https://github.com/firecat53/urlscan/archive/0.9.1.zip",
+ download_url="https://github.com/firecat53/urlscan/archive/0.9.2.zip",
packages=['urlscan'],
scripts=['bin/urlscan'],
package_data={'urlscan': ['assets/*']},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlscan-0.9.1/urlscan/urlchoose.py new/urlscan-0.9.2/urlscan/urlchoose.py
--- old/urlscan-0.9.1/urlscan/urlchoose.py 2018-12-01 00:12:00.000000000 +0100
+++ new/urlscan-0.9.2/urlscan/urlchoose.py 2019-01-22 00:05:53.000000000 +0100
@@ -1,5 +1,5 @@
# Copyright (C) 2006-2007 Daniel Burrows
-# Copyright (C) 2018 Scott Hansen
+# Copyright (C) 2019 Scott Hansen
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -23,7 +23,9 @@
import os
from os.path import dirname, exists, expanduser
import re
-from subprocess import Popen
+import shlex
+from subprocess import Popen, PIPE
+import sys
from threading import Thread
from time import sleep
import webbrowser
@@ -90,7 +92,7 @@
class URLChooser:
def __init__(self, extractedurls, compact=False, dedupe=False, shorten=True,
- run=""):
+ run="", pipe=False):
self.conf = expanduser("~/.config/urlscan/config.json")
self.palettes = []
try:
@@ -124,6 +126,7 @@
self.shorten = shorten
self.compact = compact
self.run = run
+ self.pipe = pipe
self.search = False
self.search_string = ""
self.no_matches = False
@@ -146,6 +149,7 @@
header = (":: q - Quit :: "
"/ - search :: "
"c - context :: "
+ "C - copy to clipboard :: "
"s - URL short :: "
"S - all URL short :: "
"g/G - top/bottom :: "
@@ -220,7 +224,7 @@
return [i for i in keys if i != 'backspace']
def unhandled(self, key):
- """Add other keyboard actions (q, j, k, s, S, c, g, G) not handled by
+ """Add other keyboard actions (q, j, k, s, S, c, C, g, G) not handled by
the ListBox widget.
"""
@@ -292,9 +296,9 @@
elif key in ('S', 'u'):
# Toggle all shortened or escaped URLs
if key == 'S':
- self.shorten = False if self.shorten is True else True
+ self.shorten = not self.shorten
if key == 'u':
- self.unesc = False if self.unesc is True else True
+ self.unesc = not self.unesc
self.urls, self.urls_unesc = self.urls_unesc, self.urls
urls = iter(self.urls)
for item in self.items:
@@ -315,7 +319,24 @@
self.items, self.items_com = self.items_com, self.items
self.top.body = urwid.ListBox(self.items)
self.top.body.focus_position = self._cur_focus(fpo)
- self.compact = False if self.compact is True else True
+ self.compact = not self.compact
+ elif key == 'C':
+ # Copy highlighted url to clipboard
+ fpo = self.top.body.focus_position
+ url_idx = len([i for i in self.items[:fpo + 1]
+ if isinstance(i, urwid.Columns)]) - 1
+ if self.compact is False and fpo <= 1:
+ return
+ url = self.urls[url_idx]
+ cmds = ("xsel -i", "xclip -i")
+ for cmd in cmds:
+ try:
+ proc = Popen(shlex.split(cmd), stdin=PIPE)
+ proc.communicate(input=url.encode(sys.getdefaultencoding()))
+ self._footer_start_thread("Copied url to primary selection", 5)
+ except OSError:
+ continue
+ break
elif key == 'p':
# Loop through available palettes
self.palette_idx += 1
@@ -462,8 +483,12 @@
self.enter = False
elif not self.run:
webbrowser.open(url)
+ elif self.run and self.pipe:
+ process = Popen(shlex.split(self.run), stdout=PIPE, stdin=PIPE)
+ process.communicate(input=url.encode(sys.getdefaultencoding()))
else:
Popen(self.run.format(url), shell=True).communicate()
+
size = self.tui.get_cols_rows()
self.draw_screen(size)
return browse
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlscan-0.9.1/urlscan/urlscan.py new/urlscan-0.9.2/urlscan/urlscan.py
--- old/urlscan-0.9.1/urlscan/urlscan.py 2018-12-01 00:12:00.000000000 +0100
+++ new/urlscan-0.9.2/urlscan/urlscan.py 2019-01-22 00:05:53.000000000 +0100
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2006-2007 Daniel Burrows
-# Copyright (C) 2018 Scott Hansen
+# Copyright (C) 2019 Scott Hansen
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/urlscan-0.9.1/urlscan.1 new/urlscan-0.9.2/urlscan.1
--- old/urlscan-0.9.1/urlscan.1 2018-12-01 00:12:00.000000000 +0100
+++ new/urlscan-0.9.2/urlscan.1 2019-01-22 00:05:53.000000000 +0100
@@ -1,6 +1,6 @@
.\" Hey, EMACS: -*- nroff -*-
-.TH URLSCAN 1 "July 29, 2018"
+.TH URLSCAN 1 "January 14, 2019"
.SH NAME
urlscan \- browse the URLs in an email message from a terminal
@@ -32,13 +32,15 @@
\fB2.\fR Extraction and display of the context surrounding each URL. Toggle
context view on/off with `c`.
-\fB3.\fR URLs are shortened by default to fit on one line. Toggle one or all
+\fB3.\fR Copy current URL to clipboard primary selection with `C`.
+
+\fB4.\fR URLs are shortened by default to fit on one line. Toggle one or all
shortened URLs with `s` or `S`.
-\fB4.\fR Incremental case-insensitive search using `/`. Footer shows current
+\fB5.\fR Incremental case-insensitive search using `/`. Footer shows current
search term. `/` again resets search.
-\fB5.\fR Cycle through all available palettes (color and black & white available
+\fB6.\fR Cycle through all available palettes (color and black & white available
by default) using `p`. `P` will generate a ~/.config/urlscan/config.json file
for editing or adding additional pallettes. See
@@ -46,7 +48,10 @@
for options and allowed values.
-\fB5.\fR `u` will unescape the highlighted URL if necessary.
+\fB7.\fR `u` will unescape the highlighted URL if necessary.
+
+\fB8.\fR Run a command with the selected URL as the argument or pipe the selected
+ URL to a command using the `--run` and `--pipe` arguments.
.SH OPTIONS
.TP
@@ -66,6 +71,13 @@
\ to substitute in the URL. Example:
$ urlscan --run 'echo {} | xclip -i' file.txt
+.TP
+.B \-p, \-\-pipe
+Pipe the selected URL to the command specified by `--run`. This is preferred
+when the command supports it, as it is more secure and tolerant of special
+characters in the URL. Example:
+
+ $ urlscan --run 'xclip -i' --pipe file.txt
.SH MUTT INTEGRATION