一半君的总结纸

听话只听一半君

如何以命令行方式传截图到imgur并加到kde dolphin右键菜单里?

问问题经常要贴图,lz笔记本系统CentOS 7, KDE桌面

修改自reddit用户downdiagonal的script,换了个clientid, 把下面这段function定义放进~/.bashrc里即可

imgur(){
for i in "$@";do
curl -# -F "image"=@"$i" -H "Authorization: Client-ID 3e7a4deb7ac67da" https://api.imgur.com/3/upload.xml|\
grep -Eo '<[a-z_]+>http[^<]+'|sed 's/^<.\|_./\U&/g;s/_/ /;s/<\(.*\)>/\x1B[0;34m\1:\x1B[0m /'
done
}

使用效果:
imgur_upload_script

edit:
lz惯用kde,所以准备在dolphin里加个“右键“菜单

In KDE-speak a “servicemenu” is a special entry that appears in a context menu (or other context-based interface) for a file (or for directory), depending on the type of files that are selected.

lz的机器上的servicemenu的目录在这

[oglop@localhost]$ kde4-config --path services
/home/oglop/.kde/share/kde4/services/:/usr/share/kde4/services/

所以在此添加的.desktop文件会出现在dolphin的右键Actions菜单里,如下所示

你会得到这么一个菜单
kde_servicemenu

这个upload-imgur.sh用的是返回xml的api,之后用grep找到link,再之后用sed把link的l换成了大写,去掉了link左右两侧的等等,最后用xdg-open在浏览器里打开图片链接(direct link)

稍微改了下,最后一步打开的是带“粘贴”选项的非direct link,这个和上面版本的唯一不同就是最后开的链接不是direct link,而是平时你手动上传图片后跳转到的那个,upload xml api返回的是direct link,我只是在返回的xml里的”link”:”xxx”的地方搜索替换了一下,比如direct link为 http://i.imgur.com/xgGlCxt.png, 那平时跳转到的就是 http://imgur.com/xgGlCxt,但是这里有个问题,因为到这里为止,举个例子都是以匿名方式上传的,虽然用了clientit,但是这个不是lz的,是某位大神的upload script里的(当然是他注册的了),如果想用自己的clientid,那显然你得去imgur注册个帐号,同时上传的时候要加一些参数,传到你的张号下,这样最后一步开的网页上才能有各种粘贴链接,和删除链接,现在这样用api上传之后,再去浏览器里开页面的时候显然是没有cookie的,所以和你平时手动上传之后自动跳转到的页面有些不同

当然上传脚本你也可以用大神写的,比如 imgur-screenshot,lz这里功能很简陋,没有加各种错误判断

lz把上面的几个script简单修改了下,比如

  • 加了上传图片的title,之所以要title=”$(basename “$i”)”是为了防止图片文件名里有空格
  • 在命令行里显示link和deletehash,这样你在konsole里也可以用
  • 用了pcregrep是因为之前的grep+sed太长很难看懂,如果这个系统没有可能要自己装一下,显然这个在公司你也用不了,没有哪个公司能让你随便贴图的,如果是自己的机器,当然有权限装
  • 还没加的:可以修改下上传的curl命令行,上传到自己的帐号下,现在是匿名方式上传的,除了能用deletehash从api里去删掉之外,没法在网页上管理

最终版是这样的:

See it in action:
https://gfycat.com/HarmoniousPoliticalHare

上面的视频演示是可以暂停加快放慢的,因为用的是gfycat(不是gif),鼠标移动到画面底部可见控制条
Tips:
Q:如何上传超过15s的片段到gfycat
A:可以先转gif,传到imgur,然后在gfycat选择paste url,因为他们没有对外链的gif做出15s的长度限制

参考:
imgur API
How to post screenshot [solved]
Upload Image To Imgur: Nautilus Actions Script [Linux]

Development/Tutorials/Creating Konqueror Service Menus
Service Menus with Dolphin
kde service menus
What are the special dollar sign shell variables?
xdg-open doesn’t work when another command’s output is piped to it

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: