Net-Google-Drive-Simple
view release on metacpan or search on metacpan
eg/google-drive-upsync view on Meta::CPAN
#!/usr/local/bin/perl -w
use strict;
use Sysadm::Install qw(:all);
use Net::Google::Drive::Simple;
use Log::Log4perl qw(:easy);
use File::Basename;
use Getopt::Std;
use Pod::Usage;
getopts( "hvnc", \my %opts );
pod2usage() if $opts{h};
my ( $local_dir, $gd_dir ) = @ARGV;
if ( !defined $gd_dir ) {
pod2usage("No Google Drive dir given");
}
if ( !-d $local_dir ) {
pod2usage("$local_dir not a directory");
}
if ( $opts{c} ) {
$opts{v} = 1;
}
my $log_level = $INFO;
$log_level = $DEBUG if $opts{v};
Log::Log4perl->easy_init(
{
level => $log_level,
layout => "%d %F{1}:%L> %m%n"
}
);
my %files_local = ();
opendir DH, $local_dir;
for my $file ( readdir DH ) {
my $path = "$local_dir/$file";
if ( !-f $path ) {
next;
}
$files_local{$file} = -s $path;
}
closedir DH;
INFO "Found ", scalar keys %files_local, " local files";
my $gd = Net::Google::Drive::Simple->new();
INFO "Listing $gd_dir on Google Drive";
my ( $entries_gd, $parent ) = $gd->children($gd_dir);
if ( !defined $entries_gd ) {
pod2usage("$gd_dir can't be listed - does it exist?");
}
INFO "Found ", scalar @$entries_gd, " files on Google Drive";
my %needs_update = ();
for my $entry (@$entries_gd) {
if ( $entry->kind() ne 'drive#file' ) {
DEBUG "Ignoring ", $entry->title();
next;
( run in 2.217 seconds using v1.01-cache-2.11-cpan-98e64b0badf )