Вверх ↑
Этот топик читают: Гость
Ответов: 338
Рейтинг: 3
#1: 2008-07-03 01:08:44 ЛС | профиль | цитата
Делал как всегда для себя, решил может комуто пригодиться

<< Удаленно для экономии трафика >>

P.S. Поже оформлю красиво пост.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
1
Голосовали:Валерий
Ответов: 3851
Рейтинг: 159
#2: 2008-07-03 15:31:09 ЛС | профиль | цитата
Можно бы сделать очередь (сейчас что будет если скопировать ссылку во время закачки?), автопереименование при совпадении имён - когда разные файлы под одинаковыми именами, ну и докачка не помешала бы..
карма: 0
начавший
0
Ответов: 338
Рейтинг: 3
#3: 2008-07-03 20:13:11 ЛС | профиль | цитата
Андрей., можно и сделать, если кто то будет этим пользоватся ;-)

Вот только что сделал Правда непойму почему 2 раза добавляет :-
code_9383.txt

------------ Дoбавленo:


И еще там строку удаления с 1 на 0 нужно подправить. Прощитался.

------------ Дoбавленo:


Отладка полезная вещь Ишибка исправленна. Сразу хотел сделать что бы так было, но подумал что неправильно работать будет. А нужно было так сразу зделать!
И так занимаюсь добавлением функции переименования файла

------------ Дoбавленo:


И так то что получилось:

Удалил ради экономии трафика посетителям.

P.S. Я конечно не мастер в описаниях, но попытался сделать схему понятнее.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_9383.txt [6.8KB] [183]
Ответов: 3851
Рейтинг: 159
#4: 2008-07-03 20:34:36 ЛС | профиль | цитата
Dark_MX писал(а):
если кто то будет этим пользоватся ;-)
не знаю - пока не вижу чего-то особенного, чего нету в других качалках. Главное, это - опыт.

предлагаемое к сохранению имя файла, можно сначала проверить на наличие, и если есть - предложить другое..

осталось сделать журналирование (откуда, когда, что и куда скачивалось), множественность закачек в виде таблицы из динамических панелей (с прогрессами в ячейках), возможность закачки несколькими потоками, отладить, написать хелп, покрасить, и - можно предлагать .. куда-нибудь (в хорошие руки)
карма: 0
начавший
0
Ответов: 338
Рейтинг: 3
#5: 2008-07-03 21:00:46 ЛС | профиль | цитата
Мда... А все так безобидно начиналось :
code_9384.txt
------------ Дoбавленo:

И подскажи как сделать докачку? В Position нужно количество закачанных байт подсовывать?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_9384.txt [2.4KB] [165]
Ответов: 3851
Рейтинг: 159
#6: 2008-07-03 22:42:36 ЛС | профиль | цитата
Dark_MX писал(а):
подскажи как сделать докачку?
а крен её знает - я не пробовал, но думаю - по описанию точек логика не сложная.. Подозреваю, что ориентироваться нужно на позиции, выдаваемые по onStatus. То есть если событие произошло, то эти данные (в указанном объёме) получены..

получаешь размер, устанавливаешь позицию равной объёму уже скачанного и "вперёд танки"..
карма: 0
начавший
0
Ответов: 338
Рейтинг: 3
#7: 2008-07-14 20:04:13 ЛС | профиль | цитата
По онстатусу выдается количество байт. Ну в общем я с помощью компонента серч искал один файл получал его размер (в байтах был) ну и пытался продолжить закачку с того места конца байтов. Никакой закачки я не видел и вообще файл в 0байт переходил. В общем временно отказался.

И так представляю вашему вниманию Easy Downloader 1 beta 2.

<< Удаленно для экономии трафика >>

Easy Downloader Version 1 Beta 3
Изменения:
+ Научил работать со списком ссылок;
+ Научил работать в 2х потоковом режиме (можно и больше, но мне 2х хватает );
+ Автоматическое создание папки для закачки;
* Улучшил обработку имени файла;
* Исправил ошибку обработки URL;
- Убрал выбор папки для сохранения файла;
- Убрал несколько совсем ненужных функций;
- Убрал выскакивающее сообщение о завершении закачки;
& Еще несколько мелких изменений.


Add(MainForm,6385521,-206,437)
{
Left=20
Top=105
Width=309
Height=98
Caption=" File downloader :)"
BorderStyle=4
DragForm=0
SavePosName="EDconf.iniMainForm"
Position=1
Point(doHeight)
link(onCreate,1145321:doEvent1,[])
}
Add(HTTP_Get,7856448,193,276)
{
link(onStatus,182909:doWork2,[])
link(onDownload,14727736:doData,[])
link(onURLSize,14723509:doEvent1,[(297,296)(297,352)])
link(onStop,10996282:doWork2,[])
link(URL,11395049:Var2,[])
link(FileName,6249582:Var1,[(206,264)])
}
Add(ProgressBar,5710575,606,276)
{
Left=5
Top=48
Width=270
Height=10
Max=1215752191
Point(doMax)
}
Add(StyleXP,7546511,-269,360)
{
}
Add(Edit,13613416,193,157)
{
Left=5
Top=5
Width=275
Height=17
Font=[MS Sans Serif,8,0,0,204]
Text=""
Point(doEnabled)
link(onChange,11944767:doReplace,[(237,163)(237,135)(84,135)(84,100)])
link(onEnter,10977395:doWork2,[(237,170)(237,198)(110,198)(110,492)])
}
Add(Hub,10079096,473,276)
{
OutCount=3
link(onEvent1,5710575:doPosition,[])
link(onEvent3,11678132:doOperation,[(573,296)(573,513)])
}
Add(Hub,14723509,473,346)
{
link(onEvent1,5710575:doMax,[(594,352)(594,289)])
link(onEvent2,11431048:doValue,[])
}
Add(Edit,3549425,361,164)
{
Left=5
Top=25
Width=295
Height=17
Text="C:Downloads"
Point(doEnabled)
}
Add(MultiElementEx,8320589,-87,150)
{
link(Op1,4316786:Var2,[(-81,114)(54,114)(54,342)(199,342)])
link(onEvent1,8852400:doData,[(-47,156)(-47,143)(-303,143)(-303,429)])
link(onEvent11,9639244:doWork2,[])
link(onEvent,2946541:doAdd,[(-46,170)(-46,207)(-99,207)(-99,268)])
link(Op11,5806078:Var1,[(-74,138)(72,138)(72,436)])
}
BEGIN_SDK
Add(EditMultiEx,606858,21,21)
{
WorkCount=#6:doText|
EventCount=#8:onEvent1|9:onEvent11|7:onEvent|
VarCount=#4:Var2|
DataCount=#3:Op1|4:Op11|
Width=559
Height=403
link(doText,9744097:doText,[(35,27)(35,55)])
link(Var2,11561392:Var2,[(27,405)(380,405)])
}
Add(StrPart,7759380,227,84)
{
Char="/"
link(onPart,2720705:doCompare,[(264,97)(264,246)(59,246)(59,293)])
}
Add(Memory,7694046,178,84)
{
link(onData,7759380:doSplit,[])
}
Add(DoData,2268526,395,287)
{
link(onEventData,12795110:doEvent1,[])
link(Data,11561392:Var3,[(401,268)])
}
Add(If_else,2720705,66,287)
{
Op2=String(http:)
link(onTrue,9568048:doWork2,[])
link(onFalse,14799146:doCompare,[(124,300)(124,307)])
}
Add(ArrayEnum,12168566,119,84)
{
link(onItem,7694046:doValue,[])
link(Array,9744097:Array,[(125,78)(69,78)])
}
Add(HubEx,9568048,206,280)
{
link(onEvent,13562162:doCompare,[])
}
Add(If_else,14799146,150,301)
{
Op2=String(http:)
link(onTrue,9568048:doWork3,[(210,307)])
}
Add(If_else,13562162,220,287)
{
Op2=Integer(0)
link(onTrue,3358018:doWork2,[])
link(onFalse,7902066:doCompare,[])
link(Op1,606858:Op1,[(226,236)(27,236)])
}
Add(StrList,9744097,49,28)
{
link(onChange,12168566:doEnum,[(100,34)(100,90)])
}
Add(GetDataEx,11561392,367,259)
{
Angle=3
link(Data,7694046:Value,[(331,268)(331,137)(184,137)])
}
Add(Hub,11759545,311,301)
{
link(onEvent1,606858:onEvent1,[(362,307)(362,27)])
link(onEvent2,3326239:doWork1,[(539,314)(539,223)])
}
Add(HubEx,3358018,301,280)
{
link(onEvent,2268526:doData,[])
}
Add(Hub,12795110,437,287)
{
link(onEvent1,606858:onEvent11,[(497,293)(497,34)])
link(onEvent2,3326239:doWork3,[(522,300)])
}
Add(If_else,7902066,262,294)
{
Op2=Integer(0)
link(onTrue,3358018:doWork3,[(305,300)])
link(onFalse,11759545:doEvent1,[])
link(Op1,606858:Op11,[(268,228)(34,228)])
}
Add(HubEx,3326239,518,210)
{
Angle=3
link(onEvent,606858:onEvent,[(522,41)])
}
END_SDK
Add(Memory,11431048,606,353)
{
Default=Integer(1)
}
Add(Hub,4616319,146,283)
{
link(onEvent1,7856448:GetURLSize,[(186,289)(186,296)])
link(onEvent2,7856448:doDownload,[(186,296)(186,282)])
}
Add(Button,5122615,60,521)
{
Left=280
Top=48
Width=20
Height=22
Caption=">"
link(onClick,10977395:doWork3,[(124,527)])
}
Add(Hub,11230712,473,444)
{
link(onEvent1,1803993:doMax,[(531,450)(531,401)])
}
Add(DoData,14962897,60,360)
{
link(onEventData,9639244:doWork3,[(99,366)])
link(Data,2946541:String,[(66,325)(-60,325)])
}
Add(StrCat,777010,256,80)
{
Str1="C:Downloads"
link(onStrCat,3549425:doText,[(328,86)(328,170)])
}
Add(StrPart,169726,158,80)
{
Char="/"
link(onSplit,1178965:doEvent1,[])
}
Add(Hub,1178965,200,80)
{
link(onEvent1,777010:doStrCat,[])
link(onEvent2,13429438:doWork1,[(244,93)(244,121)])
}
Add(FormatStr,13704628,718,605)
{
Mask="Download 1: %1% | Download 2:%2%"
link(onFString,6810343:In,[])
link(Str1,10839190:Result,[(724,474)(680,474)(680,551)(647,551)])
link(Str2,11558170:Result,[(731,484)(694,484)(694,649)(640,649)])
}
Add(ClipboardHook,388808,-136,150)
{
NextHook=1
link(onChange,8320589:doText,[])
}
Add(CheckBox,2205023,620,66)
{
Left=285
Top=4
Width=15
Hint="Если галка стоит то автоматически после чтения с буфера ссылки начнется закачка."
Checked=0
Caption=""
link(onCheck,7838:doWrite,[(663,72)(663,110)(549,110)(549,79)])
}
Add(If_else,7771750,620,143)
{
Op2=Integer(1)
link(onTrue,10977395:doWork1,[(666,149)(666,492)])
link(Op1,4107204:Var2,[])
}
Add(HubEx,10977395,120,479)
{
Angle=3
link(onEvent,4731100:doCompare,[(124,387)])
}
Add(Hub,8767927,116,157)
{
link(onEvent1,13613416:doText,[])
link(onEvent2,7771750:doCompare,[(158,170)(158,149)])
}
Add(GetDataEx,4107204,613,115)
{
link(Data,2205023:Checked,[])
}
Add(Math,11678132,599,507)
{
OpType=3
link(onResult,10839190:doOperation,[])
link(Op2,11431048:Value,[])
}
Add(Math,10839190,641,507)
{
OpType=2
Op2=100
ResultType=0
link(onResult,13262540:doWork1,[(684,513)])
}
Add(HubEx,9639244,95,150)
{
link(onEvent,8767927:doEvent1,[])
}
Add(Memory,10255522,599,549)
{
Default=Integer(1)
}
Add(ListBox,2946541,-87,262)
{
Left=5
Top=75
Width=295
Height=90
FileName="LoadList.txt"
Point(doSelect)
Point(String)
link(onChange,2946541:doSave,[(-47,268)(-47,303)])
link(onClick,10520695:doValue,[])
link(Str,8320589:Var2,[])
}
Add(Math,11558170,634,605)
{
OpType=2
Op2=100
ResultType=0
link(onResult,13262540:doWork2,[(673,611)(673,608)])
}
Add(Hub,7234864,347,283)
{
link(onEvent1,182909:doWork3,[(456,289)])
link(onEvent2,2922973:In,[])
}
Add(LineBreak,6667023,-206,276)
{
Caption="Del"
link(Out,14812485:doWork2,[])
Primary=[2922973,630,14]
}
Add(HubEx,182909,452,269)
{
link(onEvent,10079096:doEvent1,[])
}
Add(If_else,4271524,-80,346)
{
Op2=Integer(0)
link(onTrue,9356083:doData,[(-38,352)(-38,510)(-306,510)(-306,471)])
link(onFalse,12189528:doData,[])
link(Op1,2946541:Count,[])
}
Add(LineBreak,13104893,-171,346)
{
Caption="Check"
link(Out,14393727:doWork2,[])
Primary=[9292599,427,-49]
}
Add(DoData,9356083,-297,465)
{
Data=Integer(98)
link(onEventData,7681096:doWork2,[])
}
Add(Math,15951765,592,605)
{
OpType=3
link(onResult,11558170:doOperation,[])
link(Op2,10255522:Value,[])
}
Add(DoData,8852400,-297,423)
{
Data=Integer(192)
link(onEventData,7681096:doWork1,[(-258,429)])
}
Add(HubEx,7681096,-262,458)
{
link(onEvent,6385521:doHeight,[])
}
Add(HubEx,13429438,144,108)
{
Angle=3
link(onEvent,169726:doSplit,[(148,86)])
}
Add(Hub,14396123,11,353)
{
link(onEvent1,2946541:doSelect,[(47,359)(47,338)(-93,338)(-93,310)])
link(onEvent2,14962897:doData,[])
}
Add(DoData,12189528,-31,353)
{
Data=Integer(0)
link(onEventData,14396123:doEvent1,[])
}
Add(Hub,1145321,-160,451)
{
OutCount=4
link(onEvent1,8611398:In,[])
link(onEvent2,2946541:doLoad,[(-113,464)(-113,296)])
link(onEvent3,14393727:doWork3,[(-100,471)])
link(onEvent4,9851879:doData,[])
}
Add(HubEx,14393727,-104,339)
{
link(onEvent,4271524:doCompare,[])
}
Add(DoData,1143514,1,304)
{
link(onEventData,14812485:doWork1,[(43,310)(43,251)(-149,251)])
link(Data,10520695:Value,[(7,299)(-35,299)])
}
Add(HubEx,14812485,-153,269)
{
link(onEvent,2946541:doDelete,[])
}
Add(DoData,14727736,305,283)
{
Data=Integer(0)
link(onEventData,7234864:doEvent1,[])
}
Add(LineBreak,7855359,-206,297)
{
Caption="Del"
link(Out,14812485:doWork3,[(-149,303)])
Primary=[4498366,595,105]
}
Add(Ini,7838,561,66)
{
FileName="EDconf.ini"
Section="Options"
Key="Automatic"
link(onResult,2205023:doCheck,[])
link(Value,4107204:Var1,[(588,54)(604,54)(604,124)])
}
Add(LineBreak,6492351,487,66)
{
Caption="ReadKey"
link(Out,7838:doRead,[])
Primary=[8611398,-574,385]
}
Add(Replace,11944767,92,94)
{
SubStr="%20"
DestStr=" "
link(onReplace,13429438:doWork2,[(130,100)(130,121)])
}
Add(Memory,10520695,-41,269)
{
link(onData,6564011:doPopupHere,[])
}
Add(PopupMenu,6564011,1,262)
{
Menu=#17: Нечего не делать|1:-|16: Удалить ссылку|
link(onClick,1551234:doEvent,[])
}
Add(IndexToChanel,1551234,50,262)
{
Count=3
link(onEvent2,1341864:doWork1,[(94,275)(94,283)(61,283)])
link(onEvent3,1341864:doWork2,[(94,282)(94,303)])
}
Add(HubEx,1341864,57,290)
{
Angle=2
link(onEvent,1143514:doData,[(-39,303)(-39,310)])
}
Add(If_else,4731100,148,381)
{
Op2=Integer(0)
link(onTrue,4616319:doEvent1,[(192,387)(192,338)(134,338)(134,289)])
link(onFalse,10724080:doCompare,[(192,394)(192,432)(136,432)(136,464)])
link(Op1,4316786:Var1,[(154,326)])
}
Add(GetDataEx,4316786,186,317)
{
link(Data,7856448:Busy,[])
}
Add(Hub,7270742,473,388)
{
InCount=2
OutCount=3
link(onEvent1,1803993:doPosition,[])
link(onEvent2,10255522:doValue,[(522,401)(522,555)])
link(onEvent3,15951765:doOperation,[(511,408)(511,611)])
}
Add(Hub,12380412,340,395)
{
link(onEvent2,4498366:In,[])
}
Add(HTTP_Get,3187153,242,388)
{
link(onStatus,7270742:doEvent1,[])
link(onDownload,3823370:doData,[])
link(onURLSize,11230712:doEvent1,[(293,408)(293,450)])
link(onStop,10996282:doWork3,[(286,415)(286,328)(236,328)])
link(URL,11395049:Var3,[(248,229)])
link(FileName,6249582:Var2,[])
}
Add(Hub,10321712,202,388)
{
link(onEvent1,3187153:doDownload,[])
link(onEvent2,3187153:doStop,[])
}
Add(If_else,10724080,148,458)
{
Op2=Integer(0)
link(onTrue,10321712:doEvent1,[(197,464)(197,394)])
link(Op1,5806078:Var2,[(154,447)(224,447)])
}
Add(ProgressBar,1803993,536,388)
{
Left=5
Top=58
Width=270
Height=10
Max=1215752191
Point(doMax)
}
Add(GetDataEx,11395049,186,220)
{
link(Data,13613416:Text,[])
}
Add(GetDataEx,6249582,242,255)
{
Angle=1
link(Data,3549425:Text,[(367,264)])
}
Add(DoData,3823370,298,395)
{
Data=Integer(0)
link(onEventData,7270742:doEvent2,[])
}
Add(HubEx,10996282,232,290)
{
link(onEvent,9292599:In,[])
}
Add(GetDataEx,5806078,211,427)
{
Angle=1
link(Data,3187153:Busy,[(248,436)])
}
Add(LineBreak,4468151,-251,437)
{
link(Out,6385521:doCaption,[])
Primary=[6810343,1038,168]
}
Add(Dir,6376649,-79,472)
{
}
Add(DoData,9851879,-122,472)
{
Data=String(C:Downloads)
link(onEventData,6376649:doDir,[])
}
Add(HubEx,13262540,680,595)
{
link(onEvent,13704628:doString,[(703,608)(703,611)])
}
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 3851
Рейтинг: 159
#8: 2008-07-15 17:00:43 ЛС | профиль | цитата
запускается (без стиля ХР), качает, пробовал скачать файл двамя постами выше - предложил сохранить со знаком "?" в имени файла..
почему 2 закачки - динамический мульт (возможно даже OnlyOnce) и нет ограничений..
карма: 0
начавший
0
Ответов: 338
Рейтинг: 3
#9: 2008-07-15 22:57:44 ЛС | профиль | цитата
Андрей., не пойму, может потому что устал, а может и потому что глуп. Можеш часть схемы показать?
Там еще ошибка обработки списка, но вскоре поправлю, или сделаю другой алгоритм.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 3851
Рейтинг: 159
#10: 2008-07-15 23:17:59 ЛС | профиль | цитата
Не-е, схему долго, ибо детально надо. Смысел примерно такой: читаешь справку на MultiElementEx (по F1), запёхиваешь в ChildPanelEx (он тоже динамический) узел закачки (с гетом во главе), затачиваешь под свою задачу сделанную недавно "нетаблицу" (http://hiasm.com/forum.html?q=3&p=85485#p85485) - один столбец - урл, второй - прогрессбар (прямо в масштабируемой панели), ну и тд..
карма: 0
начавший
0
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)