OperaのコンタクトリストをThunderbirdのアドレス帳にインポートするためのCSVに変換する

先日、OperaのM2からPortable Thunderbirdに乗り換えた。

メールのデータ自体はGmailにまとめていたものをダウンロードしただけなので問題なかったのだけど、アドレス帳の移行がうまくいかなかった。http://d.hatena.nh.jp/goking/20041224で公開されているsedが動けばOK。と思って試したけどなんかエラーを吐いて動かなかった。で、適当にPerlで書いてみたのが下

使い方は、至って普通
+適当にプログラムを保存する
+ENDの下にOperaからエクスポートしたcontacts.adrの内容をこぴぺ
+Perlでプログラム実行
+標準出力に名前とメールアドレスだけのCSVが出てくるので保存

|perl|

OperaのコンタクトリストをThunderbirdのアドレス帳にインポートするためのCSVに変換する

use strict;
use warnings;

各種設定

取得する文字列の区切りを空行に設定

$/ = “\n\n”;
$\ = “\n”;

必要そうな変数を設定

my $addr;
my $type;
my @folder;

foreach $addr () {
my %address;

# アドレスの種別を取得する
$type = $addr =~ s/^(.+\n)// ? $1: “”;

# 対象によって処理の振り分け
# 必要な処理があれば適当に書く
if($type =~ /^#FOLDER/) {
%address = parse_address($addr);

# フォルダのスタックにプッシュする
push(@folder, $address{'NAME'});

}
elsif($type =~ /^#CONTACT/) {
%address = parse_address($addr);

# 面倒なので、ここで出力してしまう
print "\"$address{'NAME'}\", $address{'MAIL'}, " ;

}
elsif($type =~ /^-/) {
# フォルダのスタックからポップする
# 取り出したものは読み捨て
pop(@folder);
}
else {
# 特に無し
}

}

一つのアドレスブロックを受け取り、

各フィールド名をキーとしたハッシュを返す

sub parse_address {
my $address = shift;
my %addr;

# アドレスごとにフィールドに分割して
#   乱暴に連想配列に突っ込みなおす
foreach my $field ( split(/\n/, $address)) {

$field =~ s/^\s+//o;
my ($title, $value) = split(“=”, $field, 2);

$addr{$title} = $value;

}
return(%addr);

}

Operaからエクスポートしたcontacts.adrをENDの下に貼り付ける

END
Opera Hotlist version 2.0
Options: encoding = utf8, version=3

FOLDER





||<

コマンドラインからファイル名を指定したりなんだりは無視する。一発もののプログラムを書くときには、END以下に直接データを書くのが一番お手軽な気がする

ちなみに、コメントは作った後で書いてみたので嘘が混じってるかもしれません。大体フォルダ名とか取得してるけど結局何も使ってない。そもそもフォルダをきちんと分けて管理なんかしていないのでそこも無問題

Operaを使って広告を消す

最近はやりのGoogle AdSenseやAmazonアソシエイト

あっても気にならないけどいったん気になり始めたら邪魔以外の何者でもない。ある意味昔のポップアップ広告に近いものがあると思う
特に、非力な環境でWebを見ていると何とかならんもんかなぁと思うわけで。。。

Operaのブロックコンテンツ

Operaを使うと、特定のURLをリクエストしなくなる(ブロックコンテンツ)
マウスを使って画像だけブロックするのが一般的だけど、URLとワイルドカードさえ使ってしまえば大抵のコンテンツは呼び出ししなくなる

Operaは詳しく覚えていないけどおそらくバージョン8以降なら大丈夫なはず

設定方法

+Webページが表示されている部分で、画像やテキストがない部分を右クリックする
+「コンテンツのブロック」を選択
+画面上部に出てきた「詳細設定」をクリック
+「追加」を使いながら、以下にあげるURLを追加していく
+一通り入力し終わったら「閉じる」→画面上部の「完了」を順番にクリック

ブロックするアドレスのリスト

Google AdSense
: http://pagead2.googlesyndication.com/*

Google Analystics
: http://google-analytics.com/*

Amazon アソシエイト1
: http://rcm-jp.amazon.co.jp/e/*

Amazon アソシエイト2
: http://www.assoc-amazon.jp/s/ads.js

バリューコマース
: http://ad.jp.ap.valuecommerch.com/vc/*

で、これってどういう理屈?

ちなみに、最近流行ののコンテンツ連動型広告は、大抵Javascriptを使っている。
さらに、ここのWebページへの依存度を下げるために、外部参照で呼び出していることが多い
そこで、その外部参照しているJavscriptをブロックすると、広告は表示されなくなるという仕組み

で、こういう広告のブロックってどうなの?

ある意味、Webサイトの運営者は広告収入がモチベーションになっている部分もあるわけで。。。
それを一方的に拒否しておきながらサイトの情報だけはいただくってのは道義に反するんじゃないか的な話っす
で、これと同じ状況ってのがあったのが90年代のWebだなぁって思うわけです

当時は、ポップアップ広告全盛だったわけですが、あるときを境にポップアップブロッカーなるソフトウェアの一群が流行りだしたと
そのときも、広告収入によるモチベーションの維持と、閲覧者の利便性がいろいろと議論されていたように思う
じゃぁ、結局どうなったかというと、いまや標準状態のWebブラウザであってもポップアップブロックが完備されているわけで
きっと世の中はそういったいたちごっこが続いていくんだろうなぁっと

ちなみに、俗にいうコンテンツ連動型広告ってのは今一おもしろくないし使えないって話はまた別に

ちょっと話は逸れるんですけど

先日親戚のあまりWebに詳しくない人と話をする機械があったんですが
一般初心者ってのは、広告とコンテンツもしくは検索結果の区別がついていないっぽい
だから最近テレビとかで「キーワードを検索してください」なんて寝ぼけた広告が打てるんだなぁ
っと関心した次第です

区別がついていないんだったら、Googleアドワーズなんかは良い宣伝になるんだろうと
比較的楽に、サイトの上部に表示してもらえるわけで

でも、少し怖かったのが、コンテンツと広告の区別がついていないこと
つまり、何らかの拍子でサイトに変な広告が紛れ込んだときに、区別がつかないってことですよね
まぁ、広告配信代理店もそのくらいは考えているだろうし、問題はないとは思うんですが。。。