简化 Picasa 图片上传
GPPM (Google Picasa Perl Module) v0.1 版本经过我两天调试,从连 HTTP::Message 都不太清楚到 Google::Picasa 模块的发布,学习到了不少的东西。
GPPM 出现的历史原因
由于 Google 的 Picasa 浏览器插件不支持 Linux,所以在 Linux 下只能一次选五个文件进行上传,上传速度慢,同时浏览器的响应也会变慢。其次,该模块对权限,认证做了封装。故此就有了 GPPM 这个模块,该模块主要是为了帮助大家更加方便快速的上传图片到 Picasa。
现在还在测试阶段,很可能里面还存在不少的 Bug,但是我已经可以正常的使用了。
GPPM 现有的功能
- 列出 Picasa 里面的所有的相册
- 创建新的相册
- 上传图片到相册
将来会加入的新功能
- 列出指定相册的图片
- 图片的删除
- 图片及相册相关信息的添加功能
大家可以通过 GPPM 的接口,方便的只上传图片,甚至自己按照本地的目录建立相册,然后迭代的上传所有必要的图片到相册。
存在的问题
- 由于 Google 服务器同步的原因,创建的相册不能马上查询,但是可以使用。
- 由于不能及时查到相册的名称,如果创建两个相同的相册,相册的名称是 xxx01..xxx02 的方式增长,而不是原有的指定的标题。
- 由于 Google 没有提供相册删除功能,所以还不能删除相册。
举例
这个例子先打印当前有所有的相册列表,然后创新新的相册,并将三个图片文件上传到新相册。
源码
1 #!/usr/bin/perl
2
3 #Author: updatedb
4 #Mail: dongqiang@gmail.com
5
6 use strict;
7 use lib ".";
8
9 use Google::Picasa;
10
11 print "UserName:";
12 chomp ( my $username=<> );
13 print "Password:";
14 chomp ( my $password=<> );
15
16 #new a object
17 my $picasa = Google::Picasa->new( $username, $password );
18
19 #get album list
20 my %albums = $picasa->get_album_list();
21 print "==================All album List=====================\n";
22 print "ID => Album Name\n";
23 foreach my $key ( keys %albums )
24 {
25 my $value = $albums{ $key };
26 print $value, " => ", $key, "\n";
27 }
28 print "=====================================================\n";
29
30 #create a new album if the album didn't exsit.
31 my $new_album_name = "current";
32 my ( $id, $name );
33 if ( exists( $albums{ $new_album_name } ) )
34 {
35 $id = $albums{ $new_album_name };
36 $name = $new_album_name;
37 }
38 else
39 {
40 print "Try to create album<$new_album_name>...\n";
41 ( $id, $name ) = $picasa->create_album( $new_album_name );
42 }
43
44 #upload picture files
45 my @picnames = qw( mollusk.jpeg mollusk_bak.jpeg mollusk.png );
46 my $picname;
47 foreach $picname ( @picnames )
48 {
49 if ( $picasa->upload_file( $id, $name, $picname ) )
50 {
51 print "Upload $picname Successful\n";
52 }
53 }
结果
==================All album List=====================
ID => Album Name
5080358959752961841 => GameScreen
5071179941904459073 => LinuxSpread
5072209707558315729 => OfficeDiff
=====================================================
Try to create album...
Upload mollusk.jpeg Successful
Upload mollusk_bak.jpeg Successful
Upload mollusk.png Successful
若需代码,可向我发邮件:<dongqiang#gmail.com>(发邮件时请将
替换为 @)。
[撰文/updatedb]
PS. 很高兴看到最近一些朋友将自己开发的 Linux 东东拿到 LinuxTOY 上来与大家分享。LinuxTOY 能够作为作者与用户之间交流的一个平台,我们感到十分荣幸。如果你正在开发 Linux 下的应用程序,我们非常乐意为你提供这方面的帮助。