App-ggdrv
view release on metacpan or search on metacpan
lib/App/ggdrv/fsearchall.pm view on Meta::CPAN
package App::ggdrv::fsearchall ;
use strict; use warnings;
use feature 'say' ;
use Data::Dumper ;
use Getopt::Std ;
use HTTP::Tiny ;
use JSON ;
my ( $GOOGLE_DRIVE_API , $gfile , $atoken , $count_limit , $uri , %o ) ;
return 1 ;
sub fsearchall () {
#exit ;
getopts 'g:D' , \%o ;
$GOOGLE_DRIVE_API = "https://www.googleapis.com/drive/v3/files" ;
$gfile = $ENV{ GGDRV_API } // "~/.ggdrv2303v1" ;
$atoken = qx [ sed -ne's/^ACCESS_TOKEN[ =:\t]*//p' $gfile ] =~ s/\n$//r ;
say $atoken ;
$count_limit = $o{g} // 2 ;
# å
¨ã¦ã®ãã¡ã¤ã«ãåå¾ãã
$uri = URI -> new ( $GOOGLE_DRIVE_API ) ;
$uri -> query_form ( access_token => $atoken ) ;
& files ( $uri ) ;
}
sub files {
binmode STDOUT, ":utf8" ;
my $uri = shift;
#say "\$uri=$uri" ;
my $count = 0 ; # URIã®ä¸èº«ããåãåºãã nextPageToken ãå¼ã£å¼µãåºããåæ°
my $fnum = 0 ; # ãã¡ã¤ã«ã®åæ°
my $ht = HTTP::Tiny->new();
while ( $count < $count_limit ) {
my $contents = decode_json( $ht->get($uri)->{content} );
do { print Dumper $contents ; $contents->{error} ? last : next } if $o{D} ;
$uri->query_form( access_token => $atoken, pageToken => $contents->{nextPageToken} ) ;
for my $content ( @{ $contents->{files} } ) {
print sprintf ("%05d ", ++ $fnum ) . "=" x 20 . "\n" ;
printf( "%-8s: %s\n", "id", $content->{id} );
printf( "%-8s: %s\n", "name", $content->{name} );
printf( "%-8s: %s\n", "mimeType", $content->{mimeType} );
printf( "%-8s: %s\n", "kind", $content->{kind} );
print "=" x 20 . "\n";
}
last if ! $contents->{nextPageToken}; # æçµãã¼ã¸ã«ã¯ nextPageToken ãã¼ãç¡ã
}
continue {
$count ++ ;
}
}
=encoding utf8
=head1
ãã©ã¤ãã®ãã¡ã¤ã«ã®ä¸è¦§ãåºåãä½ããã®ææ®µã§ãã®ããã°ã©ã ã«ã¢ã¯ã»ã¹ãã¼ã¯ã³ãä¸ãããã¨ãå¿
è¦ã
ããªãã·ã§ã³ :
-g N : ä½åãã¼ã¸ããããã? æªæå®ãªã2ã
#-D : åã£ã¦ãããã¼ã¿ã Dumper ã§åºåãããã¨ã©ã¼ãèµ·ããã¨ãã®æ§åã調ã¹ãã®ã«ä¾¿å©ã
ãã®ä» :
- 1ä¸åãã¡ã¤ã«ãããã¨ãå
¨é¨è¦ããã®ã«ã1åéã®æéããããã§ãããã
- å
é¨ã§ãHTTP::Tinyãç¨ãããNet::Google::OAuthã使ã£ã¦ããªãã
- fsearch㨠fsearchall ãæããã¨ã§ãä¸ä¸ãçæ¹ã«ä¸å
·åããã£ãå ´åã«å¿å¼·ãã
=cut
( run in 1.322 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )