App-ggdrv
view release on metacpan or search on metacpan
#!/usr/bin/perl
use 5.030 ; use strict ; use warnings ;
use Getopt::Std ;
use Getopt::Long qw [ GetOptions :config bundling no_ignore_case pass_through ] ; # GetOptionsFromArray ] ;
use Time::HiRes qw[ gettimeofday tv_interval sleep ] ; # Perl 5.7.3ããã³ã¢ã¢ã¸ã¥ã¼ã«
use Term::ANSIColor qw[ color :constants ] ; $Term::ANSIColor::AUTORESET = 1 ;
use FindBin qw[ $Script $Bin ] ;
use lib "$FindBin::Bin/lib" ;
use App::ggdrv::start ; # GCPã§APIãè¨å®ããæ¹æ³ããèªã人ã«èª¬æããææ¸ã表示ããã
use App::ggdrv::crecord ; # è¨å®ãã¡ã¤ã«ã®æ¸ãè¾¼ã¿æ¹ã説æãããèªåå®è¡ã®æ©è½ãæä¾ã
use App::ggdrv::tokens ; # ãã¼ã¯ã³2åãè¨å®ããã表示ãå¯è½ã
use App::ggdrv::fsearch ;
use App::ggdrv::fsearchall ;
use App::ggdrv::upload ;
use App::ggdrv::update ;
use App::ggdrv::download ;
use App::ggdrv::upload5 ; # uploadã«ä¾å
use App::ggdrv::download5 ;
use App::ggdrv::sync5 ; # update ã«ä¾å
## è¨ç®ç§æ°ãªã©ã«ã¤ãã¦ã®å¦ç
#my %o ;
our $prt2 ; # æå¾ã«2次æ
å ±ãåºããªããªã 0 ã¨ããå¤ãè¨å®ãããã
my $time_start = [ gettimeofday ] ;
END{ ## çµäºããæ®µéã§ãäºæ¬¡æ
å ±ã表示ãã
exit if 0 eq ($prt2//'') ;# 0 eq ( $o{2} // '' ) ;
use POSIX qw [ strftime ] ;
my $dt1000 = sub { my $t = [ gettimeofday ] ; strftime( "%Y-%m-%d %H:%M:%S." . sprintf("%03d", $t->[1] / 1e3 ) , localtime( $t->[0] ) ) } ;
my $sec = sprintf "PT %0.3f S", tv_interval ( $time_start ) ;
my $env_ga = $ENV{GGDRV_API} // 'undef' ;
say STDERR BOLD YELLOW FAINT "-- " , $dt1000->() , " calculation time: ", $sec, " ( $Script ; \$\$==$$ ; \$GGDRV_API==$env_ga )";
}
## 主è¦é¨ã¯ããããã
my $a1 = shift @ARGV or do { $prt2 = 0 ; & App::ggdrv::start::start() ; exit } ;
GetOptions ( '2=s' => \$prt2 ) ;
GetOptions ( run => \my$run ) ;
GetOptions ( tokens => \my$tokens , get => \my$get , try => \my$try , atoken => \my$atoken ) ;
for ( $a1 ) {
/^crecord$/ and & App::ggdrv::crecord::crecord( $run ) and $prt2 = 0 ;
/^(tokens|token)$/ and & App::ggdrv::tokens::tokens( $get , $try , $atoken ) ;
/^fsearch$/ and & App::ggdrv::fsearch::fsearch () ;
/^fsearchall$/ and & App::ggdrv::fsearchall::fsearchall () ;
/^upload$/ and & App::ggdrv::upload::upload () ;
/^update$/ and & App::ggdrv::update::update () ;
/^download$/ and & App::ggdrv::download::download () ;
/^upload5$/ and & App::ggdrv::upload5::upload5 () ; ## ãããã5åTSVãã¡ã¤ã«ã使ã£ãæä½3種é¡
/^download5$/ and & App::ggdrv::download5::download5 () ;
/^sync5$/ and & App::ggdrv::sync5::sync5 () ;
/^--help$/ and do { $prt2=0 ; & HELP_MESSAGE } ;
}
exit ;
## ãã«ãã®æ±ã
sub VERSION_MESSAGE {}
sub HELP_MESSAGE{
use FindBin qw[ $Script ] ;
$ARGV[1] //= '' ;
open my $FH , '<' , $0 ;
while(<$FH>){
s/\$0/$Script/g ;
print $_ if $ARGV[1] eq 'opt' ? m/^\ +\-/ : s/^=head1// .. s/^=cut// ;
}
close $FH ;
exit 0 ;
}
# æ°ã3æ¡åºåãã«å¤æããã
sub d3 ($) { $_[0] =~ s/(?<=\d)(?=(\d\d\d)+($|\D))/,/gr } ;
=encoding utf8
=head1
ggdrv
ãµãã³ãã³ãæ¹å¼ã§ãæ§ã
ãªé¢é£ããæ©è½ãå®è¡å¯è½ã¨ãã¦ããã
OAuthã®ä»çµã¿ã§Googleãã©ã¤ãã«ãã¡ã¤ã«ãèªåæ´æ°ã§åæããæ©è½ãæä¾ããã
å©ç¨ä¾ :
ggdrv --help # --help ã«ããããã®ãã«ãã®æé¢ãç¾ããã
[è¨å®ç³»]
ggdrv # 弿°ç¡ãã§å®è¡ããã¨ãæåã®ã»ããã¢ããã®ä»æ¹(ãã©ã¦ã¶è¶ãã§ãã¯ã©ã¤ã¢ã³ãã·ã¼ã¯ã¬ããããä½ãæ¹æ³)ã表示ãããã
ggdrv crecord # ã¯ã©ã¤ã¢ã³ãã·ã¼ã¯ã¬ãã(Client)ãªã©ããè¨å®ãã¡ã¤ã«ã«æ¸ãè¾¼ãæ¹æ³ã表示ãããã
ggdrv crecord --run # 表示ãããå
容ãå®éã«å®è¡ããã
ggdrv tokens # ãã¼ã¯ã³ã®æ
å ±2åãåã«è¡¨ç¤ºããã(ãªãã¬ãã·ã¥ãã¼ã¯ã³(使ããªãã¨åå¹´ã§ç¡å¹å)ã¨ã¢ã¯ã»ã¹ãã¼ã¯ã³ãããã)
ggdrv tokens --get # ãã¼ã¯ã³ãåå¾ãã(è¨å®ãã¡ã¤ã«ã«æ¸ãè¾¼ã)ãæ¸ãè¾¼ãåã®ãã¡ã¤ã«ã¯ããã¯ã¢ããã¯1åã®ã¿ä¿ç®¡ã
ggdrv tokens --get --try # ãã¼ã¯ã³ãåå¾ããããè¨å®ãã¡ã¤ã«ã«ã¯æ¸ãè¾¼ã¾ãªãã
ggdrv tokens --atoken # ã¢ã¯ã»ã¹ãã¼ã¯ã³ã®ã¿æ´æ°ããã60åæªä½¿ç¨ã§ããã°ãæ´æ°ã¯å¿
è¦ã-try ãæå®ããã¨è¨å®ãã¡ã¤ã«ã«æ¸ãè¾¼ã¾ãªãã
[ãã¡ã¤ã«æ¤ç´¢]
ggdrv fsearch FILENAME # ãã¡ã¤ã«ãæå¤§100åã¾ã§æ¢ã(ãã©ã«ãã¯æå®ä¸è½)ãã¯ã¤ã«ãã«ã¼ããæå®å¯è½ãã¿ãåºåã5åã§åºåã
ggdrv fsearchall -g10 # ãã¡ã¤ã«ã100åã㤠-g ã§æå®ããåæ°åºå(ãã©ã«ãã¯æå®ä¸è½)ã1åã®ãã¡ã¤ã«ã«ã¤ãã縦ã«4è¡ãåºåã## <-- æã
ãªãã¬ãã·ã¥ãã¼ã¯ã³ãæ´æ°ããå¿
è¦ããã
[(åç´ãª)ã¢ãããã¼ã/æ´æ°/ãã¦ã³ãã¼ã]
ggdrv upload -f ãã©ã«ãID(28æå) FILE [FILE] .. # ã¢ãããã¼ãããã ååãã¡ã¤ã«ã«å¯¾ãè¤æ°åå®è¡ãããããã®åã°ã¼ã°ã«ãã©ã¤ãä¸ã«ç¾ããã®ã§æ³¨æã
ggdrv update ID1 FILE1 [ID2 FILE2] [ID3 FILE3] .. # æ´æ°ããã33æåã®IDã«å¯¾ãã¦ããã¼ã«ã«ã®ãã¡ã¤ã«ã®ååããã¢ã«ãã¦æå®ã
ggdrv download ãã¡ã¤ã«ID(33æå) ãã¼ã«ã«ã§äºå®ãããã¡ã¤ã«å # ãã¦ã³ãã¼ãããã
[使¥å¯¾è±¡ã®ãã¡ã¤ã«ã管çãã¤ã¤ã¢ãããã¼ã/æ´æ°/ãã¦ã³ãã¼ã] â» ãµãã³ãã³ãã«ã5ããå¾ç½®ããã®ãç¹å¾´ã
ggdrv upload5 FOLDER_ID LOCAL_DIR > VAR_FILE # ã¢ãããã¼ããããæ¨æºåºåããã¡ã¤ã«ã«ä¿ç®¡ãã¦ãç¶ããµãã³ãã³ãã§ã使ãã
ggdrv download5 LOCAL_DIR < VAR_FILE # ãã¦ã³ãã¼ãããã
ggdrv sync5 OLD_DIR NEW_DIR < VAR_FILE # åæã«ä½¿ããOLD_DIRã¯Googleãã©ã¤ãã¨äºãåæãããNEW_DIRã¨éãã°ããããã¢ãããã¼ãã
ãªãã·ã§ã³:
-2 0 : æå¾ã«2次æ
å ±ãæ¨æºã¨ã©ã¼åºåã«åºããªãããµãã³ãã³ãã®å¾ãã«ç½®ããã¨ã
ç°å¢å¤æ° : export VAR=VALUE ã§æå®ãunset VAR ã§è§£é¤ãå¯è½ã
GGDRV_API : ã¯ã©ã¤ã¢ã³ãIDãã¯ã©ã¤ã¢ã³ãã·ã¼ã¯ã¬ãããä¿ç®¡ãããã¡ã¤ã«ã®ååãæªæå®ãªã ~/ggdrv2303v1 ã§ããã
ä¸éå¯¿ä¹ Toshiyuki SHIMONO <bin4tsv@gmail.com>
Copyright (c) 2023 Toshiyuki SHIMONO. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=cut
( run in 1.509 second using v1.01-cache-2.11-cpan-b16cb0d3907 )