分页: 1 / 2

代 ee 发贴图脚本,paste_img

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

ee说: 图片可以拖放到文件选择栏。拖放到预览图的,还有兼容问题,没写完。

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-09-28 11:42
ubuntu1023
:em11

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-09-28 11:46
linlee
看不到图片~

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-09-28 11:49
xiooli
perl 无视,谁写个 python 的?

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-09-28 11:59
ChenFengyuan
linlee 写了:看不到图片~
不是吧,我放到google code上的阿。
http://cfy.googlecode.com/files/paste_img.jpg

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-09-30 19:45
eexpress

代码: 全选

***   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());
}
#======================
}

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-09-30 19:50
thomasxie
:em01 mark

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-09-30 20:12
susbarbatus
mark

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-10-01 22:01
lainme
贴图的,一个就行了吧……kimag.es还行,自己用imgur

ee,imgur有匿名api,很方便

贴图的网站,python一般需要额外模块,或者调用curl。还是perl比较方便

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-10-01 23:29
eexpress
不符合我这简单原则的网站,我就不准备支持了。不kiss。

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-10-01 23:40
photor
:em09

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-10-02 0:14
zoujichun
虽然不用,正在尝试用,谢谢大神的脚本。

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-10-06 0:53
eexpress
增加一个网站
http://uploadpie.com/

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2010-10-06 10:12
lainme
eexpress 写了:增加一个网站
http://uploadpie.com/
这个地址好,可以换掉imgur

Re: 代 ee 发贴图脚本,paste_img

发表于 : 2011-02-24 15:35
Drdi
学习 :em01 mark