индексиране на папки

SandPrince

Registered
трябва ми скрипт за търсачка която може да търси файлове и изображения.
обаче този скрипт трябва да индексира папките и файловете на потребителите в data.bg.
аз намерих една тема:
http://web-tourist.net/forum/viewtopic.php?t=3217

ама тук е само отделна папка да индексира.
как ще стане да индексира на цяло всички папки.
абе искам да си направя такъв сайт:
:arrow: http://neznam.be/
 
бях написал един скрипт за индексиране на папки ако искаш го потърси в по старите теми
защо не им пратиш един мейл да ги питаш има вероятност да дадът системата :?
 
Ммм тоя сайт ми харесва http://neznam.be/.Ше зема си копна кода и аз да си направя такъв подобен :)
Е да де той ми тряя само кода за дизайна другото ше се помъча сам ;)
 
ами аз туко що взех js-to мисля взима индексира с js-to амм незнам как :(
пробвах пиша нещо и ми показва още една форма за търсене хах
 
Не то на мен ми трябва само дизайна щот некакси ме кефи как е направено и онова с loading също :)
 
Значи ето ви някой файлове
http://neznam.be/img/search.gif
http://neznam.be/img/logo.gif
http://neznam.be/js/search.js
http://neznam.be/js/framework.js
 
Първо създаваме една таблица в базата:

Код:
CREATE TABLE `files` (

  `file_id` bigint(20) unsigned NOT NULL auto_increment,

  `file_url` varchar(1000) NOT NULL,

  `file_type` varchar(30) default NULL,

  `file_size` bigint(20) default NULL,

  `real_id` bigint(20) default NULL,

  PRIMARY KEY  (`file_id`)

) ENGINE=MyISAM;

Следва кода :

Код:
#!/usr/bin/perl

use LWP;

use HTTP::Request;

use DBI;

my $urlbase = "http://www.data.bg/f.php?fid=";

my $maxid = 1000000;

my $ua = new LWP::UserAgent;

$ua->timeout(30);

$ua->max_redirect(1);

$ua->max_size(256);

$dbh = DBI->connect("dbi:mysql:search", "root", "********");

$sql = "SELECT IFNULL(MAX(real_id), 0)+1 AS file_id FROM files;";

$linkres = $dbh->prepare($sql);

$linkres->execute();

($file_id) = $linkres->fetchrow_array();

$linkres->finish();

for ($count=$file_id; $count<$maxid; $count++)

{

  $v_realurl = "";

  $v_type = "";

  $v_size = "";

  $url = $urlbase . $count;

  print "Trying $count... ";

  $request = new HTTP::Request('GET', $url);

  $response = $ua->request($request);

  print $response->code;

  if ($response->code eq 302)

  {

    $url = $response->header('Location');

    $v_realurl = quotemeta($url);

    $request = new HTTP::Request('GET', $url);

    $response = $ua->request($request);

    $v_type = $response->header('Content-Type');

    $v_type =~ s/^(.*?);(.*)/$1/;

    $v_size = $response->header('Content-Range');

    $v_size =~ s/^(.*?)/(.*)/$2/;

    print " - OK - size: $v_size, type: $v_typen";

    $sql = "INSERT INTO files (file_url, file_type, file_size, real_id) ";

    $sql = $sql . " VALUES ('$v_realurl', '$v_type', $v_size, $count)";

    $sth = $dbh->prepare($sql);

    $sth->execute();

  }

  else

  {

    print " - Not foundn";

  }

}

$dbh->disconnect;


В резултат на това започват да се джуркат файлове в базата, а output-а изглежда така:

Trying 21... 302 - OK - size: 1587, type: text/plain

Trying 22... 302 - OK - size: 7591, type: application/x-tar

Trying 23... 302 - OK - size: 7799034, type: application/x-cdlink

Trying 24... 206 - Not found

Trying 25... 302 - OK - size: 7045734, type: text/plain


302 е редирект-а за който споменах по-горе. Като го последваш идва и истинския URL на файла заедно с типа и размера му. Thread-ове няма, защото на Perl е наистина кофти да се пише и не ми се занимаваше. Така че при достатъчно търпение може да мине всичко в някакъв разумен интервал. За 20 минути минаха до 17000 и нещо.

Но все пак не съветвам никого да опитва това, освен ако не е изпечен професионалист и знае какво прави. В някакъв момент се получава следното:

Connection flood detected from your IP: 77.70.58.*.

Trying to flood the server?


а един професионалист може да се справи с това :)
 
ето и един вариант от мене
Код:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<?php
echo $xx =nl2br(@file_get_contents("http://data.bg/f.php?fid=3123"));
?>
идеята е следната правим един for от 1 до 3000 но на някой ид-та показва invalid file
такаче правим следното if(strlen($xx) > 2){
запис
}
да но проблема е как ще вземем името ?
 
доооообре мерси за кодовете и помоща.
сега ако ми обясните и как да ги сглобя в търсачка :?: :twisted:
ше ва разцелувам :twisted:
 
Здравейте,
Интересна тема :). Благодаря за комплиментите, радвам се, че хората вече ме крадат откъм код. Това е голямо признание за мен. :?: Вместо да давате идеи как да го крадете дайте предложения как да направя сайта по-добър и по-удобен за потребителите. Всяка препоръка ще ми е от полза.

Благодаря.
 
dido2k каза:
Здравейте,
Интересна тема :). Благодаря за комплиментите, радвам се, че хората вече ме крадат откъм код. Това е голямо признание за мен. :?: Вместо да давате идеи как да го крадете дайте предложения как да направя сайта по-добър и по-удобен за потребителите. Всяка препоръка ще ми е от полза.

Благодаря.

като за начало, може да направиш страницирането с цифри, че така само с << >> е много неудобно.
 
Здравей,
ей тук имаме проблем. Изискванията към търсачката са няколко:
- сортиране;
- страниране;
- обобщеност;
Ето го проблема: Ако трябва да се направи страниране ( paging ) трябва да се намерят общия брой съвпадения. При тестовете с 8 000 000 записа, тестовете показаха, че с най-лошия случай намирането на броя съвпадения отнема до 1 000 % повече време от самия резултат. Ако прибавим и сортиране работата става още по-дебела. В общия случай потребителя разсъждава така: "I want it all, i want it now..". Потребителя няма нерви, така че да не го караме да чака. Това е - компромис. Има и втора причина, според Вас колко ще ме траят момчетата от хостинга преди да ме изгонят :). Натоварването на SQL-a им е на МАКС :). Приемам забележката, и някои ден когато търсачката може да се замоиздържа ще отделим и специална машина за SQL. До тогава.. това ще е ограничение.
И като минехме на следващата тема ... как търсачката може да се замоиздържа, така че и потребителите да са доволни :) Адски много ме вълнува. Чакам мнения. Рекламите определено дразнят, а неможем да ги караме потребителите да плащат. Може би платени линкове ?! Какво друго, очаквам Ви.
Благодаря.
 
значи ги записваш в mysql
s pregmatch ли извеждаш директорийте ?
аз знам как да се сортират по тип и как да се извеждат страници (или поне за страниците има урок )...
колко хиляди линка си извадил
пак ако дирекно ги вадиш
то вероятноста за зареждане на страницата е 20000 часа на един потребител ....
 
защо не пуснеш една реклама така секи ще може да коментира мисля че не е тук мястото
по темата
ето написах са една добавка към стариа ми код но не съм сигурен дали ще работи
Код:
<form action="" method="GET">
<input type="text" name="url">
<input type="submit" value="cuk">
</form>
<?php
if($_GET['url'])
{
$url=$_GET['url'];
$url = str_replace("http://", "", $url);
$text= @file_get_contents("http://".$url);
$preg =
"/a[\s]+[^>]*?href[\s]?=[\s\"\']+(.*?)[\"\']+.*?>"
."([^<]+|.*?)?<\/a>/";
    preg_match_all(trim($preg),$text, $out, PREG_PATTERN_ORDER);
  $keys = $out[1];
    $values = $out[2];
$i=1;
foreach ($keys as $keyss)
{
$tipfail=end(explode(".", $keyss));
$tipfail=trim(strtolower($tipfail));
 if(($tipfail != "rar") && ($tipfail != "zip") && ($tipfail != "mp3") && ($tipfail != "iso") && ($tipfail != "jpg") && ($tipfail != "tr") && ($tipfail != "mov") && ($tipfail != "jpg") && ($tipfail != "wmv") && ($tipfail != "ace") && ($tipfail != "ico") && ($tipfail != "jpeg") && ($tipfail != "avi") && ($tipfail != "3gp") && ($tipfail != "mp4") && ($tipfail != "cue") && ($tipfail != "srt") && ($tipfail != "txt") && ($tipfail != "bin") && ($tipfail != "gif") && ($tipfail != "sub") && ($tipfail != "bmp") && ($tipfail != "mpg") && ($tipfail != "bat") && ($tipfail != "img") && ($tipfail != "wma") && ($tipfail != "ac3") && ($tipfail != "wav") && ($tipfail != "tar") && ($tipfail != "mpeg") && ($tipfail != "png") && ($tipfail != "com") && ($tipfail != "exe") && ($tipfail != "tiff") && ($tipfail != "pdf") && ($tipfail != "sql") && ($tipfail != "html") && ($tipfail != "JPG") && ($tipfail != "doc") && ($tipfail != "htm") && ($tipfail != "xls"))
 {
 }else{
 if(ereg($_GET['url'],"data.bg"){
unset($keyss[$i+1]);
}
$fdsfsd2.= urldecode($keyss)."\n";
$i++;
}
}
}
echo  "<center><textarea id=forma rows=\"10\" name=\"link\" cols=\"56\">$fdsfsd2</textarea>";
?>
ако някой го пробва ...
 
същност
така
Код:
<?php
if($_GET['url'])
{
$url=$_GET['url'];
$url = str_replace("http://", "", $url);
$text= @file_get_contents("http://".$url);
$preg =
"/a[\s]+[^>]*?href[\s]?=[\s\"\']+(.*?)[\"\']+.*?>"
."([^<]+|.*?)?<\/a>/";
    preg_match_all(trim($preg),$text, $out, PREG_PATTERN_ORDER);
  $keys = $out[1];
    $values = $out[2];
foreach ($keys as $k=>$keyss)
{
$tipfail=end(explode(".", $keyss));
$tipfail=trim(strtolower($tipfail));
 if(($tipfail != "rar") && ($tipfail != "zip") && ($tipfail != "mp3") && ($tipfail != "iso") && ($tipfail != "jpg") && ($tipfail != "tr") && ($tipfail != "mov") && ($tipfail != "jpg") && ($tipfail != "wmv") && ($tipfail != "ace") && ($tipfail != "ico") && ($tipfail != "jpeg") && ($tipfail != "avi") && ($tipfail != "3gp") && ($tipfail != "mp4") && ($tipfail != "cue") && ($tipfail != "srt") && ($tipfail != "txt") && ($tipfail != "bin") && ($tipfail != "gif") && ($tipfail != "sub") && ($tipfail != "bmp") && ($tipfail != "mpg") && ($tipfail != "bat") && ($tipfail != "img") && ($tipfail != "wma") && ($tipfail != "ac3") && ($tipfail != "wav") && ($tipfail != "tar") && ($tipfail != "mpeg") && ($tipfail != "png") && ($tipfail != "com") && ($tipfail != "exe") && ($tipfail != "tiff") && ($tipfail != "pdf") && ($tipfail != "sql") && ($tipfail != "html") && ($tipfail != "JPG") && ($tipfail != "doc") && ($tipfail != "htm") && ($tipfail != "xls"))
 {
 }else{
 if(ereg('data.bg',$_GET['url']) && $k & 1 )
	{
	}else{
$fdsfsd2.= urldecode($keyss)."\n";
}
}
}
}
echo  "<center><textarea id=forma rows=\"10\" name=\"link\" cols=\"56\">$fdsfsd2</textarea>";
за data.bg е ок а за другите нз
 

Back
Горе