我也来贴个贴图/代码的脚本

软件和网站开发以及相关技术探讨
回复
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

我也来贴个贴图/代码的脚本

#1

帖子 lilydjwg » 2013-06-16 21:36

往右上角「Paste」链接贴的,分 Python 3 / Perl 两版。
[perl]
#!/usr/bin/perl -w
#
# Written by AutumnCat.
# Modified by 百合仙子.
#

use strict;
use Getopt::Long;
require LWP::UserAgent;

my $help_message = <<HELP;
upaste: Paste text and images to http://paste.ubuntu.org.cn.

Usage:
upaste [OPTION]... [FILES]...

Options:
-l LANGUAGE set the language used for highlighting.
-i FILE screenshot image to upload.
-n NAME poster's name.
-v also print the urls of image and text files.
-h show this message.

If FILES is not specified or FILES is - , message will be read from standard input.
HELP

my $poster='百合仙子@Perl';
my $class="bash";
my $screenshot="";
my $verbose=0;
my $help=0;
my $optresult = GetOptions (
"l=s" => \$class,
"i=s" => \$screenshot,
"n=s" => \$poster,
"v" => \$verbose,
"h" => \$help
);

if ($help) {
print $help_message;
exit 0;
}

if (! $optresult) {
print STDERR $help_message;
exit 1;
}

my @text = <> ;
chomp @text;
my $paste_url = 'http://paste.ubuntu.org.cn/';

my $ua = LWP::UserAgent -> new;
push @{ $ua->requests_redirectable }, 'POST';
$ua->env_proxy;
my $r = $ua -> post(
$paste_url,
Content_Type => 'form-data',
Content => [
paste => "Send",
code2 => join("\n",@text) ,
class => $class ,
screenshot => [$screenshot] ,
poster => $poster
]
);
if ($r -> is_success ) {
exit 1 if ( $paste_url eq ($r -> base) ) ;
print $r -> base ."\n";
if ($verbose) {
if (($r -> content) =~ m'a class="alt" href="/(d\d+)"') {
print "text:\t".$paste_url.$1."\n";
}
if (($r -> content) =~ m'a class="scr" href="/(i\d+)"') {
print "image:\t".$paste_url.$1."\n";
}
}
} else {
print STDERR "ERROR:\t".$r->status_line ."\n";
}
[/perl]
[python]
#!/usr/bin/env python3
# vim:fileencoding=utf-8

from netservice import ubuntuPaste as post
import os
from optparse import OptionParser
try:
import readline
except ImportError:
pass

def main():
parser = OptionParser(usage='%prog [options] [image]', version="%prog 0.1")
parser.add_option("-n", "--name",
dest="poster", metavar="NICK", default='',
help="昵称")
parser.add_option("-i", "--image", dest="screenshot", default='',
help="图片文件", metavar="FILE")
parser.add_option("-f", "--filename",
dest="filename", metavar="NAME", default=None,
help="指定文件名")
parser.add_option("-c",
action="store_true", dest='comment',
help="附带文本(从 stdin 读入)")
parser.add_option("-l", "--lang",
dest="klass", metavar="LANG", default='bash',
help="代码语种")

(options, args) = parser.parse_args()
if args:
if len(args) == 1:
options.screenshot = args[0]
else:
parser.error('错误的参数: '+' '.join(args))

if options.filename and not options.screenshot:
parser.error('只有当给出图片时才能使用“文件名”选项')
user = os.environ.get('USER')
if not options.poster:
if user == 'lilydjwg':
options.poster = '百合仙子'
elif user:
options.poster = user
else:
options.poster = 'anomymous'
c = []
if options.comment or not options.screenshot:
while True:
try:
c.append(input(''))
except EOFError:
break
if options.screenshot:
url = post(
poster = options.poster,
code2 = '\n'.join(c),
screenshot = options.screenshot,
klass = options.klass,
filename = options.filename,
)
else:
url = post(
poster = options.poster,
code2 = '\n'.join(c),
klass = options.klass,
)
print(url)
head, tail = url.rsplit('/', 1)
if options.screenshot:
print('%s/i%s' % (head, tail))
else:
print('%s/d%s' % (head, tail))

if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print('中止。')
[/python]

Python 版只贴了主文件,还有些依赖,附件中包含了所有需要的自己的模块。

另外推荐易于从命令行使用的贴代码的网站 http://p.vim-cn.com 以及贴图网址 http://img.vim-cn.com/
附件
upaste.tar.bz2
upaste 包含依赖的库文件
(5.25 KiB) 已下载 52 次
头像
ceclinux
帖子: 308
注册时间: 2013-01-17 2:42
系统: Ubuntu 12.04LTS

Re: 我也来贴个贴图/代码的脚本

#2

帖子 ceclinux » 2013-06-17 2:21

:em11 顶一个,学习代码
Ubuntu 12.04 LTS
laptop:Acer 4750G CPU:I5-2410
内存:2+2G 硬盘:500+750
http://www.ceclinux.org
回复