2012年4月4日 星期三

用日期排列超級影音動物機下載的影片並砍掉垃圾檔

你是不是像我在太陽下低頭下載之後發現一堆垃圾檔案,也像我一樣覺得BT軟體不是按照下載完成的時間排放在資料夾中,覺得不是很方便。

我與一般使用者不一樣的地方就是,我會寫code解決這鳥事,不過就是把檔案撈出來砍掉嘛,順便重做連結讓找的時候方便一點而已,所以我寫出底下的code,這主要是運作在Linux伺服器上,我家的超級影音動物機(改天專題介紹一下這強大的機器),利用crontab排程更新資料就變得十分完美,只要丟檔案到AutoSeed資料夾下,等著看最新下載的就好,當然這個程式改一改就可以自動砍掉老舊的檔案,自動保持系統容量在一定的範圍之內。



#!/usr/bin/perl -w

use File::Basename;

$fileLocate="/media/mediaDisk";
@lines=`find $fileLocate/done`;
my $var=`rm -fr $fileLocate/dayList/*`;

my $index=0;

foreach $line(@lines){
	chomp($line);
	if(($line =~ /\.url$/i)||
	   ($line =~ /\.chm$/i)||
	   ($line =~ /\.mht$/i)||
	   ($line =~ /\.txt$/i)||
	   ($line =~ /___padding_file/)
	){
		unlink("$line");
	}
	if(($line =~ /\.mkv$/i)||
	   ($line =~ /\.avi$/i)||
	   ($line =~ /\.divx$/i)||
	   ($line =~ /\.mov$/i)||
	   ($line =~ /\.mp4$/i)||
	   ($line =~ /\.m4v$/i)||
	   ($line =~ /\.rmvb$/i)||
	   ($line =~ /\.rm$/i)||
	   ($line =~ /\.wmv$/i)||
	   ($line =~ /\.asf$/i)||
	   ($line =~ /\.ass$/i)||
	   ($line =~ /\.srt$/i)||
	   ($line =~ /\.ssa$/i)||
	   ($line =~ /\.sub$/i)||
	   ($line =~ /\.idx$/i)||
	   ($line =~ /\.vkt$/i)
	){
		if(-f $line){
			my @statArray=stat("$line");
			my ($sec,$min,$hour,$mday,$mon,$year)=localtime($statArray[9]);
			$year+=1900;
			$mon++;
			my $locate="$fileLocate/dayList/$year-$mon-$mday";
			#printf("%s\n",$line);
			if(!(-e $locate)){
				mkdir("$locate");
				print "[[$locate]]\n";
			}
			my($fname,$dir,$ext)=fileparse($line);
			print "$fname\n\t$dir\n\t$ext\n";
			print "ln -s \'$line\' \'$locate/$fname\'";
			if(-e "$locate/$fname"){
				$var=`ln -s \'$line\' \'$locate/$index_$fname\'`;
				$index++;
			}
			$var=`ln -s \'$line\' \'$locate/$fname\'`;
		}
	}else{
		if(-z $line){
			print ">>$line\n";
		}
	}
}

沒有留言:

張貼留言