CSSアップローダ

30分プログラム、その129。ローカルにあるスタイルシートを、はてなダイアリースタイルシートとして書き込むツール。

はてダラにインスパイアされました。

使い方

$ perl hcss.pl style.css

ソースコード

#! /usr/bin/perl
# -*- mode:perl; coding:utf-8 -*-
#
# hcss.pl -
#
# Copyright(C) 2007 by mzp
# Author: MIZUNO Hiroki <hiroki1124@gmail.com> 
# http://mzp.sakura.ne.jp/
#
# Timestamp: 2007/09/09 16:01:49
#
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
#
use strict;
use warnings;
use WWW::Mechanize;
use Data::Dumper;

# ------------------
# setting
# ------------------
my $username = 'mzp';
my $password = 'xxx';

# ------------------
open(FILE,$ARGV[0]) or die('File cannot open');
my $css = join('',<FILE>);
close(FILE);

sub print_msg(@){
    print @_,"\n";
}
sub print_debug(@){
#    print_msg("DEBUG:",@_);
}

sub status($$){
    my ($name,$mech) = @_;
    print_debug("$name :",$mech->status);
    unless($mech->success){
	die("$name :",'Unexpected response: ',$mech->status);
    }
}

print_debug('Login form');
my $mech = WWW::Mechanize->new;
my $r = $mech->get('http://www.hatena.ne.jp/login');
status 'Login form',$mech;

print_debug "Login";
$mech->form_number(1);
$mech->set_fields('name'=>$username,
		  'password'=>$password,
		  'persistent'=>'1');
$r = $mech->submit;
status 'Login',$mech;


print_debug "Design";
$r = $mech->get("http://d.hatena.ne.jp/$username/designdetail");
status 'Get Design',$mech;

$mech->form_number(1);
$mech->set_fields('style'=>$css);
$mech->submit;
status 'Design',$mech;