[Работа] Написание не сложного скрипта.

Статус
В этой теме нельзя размещать новые ответы.

IamWolf

Постоялец
Регистрация
24 Фев 2008
Сообщения
87
Реакции
138
НУжен не сложный скрипт.
Задача:

Лазить по папке, проверять файлы на "одубликаты" по размеру (в плоть до байт) по разрешению (будут только картинки, и желательно по размеру (высота ширина в пикселях)
Будет в 2-3 папках, планировал в крон записать что бы выполнялся автоматом.

Кто что предложит? Если можите за $ то сразу цена, вроде все предельно понятно.

очень нужно....база картинок обновляется как мной так и другими....и очень тяжело контролировать и помнить....


Ответы в теме, ЛС, АСЯ (в инфе)
 
Можете подробнее описать функции скрипта. Скрипт будет искать дубликаты файлов ещё с помощью имени файлов, и какую функцию должен использовать скрипт, если находит 2 одинаковых файла?
 
Наприсали за 10 мин на др форуме...Тему клоузд, извените если что не так.


PHP:
<?

$dirs[]='./1';
$dirs[]='./2';    //сюда заносим папки которые обходим
        //если надо рекурсивно обойти одну папку - сделаю )
$pics=Array();
$names=Array();
$c=0;

$logfile="./log.txt";    //лог
$write_log=true; //true - пишем лог, false - не пишем лог
$kill_dup=true; //true - удаляем дубликаты, false - пускай живут

for($i=0;$i<sizeof($dirs);$i++)
{
    $d = dir($dirs[$i]);
    while (false !== ($entry = $d->read()))
    {
        if($entry!='.'&&$entry!='..')
        {
            //$pics[$c]['name']=$dirs[$i].'/'.$entry;
            $pics[$c]=filesize($dirs[$i].'/'.$entry);
            $pic_info=@getimagesize($dirs[$i].'/'.$entry);
            $pics[$c].='|'.$pic_info[0];
            $pics[$c].='|'.$pic_info[1];
            
            $names[$c]=$dirs[$i].'/'.$entry;
            $c++;
        }
    }
    $d->close();
}

$t=array_unique($pics);

//print "Уникальные картинки:<br>";

foreach($t as $key=>$value)
{
    //print $names[$key]."<br>\r\n"; //выводим список уникальных картинок
}
$dif=array_diff_key($pics,$t);

//print "Дубликаты:<br>";

$f=fopen($logfile,'a');

foreach($dif as $key=>$value)
{
    //print $names[$key]."<br>\r\n"; //выводим список повторяющихся картинок
    if($write_log)fwrite($f,$names[$key]."\r\n");
    if($kill_dup)unlink($names[$key]);
}

fclose($f);

?>

Или

PHP:
<?
function f_dir ($d, $log, $param)
{
    $log=fopen($log,$param);
    $v=0;$c=0;
    $dir = opendir($d); 
    while(($f = readdir($dir))){ 
        if ( is_file ($d."/".$f)){
            $c++;$v=0;
            $im=getimagesize($d."/".$f);
            if($im=='')continue;
            $size=filesize($d."/".$f);
            $dirr = opendir($d);
            while(($ff = readdir($dirr))){
                if ( (is_file ($d."/".$ff)) )
                {
                    $v=$v+1;
                    if( $v > $c
                    and $size==filesize($d."/".$ff)
                    and $im==getimagesize($d."/".$ff) ){
                        fwrite($log,"$f => $ff\r\n");
                    }
                }
            }
            closedir ($dirr);
        }
    }
    closedir ($dir);
    return true;
}

f_dir ("./t","./log.txt","w");

  // 1 параметр - каталог в котором следут искать дубликаты
  // 2 параметр- фаил куда будут записаны рез-ты
  // 3 параметр- "w" -  старые рез-ты будут перезаписаны
  //                "a" - старые рез-ты будут сохранены, а новые будут записаны ниже
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху