119 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env perl
 | |
| #===============================================================================
 | |
| #
 | |
| #         FILE: load_downloads
 | |
| #
 | |
| #        USAGE: ./load_downloads infile
 | |
| #
 | |
| #  DESCRIPTION: Loads episode downloads from a file into the 'eps' table
 | |
| #
 | |
| #      OPTIONS: ---
 | |
| # REQUIREMENTS: ---
 | |
| #         BUGS: ---
 | |
| #        NOTES: ---
 | |
| #       AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
 | |
| #      VERSION: 0.0.1
 | |
| #      CREATED: 2014-08-30 17:46:47
 | |
| #     REVISION: 2014-08-30 17:46:52
 | |
| #
 | |
| #===============================================================================
 | |
| 
 | |
| use 5.010;
 | |
| use strict;
 | |
| use warnings;
 | |
| use utf8;
 | |
| 
 | |
| use Config::General;
 | |
| use Text::CSV_XS;
 | |
| 
 | |
| use DBI;
 | |
| 
 | |
| #
 | |
| # Version number (manually incremented)
 | |
| #
 | |
| our $VERSION = '0.0.1';
 | |
| 
 | |
| #
 | |
| # Script name
 | |
| #
 | |
| ( my $PROG = $0 ) =~ s|.*/||mx;
 | |
| ( my $DIR  = $0 ) =~ s|/?[^/]*$||mx;
 | |
| $DIR = '.' unless $DIR;
 | |
| 
 | |
| #-------------------------------------------------------------------------------
 | |
| # Declarations
 | |
| #-------------------------------------------------------------------------------
 | |
| #
 | |
| # Constants and other declarations
 | |
| #
 | |
| my $basedir    = "$ENV{HOME}/HPR/Database";
 | |
| my $configfile = "$basedir/.hpr_db.cfg";
 | |
| 
 | |
| my ( $dbh, $sth1, $sth2, $sth3, $sth4, $h1, $h2, $rv );
 | |
| my ( $infile, $row );
 | |
| 
 | |
| #
 | |
| # Enable Unicode mode
 | |
| #
 | |
| binmode STDOUT, ":encoding(UTF-8)";
 | |
| binmode STDERR, ":encoding(UTF-8)";
 | |
| 
 | |
| #
 | |
| # Check the input file
 | |
| #
 | |
| $infile = shift;
 | |
| die "Usage: $PROG input_file\n" unless $infile;
 | |
| die "Unable to find/read file '$infile'\n" unless -r $infile;
 | |
| 
 | |
| #
 | |
| # Load configuration data
 | |
| #
 | |
| my $conf = new Config::General(
 | |
|     -ConfigFile      => $configfile,
 | |
|     -InterPolateVars => 1,
 | |
|     -ExtendedAccess  => 1
 | |
| );
 | |
| my %config = $conf->getall();
 | |
| 
 | |
| #-------------------------------------------------------------------------------
 | |
| # Connect to the database
 | |
| #-------------------------------------------------------------------------------
 | |
| my $dbhost = $config{database}->{host};
 | |
| my $dbname = $config{database}->{name};
 | |
| my $dbuser = $config{database}->{user};
 | |
| my $dbpwd  = $config{database}->{password};
 | |
| $dbh = DBI->connect( "dbi:mysql:host=$dbhost;database=$dbname",
 | |
|     $dbuser, $dbpwd, { AutoCommit => 1 } )
 | |
|     or die $DBI::errstr;
 | |
| 
 | |
| #
 | |
| # Enable client-side UTF8
 | |
| #
 | |
| $dbh->{mysql_enable_utf8} = 1;
 | |
| 
 | |
| $sth1 = $dbh->prepare(q{UPDATE eps SET downloads = ? WHERE id = ?});
 | |
| 
 | |
| #
 | |
| # Open the input file
 | |
| #
 | |
| open( my $in, "<", $infile ) or die "Unable to open $infile: $!\n";
 | |
| 
 | |
| my $csv = Text::CSV_XS->new;
 | |
| 
 | |
| #
 | |
| # Process all lines as CSV
 | |
| #
 | |
| while ( $row = $csv->getline($in) ) {
 | |
|     $sth1->execute( $row->[1], $row->[0] );
 | |
|     if ( $dbh->err ) {
 | |
|         warn $dbh->errstr;
 | |
|     }
 | |
| }
 | |
| 
 | |
| close($in);
 | |
| 
 | |
| exit;
 | |
| 
 | |
| # vim: syntax=perl:ts=8:sw=4:et:ai:tw=78:fo=tcrqn21:fdm=marker
 | |
| 
 |