代 ee 发贴图脚本,paste_img

软件和网站开发以及相关技术探讨
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

代 ee 发贴图脚本,paste_img

#1

帖子 ChenFengyuan » 2010-09-28 11:38

ee最新贴图脚本。。。。gui的,我去掉了,dbus.因为用不了。。。。
http://cfy.googlecode.com/files/paste_img.tar.bz2
图片
图片
运行
perl paste_img.pl
:em11
有问题找ee...........
:em09

ee说: 图片可以拖放到文件选择栏。拖放到预览图的,还有兼容问题,没写完。
附件
48.png
上次由 ChenFengyuan 在 2010-09-28 12:02,总共编辑 1 次。
头像
linlee
帖子: 1132
注册时间: 2007-10-20 11:30

Re: 代 ee 发贴图脚本,paste_img

#3

帖子 linlee » 2010-09-28 11:46

看不到图片~
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 代 ee 发贴图脚本,paste_img

#4

帖子 xiooli » 2010-09-28 11:49

perl 无视,谁写个 python 的?
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 代 ee 发贴图脚本,paste_img

#5

帖子 ChenFengyuan » 2010-09-28 11:59

linlee 写了:看不到图片~
不是吧,我放到google code上的阿。
http://cfy.googlecode.com/files/paste_img.jpg
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 代 ee 发贴图脚本,paste_img

#6

帖子 eexpress » 2010-09-30 19:45

代码: 全选

***   HTTP::Message content must be bytes at /usr/share/perl5/HTTP/Request/Common.pm line 91
终于搞定了这bt的提示。这是模块必须使用字节流。经过艰苦的理解,才发现的。以前一直是脚本带参数。所以$ARGV[0]本来就是字节了,而不是utf8字符了。

1. $pic=$gui->get_widget(filechooserbutton2)->get_filename();
2. #$pic='/home/eexp/下载/26.png';
3. #$pic=$ARGV[0];
4. $pic=encode("utf8",$pic);

加了一行encode,就可以传中文目录的图片了。

下面是完整的代码。 http://code.google.com/p/paste-img/

代码: 全选

#!/usr/bin/perl

use utf8;	# 文件路径才可以使用中文。
use Gtk2 -init;
use Gtk2::GladeXML;
use File::Basename qw/basename dirname/;
#----------------------------------
$user="eexp";	#改自己的昵称
%web=(
	"http://www.cjb.net/"=>{"image"=>"____"},
	"http://kimag.es/"=>{"userfile1"=>"____"},
	"http://imagebin.org/index.php?page=add"=>{"nickname"=>$user,"image"=>"____","disclaimer_agree"=>"Y"},
	"http://paste.ubuntu.org.cn/"=>{"poster"=>$user,"screenshot"=>"____","code2"=>join("\n",`xsel -o`)},	#submit名不对
#        "http://tinypic.com/"=>{"the_file"=>$ARGV[0]},	#Error GETing http://tinypic.com/ 需要图片校验 nnnnnd
#        "http://uploadpie.com/"=>{"uploadedfile"=>$ARGV[0]},	#需要读取结果网页,估计还要模拟同一浏览器
#        "http://imgur.com/"=>{'file[]'=>$ARGV[0]},	#无法提交
	);
#----------------------------------
chdir dirname (-l $0?readlink $0:$0);
$path=`pwd`; chomp $path;
$app="paste_img";
my $gui = Gtk2::GladeXML->new("$app.glade");
$gui->signal_autoconnect_from_package('main');
#----------------------------------
$select="imagebin";
$box2 = $gui->get_widget('vbox2');
$button = Gtk2::RadioButton->new(undef, "null");
@group = $button->get_group;
foreach (keys %web){
s'http://'';s'/.*'';
$button = Gtk2::RadioButton->new_with_label(@group, "$_");
$button->signal_connect('toggled'=>\&radio_clicked);
$button->set_active(TRUE) if /$select/;
$box2->pack_start($button, TRUE, TRUE, 0);
$button->show;
}
#----------------------------------
$gui->get_widget(filechooserbutton2)->set_filename("$app.png");
$gui->get_widget('preview')->drag_dest_set('all', ["link","ask"], {target=>'STRING', flags=>['other-app','other-widget'], info=>0});
Gtk2->main;

#========================子程序============================
sub on_preview_drag_data_received{
        my ($tolist, $context, $x, $y, $data, $info, $time, $fromlist) = @_;
	$_=$data->get_text(); 
#        s'^file://'';
#        $gui->get_widget(filechooserbutton2)->set_filename($_);
#        $gui->get_widget('preview')->set_from_file($_);
	$context->finish(1, 0, $time);
	return 0;
}
#----------------------------------
sub radio_clicked{
$_=shift;
$select=$_->get_label;
}
#----------------------------------
sub on_mainwindow_destroy{
Gtk2->main_quit;
}
#----------------------------------
sub on_filechooserbutton2_selection_changed{
$gui->get_widget('preview')->set_from_file($gui->get_widget('filechooserbutton2')->get_filename());
}
#----------------------------------
sub info{
$_=shift;
$pp="$path/$app.png";	# 傻notify要全路径的图片,还不如stock图标。
$bus->Notify("paste-img", 0, $pp, '贴图', "$_", [], { }, -1);
print "=>\t$_\n";
$gui->get_widget('statusbar1')->push(0,"$_");
}
#----------------------------------
sub on_bpaste_clicked{
use WWW::Mechanize;
use Net::DBus; 
use Encode;

$bus = Net::DBus->session->get_service('org.freedesktop.Notifications')
->get_object('/org/freedesktop/Notifications','org.freedesktop.Notifications');
my $add;
foreach (keys %web){$add=$_,last if /$select/;}
if(!$add){info("无效网站地址 $add($select)");exit;}
print "\e[31;42m$select\e[0m => $add\n";

$pic=$gui->get_widget(filechooserbutton2)->get_filename();
#$pic='/home/eexp/下载/26.png';
#$pic=$ARGV[0];
$pic=encode("utf8",$pic);
%h=%{$web{$add}};
foreach (keys %h){ $h{$_}=$pic,last if $h{$_}=~/____/; }
while(my($k,$v)=each %h){print "$k => .$v.\n";}

my $mech = WWW::Mechanize->new();
$mech->get($add);
if($add!~/ubuntu/) {$mech -> submit_form(with_fields=>\%h);}
else{$mech -> submit_form(with_fields=>\%h,button=>"paste");}
#======================
if ($mech->success()) {
	my $rr=$mech->uri();
	info("贴图地址: $rr");
	`echo $rr|xsel -i`;
} else {
	info("贴图失败: ".$mech->status());
}
#======================
}
● 鸣学
头像
thomasxie
帖子: 317
注册时间: 2009-11-22 15:29
联系:

Re: 代 ee 发贴图脚本,paste_img

#7

帖子 thomasxie » 2010-09-30 19:50

:em01 mark
时间就像一张网,你撒在那里,你的收获就在那里。
头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: 代 ee 发贴图脚本,paste_img

#8

帖子 susbarbatus » 2010-09-30 20:12

mark
沉迷将棋中……
头像
lainme
论坛版主
帖子: 7805
注册时间: 2008-09-13 19:17
系统: Arch Linux (x86_64)
联系:

Re: 代 ee 发贴图脚本,paste_img

#9

帖子 lainme » 2010-10-01 22:01

贴图的,一个就行了吧……kimag.es还行,自己用imgur

ee,imgur有匿名api,很方便

贴图的网站,python一般需要额外模块,或者调用curl。还是perl比较方便
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 代 ee 发贴图脚本,paste_img

#10

帖子 eexpress » 2010-10-01 23:29

不符合我这简单原则的网站,我就不准备支持了。不kiss。
● 鸣学
zoujichun
帖子: 82
注册时间: 2007-05-09 6:50

Re: 代 ee 发贴图脚本,paste_img

#12

帖子 zoujichun » 2010-10-02 0:14

虽然不用,正在尝试用,谢谢大神的脚本。
我的博客:关注Linux 企业应用,桌面折腾,python,perl,shell
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 代 ee 发贴图脚本,paste_img

#13

帖子 eexpress » 2010-10-06 0:53

增加一个网站
http://uploadpie.com/
附件
paste_img.pl.tar.xz
(2.3 KiB) 已下载 146 次
● 鸣学
头像
lainme
论坛版主
帖子: 7805
注册时间: 2008-09-13 19:17
系统: Arch Linux (x86_64)
联系:

Re: 代 ee 发贴图脚本,paste_img

#14

帖子 lainme » 2010-10-06 10:12

eexpress 写了:增加一个网站
http://uploadpie.com/
这个地址好,可以换掉imgur
头像
Drdi
帖子: 257
注册时间: 2009-10-02 15:47

Re: 代 ee 发贴图脚本,paste_img

#15

帖子 Drdi » 2011-02-24 15:35

学习 :em01 mark
爱Linux 也爱Ubuntu
简洁美观的桌面
更爱高效稳定的系统
不是不折腾难受夫斯基不想浪费时间
我和大多数人一样 我是菜菜
我要有菜菜的觉悟
我是Drdi
回复