OSDN Git Service

961add172dfacbfe612e5b597ee34370aca6bfbd
[otptools/otptools.git] / html2wiki / upload.py
1 #!/usr/bin/perl
2 # SourceForge.JP Wiki manipulator
3 # by hylom
4 # This code is under GPL.
5 #
6
7 use warnings;
8 use strict;
9
10 use lib '/Users/hylom/otptools';
11
12 use utf8;
13 use open IO => ':utf8';
14 use open ':std';
15
16 use Getopt::Std;
17 use SourceForgeJP;
18 use IO::File;
19 use Term::Prompt;
20 use URI::Escape;
21 use Encode;
22 use File::Temp;
23 use Path::Class;
24
25 my $usage = <<EOD;
26 upload.pl <project> <upload_list>
27 EOD
28
29 sub main {
30     if (@_ < 2) {
31         print $usage;
32         exit;
33     }
34
35     my $project = shift @_;
36     my $listname = shift @_;
37
38     my $f_list = new IO::File($listname, "r");
39
40     while(my $line = <$f_list>) {
41         my @spl = split(/\s+/, $line);
42         my $fname = $spl[0];
43         my $pagename = uri_escape($spl[1]);
44         printf STDERR "upload $fname to $project - $pagename \n";
45         upload_text($project, $pagename, $fname);
46     }
47 }
48
49 sub upload_attachments {
50     my $path = shift @_;
51     my $project = shift @_;
52     my $page = shift @_;
53
54     my $dh = $path->open();
55     while( my $file = $dh->read() ) {
56         my $file = $path->file($file); # get Path::Class::File object.
57
58         if( ! -e $file ) {
59             die "$file is not exist.\n";
60         }
61         my $fname = $file->stringify();
62         if( not $fname =~ m/\.(jpg|JPG|png|PNG|gif|GIF)$/ ) {
63             next;
64         }
65         print STDERR "uploading:\n";
66         print $file, "\n";
67         my $sf = WWW::SourceForgeJP->new();
68         my $ret = $sf->Wiki->post_attachment( project => $project,
69                                               page => $page,
70                                               file => $fname );
71
72         if( $ret ) {
73             print "$file: upload succeed.\n";
74         } else {
75             print "$file: upload failed.\n";
76         }
77
78     }
79 }
80
81 sub upload_text {
82     my $project = shift @_;
83     my $pagename = shift @_;
84     my $fname = shift @_;
85
86     my $fh = new IO::File($fname, "r");
87     if( ! $fh ) {
88         print STDERR "can't open: $fname: $!";
89         return
90     }
91 #    my $filename = <$fh>;
92 #    chomp $filename;
93 #    my $title = <$fh>;
94 #    chomp $title;
95     my $title = "";
96     my $body = do { local( $/ ); <$fh> };
97     close $fh;
98
99     print "$project - $pagename\n";
100
101     my $sf = WWW::SourceForgeJP->new();
102     $sf->Wiki->edit_page( project => $project,
103                           page => $pagename,
104                           text => $body,
105                           title => $title,
106                           comment => "" );
107
108     return $pagename;
109 }
110
111 main(@ARGV)