Monthly Archives: 11月 2009 - Page 2

容量の大きいファイル検索スクリプト Bash

このごろ鯖をファイル置き場として利用する方々の為にせっせと毎回コマンド叩くのが
面倒なのでスクリプトを作成しました。
珍しくBash(SH)で書きました^^
やっぱ慣れていないのでPerlのようにすらすら書けないですね~
効率悪すぎ!!とか言わないで~(汗

#!/bin/sh
# 初期設定(メール送信宛先、件名、コマンド)
address=”メール送信宛先@”
subject=”容量の大きいファイル”

exe=”find /home -name “*.exe” -size +100000k”
iso=”find /home -name “*.iso” -size +100000k”
cso=”find /home -name “*.cso” -size +100000k”
zip=”find /home -name “*.zip” -size +100000k”
rar=”find /home -name “*.rar” -size +100000k”
cab=”find /home -name “*.cab” -size +100000k”
lzh=”find /home -name “*.lzh” -size +100000k”
avi=”find /home -name “*.avi” -size +100000k”
wmv=”find /home -name “*.wmv” -size +100000k”
wma=”find /home -name “*.wma” -size +100000k”

df=”df”;

# 件名の文字コードをJISに変換
subject=`echo $subject | nkf -j`
# メール送信(コマンド結果はSJISに変換)
mail -s “$subject” $address << HONBUN ====================[ exe ]==================== `$exe | nkf -s` ====================[ iso ]==================== `$iso | nkf -s` ====================[ cso ]==================== `$cso | nkf -s` ====================[ zip ]==================== `$zip | nkf -s` ====================[ rar ]==================== `$rar | nkf -s` ====================[ cab ]==================== `$cab | nkf -s` ====================[ lzh ]==================== `$lzh | nkf -s` ====================[ avi ]==================== `$avi | nkf -s` ====================[ wmv ]==================== `$wmv | nkf -s` ====================[ wma ]==================== `$wma | nkf -s` =============================================== HONBUN # 終了 exit [/bash]

ROS カウンター Ver.1.03

どうしてもカウンターがリセットされる現象を回避できなくて頭を悩ましていました^^;
どうもflock関数(ファイルロック)が理解できていなかったと言うのが結論。
にしても酷いな・・・・勉強の大切さを理解しました。

カウンターでこのざまなら掲示板はどうなるんだ?
最初から作り直したほうが早いかもな・・・・・インストーラも効率悪かったし^^;

すばらしく分かりやすく解説していただいたサイト
CGIやDBのロックと同時実行制御

#!/usr/bin/perl
#######################################################
#スクリプト名:ROS カウンター Ver.1.03
#作者:ORBIT
#著作権:ORBIT SPACEに帰属します。
#著作権表示は一切行いません。自由にお使いください。
#######################################################

#各種設定
#------------------------------------------------------
#イメージの保存ディレクトリ
$imgs = './img/';
#ログの保存場所
$ip_log = 'ip.log';
$counts_log = 'counts.log';
#------------------------------------------------------

#IPを取得
$ip = $ENV{'REMOTE_ADDR'};

#GETのデータから位を取得
$buf = $ENV{'QUERY_STRING'};
--$buf;

#過去ログの取得
open (IN_OUT,"+<$counts_log");
flock IN_OUT, 2;
$counts_data = <in_OUT>;

open (IP_IN_OUT,"+<$ip_log");
flock(IP_IN_OUT, 1);
@ip_data = <ip_IN_OUT>;
chomp($ip_data[0]);
if($ip eq $ip_data[0]){&img;}
$ip_data[0] = "$ip_data[0]n";

#インクリメントして保存
if($counts_data eq ""){$counts_data = "00000000"};
++$counts_data;
seek IN_OUT, 0, 0;
print IN_OUT $counts_data;
close(IN_OUT);

#IPを記録
unshift @ip_data, "$ipn";
seek IP_IN_OUT, 0, 0;
print IP_IN_OUT @ip_data;
close(IP_IN_OUT);

&img;

# 画像表示
sub img{
#過去ログを取得し逆順に並べ替える
@list = split(//,$counts_data);
@img_list = reverse (@list);
$nu = $img_list[$buf];

open(IG,"$imgs$nu.gif");
print "Content-type: image/gifnn";
binmode(IG);
binmode(STDOUT);
print <ig>;
close(IG);
exit;
}

YoutubeダウンロードURL生成β Perl

基礎となるプログラムです。
先日紹介したダウンロードの方法をPerlにて最小限に表現してみました。

#!/usr/bin/perl
#########################################
#ソフト名:YoutubeダウンロードURL生成β
#作成日:2009/11/5
#作者:ORBIT
#著作権:ORBIT SPACEへ帰属します。
#########################################


#LWPモジュールを使用する
use LWP;

print"YoutubetURLn>";
$Target = <stdin>;

#正規表現にてURLの情報を取得
$Target =~ /http://(.*)/watch?v=(w*)/;
my $host = $1;
my $id = $2;

#取得した情報からURLを生成
$URL = 'http://www.youtube.com/get_video_info?&video_id='."$id";

#HTMLの取得
my $soce = LWP::UserAgent->new->request(
		HTTP::Request->new(GET => "$URL"))->content;

		#TOKENの取得を行う
		$soce =~ /.*token=(.*)&thumbnail_url=.*/;
		my $t = $1;

#TOKENを出力
print"$tn";
#Downlad可能なURLを出力
print'http://youtube.com/get_video?video_id='."$id".'&t='."$tn";

Youtube ダウンローダー(CGI) 作成中・・・・・ 

ストリーミングに関して以前から興味を示しておりまして^^

ダウンロードサイトなんてありますがあれどうなってるんだろ?
一度動画を鯖に落としてユーザーに渡すってのは処理に時間取られるし・・・・
意味ワカンネ>△<;なんて考えたりw

今回詳しく(と言っても凄く簡単に)ダウンロードサイトに関して検証していきます。

まず今回対象にした動画(欲しいわけでもなく別に意味はないです)

この動画のURLは以下のようになっております。
http://www.youtube.com/watch?v=STrnME1GPcM&feature=related
このURLを解析すると
http://www.youtube.com/watch?v=[動画のID]&feature=related
このようになってます。
※この動画のIDごとに動画は違います。

では情報を引いて見ましょう。以下のようにリクエストを送ってみます。
http://www.youtube.com/get_video_info?&video_id=STrnME1GPcM
このような感じ^^
http://www.youtube.com/get_video_info?&video_id=[動画のID]
するとget_video_infoってファイルがダウンロードできます。

開いてみると・・・・・
[意外に長かったので載せませんw]
まぁ、気分悪くなってもがんばりましょう^^

この中から&token=~&の間を探して読み取ります。
F0%2F0&token=vjVQa1PpcFMoXJpKyBVe9m9fn5_BdJan5dlKtTvPvPA%3D&thumbnail_url=http%
の中なので『vjVQa1PpcFMoXJpKyBVe9m9fn5_BdJan5dlKtTvPvPA%3D』これですね^^
これを[動画のTOKEN]とします。URL上では&t=から始まります。
(公開されてるプログラムの&t=が何なのかを調べるのに凄く時間が掛かりました^^;)

これを利用し以下のURLを作成します。
http://www.youtube.com/get_video?video_id=STrnME1GPcM&t=vjVQa1PpcFM-dhGnEO-Xuu8sh5y9EhVH6zjFPb328Vg
まぁ、こんな感じになります。
http://www.youtube.com/get_video_info?&video_id=[動画のID]&t=[動画のTOKEN]

上のURLへアクセスするとvideoplaybackなんてのがダウンロードされるのでvideoplayback.flvと変更すると動画が見れます^^

これらをPerlで表現すればダウンローダが作れるんですね~^^
動画ではなく直接作成したURLを表示すれば鯖にも負担をかけないわけか~(納得w)
ソフトではなく自分の手作業でダウンロードできたという事が非常に興味深い!!

WordPress アップグレードできない 解決方法

GD Star RatingやWP自体を自動アップグレードできずに困ってたところ解決方法を発見したのでしょうかいします。

WordPressをインストールしたディレクトリにあるwp-settings.phpを開き13行目付近の’WP_MEMORY_LIMIT’, ’32M’を128Mに変更します。

すると今まで上手くいかなかった自動アップグレードができるようになります。