софт | Elsper

Возникла тут у меня задача обработать 103943 файла расположенных в 2618 папках.

И хотя у меня есть процедура для того чтобы получить список всех файлов задача требует чтобы все файлы были в одной папке.

Ну раз требует, то сделаем. За основу взял ту же процедуру, что выложил по ссылке выше.
Подумав немного получил на выходе:

Читать полностью »


Автор: Elsper.ru


Решил я тут поковыряться в своих прогах, а они отказываются компилиться из за отсутсвия модулей GDIPAPI, GDIPOBJ и GDIPUTIL. Дело в том, что в последних версиях я юзал библиотеку GDI+, которая не установлена ни на одном из обоих ноутов.
Ну установил конечно, а вместе с тем решил, что можно ею поделиться с народом.

Все же представляемая по умолчанию работа только с bmp (в делфи 7) явно устарела.

С самого начала выложу библиотеку. Скачивайте

А теперь пара примеров работы с ней

Читать полностью »


Автор: Elsper.ru


Представляю вашему вниманию один очень простой код, который тем не менее открывает не хилые перспективы в использовании картинок в дорвеестроении.

<?
{$fp = fopen($_SERVER['DOCUMENT_ROOT'].’/img.php’, ‘w+’);
fwrite($fp, ‘<? header(«Content-type: image/gif»);  readfile ($_SERVER["DOCUMENT_ROOT"].»/fotka/1.jpeg»); ?>’);
fclose($fp);}

echo  (‘<img src=img.php>’);

?>

Чем этот код так замечателен? Читать полностью »


Автор: Elsper.ru


Я уже писал ранее как очень легко можно скачать баш.

Зачем тогда нужно еще что-то, если тот код работает?

Дело в том что иногда страницы не загружаются, сервак там затупит или еще что-то печальное. И парсер виснет, ну или в лучшем случае переходит на следующий адрес. Вот и я с такой проблемой столкнулся. Можно было конечно удовлетвориться и тем что скачал, но…

Я написал полноценную процедуру, которую можно использовать почти «как есть». Лишь подкорректировав урл и номера страниц. Минус программы в том, что она парсит урлы по шаблону

адрес_сайта_всякие_параметры=1
адрес_сайта_всякие_параметры=2

К счастью основная часть динамических сайтов имеет именно такую структуру, и даже вордпресс со включенным ЧПУ можно парсить по «сайт.рф/?p=номер» (Но там есть свои сложности)

Короче код:

procedure pars;
var i:integer;
idhttppars:Tidhttp;
spisok,textik:TStringList;
begin

// инициализация

textik:= TStringList.Create;
spisok:= TStringList.Create;
idhttp
pars:=tidhttp.Create(nil);
idhttp
pars.HandleRedirects:=True;
idhttp
pars.ReadTimeout := 3000;

if FileExists(‘papka/’)= false then // Задаем название папки куда будем сохранять скачанные страницы
mkdir(‘papka’);

for i:=1 to 1000 do // здесь задаем циферки
begin
spisok.Append(inttostr(i));
end;

// конец инициализайции.

i:=-1;
while i <  spisok.Count-1  do
begin
i:=i+1;
//form1.button1.Caption:= inttostr(i)+’/'+inttostr(spisok.Count-1); // Это индикатор выполнения. Если хотите подставьте вместо батон1, что нибудь другое и раскомментируйте строку.
application.ProcessMessages;
if FileExists(‘papka/’+spisok[i]) then
begin
spisok.Delete(i);
i:=i-1;
end
else
begin
try

textik.Text:=idhttppars.Get(‘урл=’+spisok[i]); // Здесь конструируем адрес страницы
textik.SaveToFile(‘papka/’+spisok[i]);
except   end;
end;
end;
idhttppars.Free ;
textik.Free;
i:=spisok.Count-1;
//form1.Memo1.Lines:=spisok;  // это один из инструментов отладки и наблюдения за работой процедуры можно удалить, можно наблюдать.
spisok.Free;

if i < 1 then application.Terminate else pars; // в конце парсинга процедура вызывает закрытие проги, если вы этого не хотите, то удалите  вызов application.Terminate

end;

Не забудьте добавить в uses модуль IdHTTP, если его там еще нет.

Конечно можно упростить например вынести инициализацию и освобождение в отдельные части, но тогда это удобнее всего делать в классе формы. То есть переменные описать там где описываются общие переменные формы, инициализацию и первичное заполнение массива ( я их даже обозначил для вашего удобства) можно в tform1.FormCreate засунуть. А саму процедуру вызывать например с кнопки и в ней написать:

pars;
idhttppars.Free ;
textik.Free;
spisok.Free;

Соответственно убрав эти три строки из тела процедуры. Но мне захотелость сделать именно в виде автономной процедуры :)


Автор: Elsper.ru


Пишу я тут очередной адалтовый сайт. На этот раз за дело взялсо очень серьезно. Написал движок на пыхе, получился самый большой мой движок. Аж 10кб весит. :) . И уже 4 проги на делфях, две простенькие из которых я опубликую. Я их правда совместил в одну, но думаю не страшно.

По-быстренькому привел ее в более менее презентабельный вид,спрятал все лишнее, приписал капшены на кнопки, и вообще описал как мог. :)

resizer

Первая часть. Ресайз фоток. Иначе говоря изменение размера фотографий. Чтобы подогнать фотки в дизайн, и при этом не переживать их вручную, и не заставлять браузер делать это я и сел за делфи.

Кнопка добавки в список парсит не только файлы в папке, но и файлы в подпапках. В общем это слегка измененный скрипт из этой записи. Далее, после нажатия на кнопку «обработка списка» запускается цикл по очереди загружающий, пережимающий, и сохраняющий фотку. Поэтому прежде чем обрабатывать фотки делайте копию. Если фотка уже заданной ширины, то тянуть прога ее не будет. Обрабатывает только жипеги.

При большом объеме может показаться что она зависла, но это врядли, хотя сначала у меня была утечка памяти =))) Но теперь все нормально даже если задать обработку нескольких гигов. Это хоть и займет несколько десятков минут, но и памяти не более 10мб.

Вторая часть. Это тот же скрипт получения списка всех файлов в папке и подпапках, что и в первой части, но модифицирован он уже гораздо сильнее.  Это скрипт переименовывает содержимое папки, так чтобы объекты шли по номерам от 1 до конца. Переименовывает файлы в подпапках и сами подпапки. Если в папке будет подпапка и файл, то они будут переименованны по порядку, так что будьте внимательны. Файлы должны быть только jpg, потому что всеравно такое расширение подставляется при переименовке.

Для примера. Есть у нас такая структура:

papka/
papka/s1/
papka/s1/foto1.jpg
papka/s1/foto2.jpg
papka/s1/all.PNG
papka/s2/
papka/s2/1.jpg
papka/s2/foto3.jpg
papka/s2/foto4.jpg
papka/s2/foto5.jpg
papka/старое/
papka/старое/delet.jpg
papka/123.jpg

задаем главной папку «papka/» и на выходе получаем

papka/
papka/1/
papka/1/1.jpg
papka/1/2.jpg
papka/1/3.jpg
papka/2/
papka/2/1.jpg
papka/2/2.jpg
papka/2/3.jpg
papka/2/4.jpg
papka/3/
papka/3/1.jpg
papka/4.jpg

(Цветом выделил моменты, которые стоит учитывать заранее.)

Конечно понимаю что проги просты, а предназначение второй вообще не очевидно, но все же.

Скачать


Автор: Elsper.ru


Страница 1 / 41 2 3 4 »

Рейтинг блогов

Рейтинг блогов
Яндекс.Метрика