Вверх ↑
Этот топик читают: Гость
Ответов: 9
Рейтинг: 0
#1: 2023-04-11 01:27:56 ЛС | профиль | цитата
Здравствуйте. У меня такая задача:
К примеру есть сайт для сокращения ссылок https://linksly.co
Там предоставляют API для быстрого создания сокращенной ссылки.
https://linksly.co/st?api=ebe9fdbf04176bcb0a7d727e9c8857f8da8b5deb&url=

Как это работает? Если после знака равно поставить свою ссылку
https://linksly.co/st?api=ebe9fdbf04176bcb0a7d727e9c8857f8da8b5deb&url=https://forum.hiasm.com
и все это открыть в браузере, произойдет сокращение ссылки.
В данном примере ссылка https://forum.hiasm.com сократиться на https://linksly.co/NDb0pBvw

Вопрос: как создать программу, чтобы она брала из txt файла список ссылок и сокращала их. А затем в отдельный файл сохраняла результат. Например в файл csv, чтобы в одной колонке были начальные ссылки, а в другой сокращенные. Также думаю, что надо будет сделать возможность указывать интервал в секундах между обработкой каждой ссылки, иначе сервер не даст возможности очень быстро сокращать ссылки. Так же важно, чтобы программа не пропускала ссылки, но последовательно сокращала все имеющиеся в списке ссылки, не перемешивая строки и последовательность. То есть, чтобы в файле с результатом сохранилась первичная последовательность ссылок.

Также в документации предоставлена еще такая информация, возможно это будет полезным:
Using the API in PHP
To use the API in your PHP application, you need to send a GET request via file_get_contents or cURL. Please check the below sample examples using file_get_contents

Using JSON Response
$long_url = urlencode('yourdestinationlink.com');
$api_token = 'ebe9fdbf04176bcb0a7d727e9c8857f8da8b5deb';
$api_url = "https://linksly.co/api?api={$api_token}&url={$long_url}&alias=CustomAlias";
$result = @json_decode(file_get_contents($api_url),TRUE);
if($result["status"] === 'error') {
 echo $result["message"];
} else {
 echo $result["shortenedUrl"];
}
Using Plain Text Response
$long_url = urlencode('yourdestinationlink.com');
$api_token = 'ebe9fdbf04176bcb0a7d727e9c8857f8da8b5deb';
$api_url = "https://linksly.co/api?api={$api_token}&url={$long_url}&alias=CustomAlias&format=text";
$result = @file_get_contents($api_url);
if( $result ){
 echo $result;
}

Возможно ли в принципе такое сделать?
Буду рад любой помощи!

Редактировалось 18 раз(а), последний 2023-04-11 02:23:45
карма: 0

0
Ответов: 783
Рейтинг: 168
#2: 2023-04-11 19:36:25 ЛС | профиль | цитата
georgmann писал(а):
Возможно ли в принципе такое сделать?

Конечно.

Add(MainForm,2953706,147,154)
{
Width=477
link(onCreate,13695360:doString,[])
}
Add(HTTP_Get,16243313,252,168)
{
link(onDownload,13978849:doConvert,[])
}
Add(StreamConvertor,13978849,308,175)
{
Mode=6
link(onResult,5984309:doWork,[])
}
Add(FormatStr,13695360,203,168)
{
DataCount=1
Mask="https://linksly.co/api?api=ebe9fdbf04176bcb0a7d727e9c8857f8da8b5deb&url=%1"
link(onFString,16243313:doDownload,[])
link(Str1,3347710:Text,[])
}
Add(VisualStrings,3347710,203,112)
{
Lines=#35:https://forum.hiasm.com/topic/68217|
Width=221
}
Add(Label,2260200,406,175)
{
Width=461
Align=5
Font=[MS Sans Serif,23,0,0,1]
Caption=""
ColorHover=16711680
Underline=0
link(onClick,10724698:doPutText,[])
}
Add(VBJScript,5984309,357,175)
{
WorkPoints=#6:doWork|
EventPoints=#7:onEvent|0:|
Language=1
Script=#27:function doWork(data,index)|9: { |37: eval('var result = '+data); |48: sys.onEvent(result.shortenedUrl); |5: } |3: |
UseName=0
link(onEvent,2260200:doText,[])
}
Add(VisualStrings,14478949,203,49)
{
Lines=#23:https://forum.hiasm.com|
Width=165
}
Add(Clipboard,10724698,497,175)
{
Point(PutText)
link(PutText,2260200:Caption,[(503,166)(489,166)(489,215)(412,215)])
}

карма: 15

0
Ответов: 9
Рейтинг: 0
#3: 2023-04-11 23:48:26 ЛС | профиль | цитата
Gunta писал(а):
Конечно.


Спасибо большое за формулу. Вы наверное здесь предоставили общий принцип работы. Для меня HiAsm - это вообще что-то новое. Чувствую, что мою задачу здесь реализовать можно, но пока не понимаю как.
Нашел вашу формулу для открытия ссылок в браузере:

Add(MainForm,3824534,406,98)
{
Width=880
Height=526
}
Add(Button,8467833,574,168)
{
Left=5
Top=10
Width=125
Caption="Открыть список"
link(onClick,4767590:doExecute,[])
}
Add(CheckBox,10547583,630,217)
{
Left=10
Top=70
Width=120
Caption="Случайный порядок"
}
Add(Edit,7065250,518,175)
{
Left=65
Top=40
Width=25
Text="5"
DataType=2
ClearAfterEnter=1
link(onEnter,5122062:doEvent1,[(563,188)(563,165)(452,165)(452,230)])
}
Add(Label,10823011,469,98)
{
Left=10
Top=45
Width=53
Height=17
Caption="Интервал"
}
Add(Label,5324941,518,98)
{
Left=95
Top=45
Width=25
Height=17
Caption="сек."
}
Add(Button,15230804,413,231)
{
Left=5
Top=100
Width=125
Caption="Начать выборку"
link(onClick,5122062:doEvent2,[])
}
Add(ListBox,9901049,756,140)
{
Left=20
Top=175
Width=130
Height=305
Strings=#5:ya.ru10:google.com|9:hiasm.com|
DataType=1
Point(doLoad)
Point(doSelect)
Point(onSelect)
Point(EndIdx)
link(onSelect,1507637:doNavigate,[])
}
Add(ODialog,4767590,630,168)
{
Filter="Текстовый документ|*.txt"
link(onExecute,13127934:doEvent1,[])
}
Add(Hub,13127934,679,168)
{
link(onEvent1,9901049:doLoad,[])
link(onEvent2,2134394:doData,[(704,181)(704,237)])
}
Add(DoData,2134394,777,231)
{
link(onEventData,542141:doMax,[])
link(Data,7449360:Var2,[])
}
Add(Button,11849292,413,273)
{
Left=5
Top=125
Width=125
Caption="Стоп"
link(onClick,15352547:doStop,[])
}
Add(WebBrowser,1507637,840,154)
{
Left=164
Width=700
Height=487
Align=3
URL=""
}
Add(Timer,15352547,574,266)
{
Interval=0
Enable=1
Point(doInterval)
link(onTimer,1620092:doEvent,[])
}
Add(Hub,5122062,462,224)
{
InCount=2
link(onEvent1,8356632:doOperation,[])
link(onEvent2,15352547:doTimer,[(501,237)(501,272)])
}
Add(CounterEx,542141,847,224)
{
Max=2
Default=-1
Point(doMax)
Point(doReset)
Point(onThroughMax)
link(onNext,9718124:doWork1,[(893,230)(893,279)])
link(onThroughMax,542141:doReset,[(886,237)(886,265)(837,265)(837,244)])
}
Add(IndexToChanel,1620092,630,266)
{
Point(Index)
link(onEvent1,542141:doNext,[(828,272)(828,230)])
link(onEvent2,12809008:doRandom,[])
link(Index,10547583:Checked,[])
}
Add(Math,8356632,511,224)
{
OpType=2
Op1=1000
ResultType=0
link(onResult,15352547:doInterval,[(550,230)(550,286)])
link(Op2,7065250:Text,[])
}
Add(Random,12809008,686,273)
{
Max=3
Point(Max)
link(onRandom,9718124:doWork2,[])
link(Max,7449360:Var1,[(692,215)])
}
Add(GetDataEx,7449360,777,210)
{
link(Data,9901049:EndIdx,[])
}
Add(HubEx,9718124,735,273)
{
Angle=3
link(onEvent,9901049:doSelect,[(739,181)])
}

В ней как раз есть функция открытия списка ссылок из файла. Наверное теперь все это нужно совместить, правильно? Или я ошибаюсь?

Редактировалось 7 раз(а), последний 2023-04-11 23:51:34
карма: 0

0
Ответов: 783
Рейтинг: 168
#4: 2023-04-12 04:25:44 ЛС | профиль | цитата
georgmann писал(а):
Для меня HiAsm - это вообще что-то новое. Чувствую, что мою задачу здесь реализовать можно, но пока не понимаю как.

Вышли пример txt файла со списком ссылок. И пример того что ты хочешь получить.
карма: 15

0
Ответов: 783
Рейтинг: 168
#5: 2023-04-12 14:19:50 ЛС | профиль | цитата
georgmann, Вот схема, проверяй.

Add(MainForm,7670060,70,28)
{
Width=477
}
Add(MST_ArrayRows,5429603,525,77)
{
MSTControl="asd"
}
Add(MTStrTbl,6542947,133,28)
{
Left=405
Top=210
Align=5
Name="asd"
Columns=#8:long_url|12:shortenedUrl|
}
Add(MST_Load,11685183,238,119)
{
ColNameHeader=1
MSTControl="asd"
}
Add(IndexToChanel,8532413,126,119)
{
Count=3
link(onEvent1,13303500:doExecute,[])
link(onEvent2,2686662:doData,[(179,132)(179,167)])
link(onEvent3,3379452:doExecute,[(172,139)(172,209)])
}
Add(ODialog,13303500,189,119)
{
link(onExecute,11685183:doLoad,[])
}
Add(SDialog,3379452,189,203)
{
link(onExecute,184413:doSave,[])
}
Add(MST_Save,184413,238,203)
{
SaveColumn=1
SaveColProp=1
MSTControl="asd"
link(onSave,9772385:doClear,[])
}
Add(MST_ColAction,5297033,987,168)
{
Action=9
Index=-2
MSTControl="asd"
}
Add(CounterEx,8899381,987,238)
{
Max=1000
Point(doReset)
link(onNext,3786934:doWork3,[(1026,244)(1026,230)(368,230)])
}
Add(If_else,5514474,420,161)
{
Type=4
link(onTrue,1025522:doValue,[])
link(Op1,5429603:EndIdx,[(426,152)(545,152)])
}
Add(DoData,2686662,189,161)
{
Data=Integer(0)
link(onEventData,3786934:doWork2,[])
}
Add(MT_MTArrayRW,7985455,525,161)
{
link(onRead,9040420:doSeparateMT,[])
link(Array,5429603:Strings,[])
}
Add(MenuEx,8319746,49,112)
{
Menu=#16:Загрузить Список|10:Обработать|9:Сохранить|
Bitmaps=[]
Point(doEnablIdx)
link(MenuItemIdx,2470131:doEvent1,[])
}
Add(Hub,2470131,91,112)
{
link(onEvent1,1901754:doWork1,[(116,118)(116,104)(39,104)])
link(onEvent2,8532413:doEvent,[])
}
Add(Hub,2549451,364,245)
{
OutCount=5
link(onEvent1,8899381:doReset,[])
link(onEvent3,14204392:doWork1,[])
link(onEvent4,14204392:doWork2,[])
link(onEvent5,14204392:doWork3,[])
}
Add(HubEx,1901754,35,112)
{
link(onEvent,8319746:doEnablIdx,[])
}
Add(ChanelToIndex,14204392,399,259)
{
Count=3
link(onIndex,1901754:doWork3,[(444,265)(444,303)(39,303)])
}
Add(MST_Clear,9772385,287,203)
{
MSTControl="asd"
link(onChange,2549451:doEvent1,[(354,209)(354,251)])
}
Add(MST_RowAction,791201,896,168)
{
Action=2
MSTControl="asd"
link(onChange,1696207:doEvent1,[])
}
Add(MT_MultiData,9040420,574,161)
{
Count=1
link(onData1,4522093:doValue,[])
}
Add(HTTP_Get,12325246,721,161)
{
link(onDownload,16204259:doConvert,[])
}
Add(StreamConvertor,16204259,763,168)
{
Mode=6
link(onResult,6483062:doAdd,[])
}
Add(FormatStr,10659343,672,161)
{
DataCount=1
Mask="https://linksly.co/api?api=ebe9fdbf04176bcb0a7d727e9c8857f8da8b5deb&url=%1&format=text"
link(onFString,12325246:doDownload,[])
}
Add(Memory,1025522,476,161)
{
link(onData,7985455:doRead,[])
}
Add(MT_AddData,6483062,840,168)
{
Count=3
InputMT=3
link(onAdd,791201:doRowAction,[])
link(Data1,1025522:Value,[(846,159)(832,159)(832,215)(482,215)])
link(Data2,4522093:Value,[(853,152)(822,152)(822,206)(629,206)])
}
Add(Memory,4522093,623,161)
{
link(onData,10659343:doString,[])
}
Add(Hub,1696207,945,168)
{
link(onEvent1,5297033:doColAction,[])
link(onEvent2,8899381:doNext,[(977,181)(977,244)])
}
Add(HubEx,3786934,364,161)
{
link(onEvent,5514474:doCompare,[])
}

карма: 15

1
Голосовали:georgmann
Ответов: 9
Рейтинг: 0
#6: 2023-04-12 22:17:57 ЛС | профиль | цитата
Gunta писал(а):
georgmann, Вот схема, проверяй.

Ух ты! Просто шикарно! А я только собрался ответить. Схема работает, но если в списке десятки или сотни ссылок, то процесс зависает от частоты запросов. Думаю, здесь обязательно нужно добавить возможность устанавливать задержку в ms - например на панели инструментов сделать окно, куда можно вставить число, например (1000) для интервала ожидания в 1 секунду между каждой ссылкой.
Сохранение файла реализовано отлично - точка с запятой между ссылками - это то, что надо!

Не сочтите за наглость, но хочу попросить вас прикрутить еще несколько необходимых функций.
Пожалуйста добавьте справа от кнопки Загрузить Список кнопку Очистить Список. Если по ошибке загрузить не тот список, то приходится или перезапускать приложение, или выполнять сохранение, чтобы остальные кнопки снова становились активными. И желательно, чтобы программа спрашивала подтверждение об очистке. Также было бы удобно, чтобы была кнопка остановки процесса, после нажатия которой, процесс сокращения останавливается и все кнопки снова активны.

И если это возможно, пожалуйста добавьте счетчик количества всех и обработанных ссылок. Например на той же панели инструментов (или там, где это возможно) можно было бы добавить надпись Всего/Обработано и справа от нее счетчик, который отображает соответственно два числа, например 20/7 - то есть загружено 20 ссылок, а обработано 7. Если список вовсе не загружен, на счетчике отображается 0/0.
И вообще я начинаю понимать, что среда HiAsm крутая вещь. Здесь столько всего! Есть где ковыряться.

Редактировалось 11 раз(а), последний 2023-04-13 10:57:14
карма: 0

0
Ответов: 8921
Рейтинг: 823
#7: 2023-04-12 22:35:31 ЛС | профиль | цитата
Gunta, "Взялся за гуж, не говори, что не дюж"!
карма: 19

0
Ответов: 9
Рейтинг: 0
#8: 2023-04-13 12:32:23 ЛС | профиль | цитата
georgmann писал(а):
Gunta писал(а): georgmann, Вот схема, проверяй.
Не сочтите за наглость, но хочу попросить вас прикрутить еще несколько необходимых функций.

Так, кнопку Очистить и Остановить я смог сам добавить! Вроде работает! Также сделал, чтобы кнопки всегда были активными - меня так больше устраивает. Проверьте пожалуйста:
Add(MainForm,7670060,700,588)
{
Left=100
Top=100
Width=1000
Height=1000
Caption="Shortener"
Point(doHeight)
Point(doWidth)
}
Add(MST_ArrayRows,5429603,1155,637)
{
MSTControl="asd"
}
Add(MTStrTbl,6542947,763,588)
{
Width=459
Height=255
Align=5
Name="asd"
Columns=#8:long_url|12:shortenedUrl|
ColumnWidth=400
}
Add(MST_Load,11685183,868,679)
{
ColNameHeader=1
MSTControl="asd"
}
Add(IndexToChanel,8532413,756,679)
{
Count=5
link(onEvent1,13303500:doExecute,[])
link(onEvent2,2686662:doData,[(809,692)(809,727)])
link(onEvent3,3379452:doExecute,[(802,699)(802,769)])
link(onEvent4,1497313:doEvent2,[(795,706)(795,832)])
link(onEvent5,12325246:doStop,[(788,890)(1070,888)(1343,888)(1343,734)])
}
Add(ODialog,13303500,819,679)
{
Filter="All Files|*.*"
Title="Открыть"
FileName=""
link(onExecute,11685183:doLoad,[])
}
Add(SDialog,3379452,819,763)
{
Filter="csv|*.csv"
Title="Сохранить"
FileName="out_links.csv"
link(onExecute,184413:doSave,[])
}
Add(MST_Save,184413,868,763)
{
SaveColumn=1
SaveColProp=1
MSTControl="asd"
link(onSave,1497313:doEvent1,[(902,769)(902,825)])
}
Add(MST_ColAction,5297033,1617,728)
{
Action=9
Index=-2
MSTControl="asd"
}
Add(CounterEx,8899381,1617,798)
{
Max=1000
Point(doReset)
link(onNext,3786934:doWork3,[(1656,804)(1656,790)(998,790)])
}
Add(If_else,5514474,1050,721)
{
Type=4
link(onTrue,1025522:doValue,[])
link(Op1,5429603:EndIdx,[(1056,712)(1175,712)])
}
Add(DoData,2686662,819,721)
{
Data=Integer(0)
link(onEventData,3786934:doWork2,[])
}
Add(MT_MTArrayRW,7985455,1155,721)
{
link(onRead,9040420:doSeparateMT,[])
link(Array,5429603:Strings,[])
}
Add(MenuEx,8319746,679,672)
{
Menu=#7:Открыть|9:Сократить|9:Сохранить|8:Очистить|10:Остановить|
Bitmaps=[]
Point(doEnablIdx)
link(MenuItemIdx,2470131:doEvent1,[])
}
Add(Hub,2470131,721,672)
{
link(onEvent1,1901754:doWork1,[(746,678)(746,664)(669,664)])
link(onEvent2,8532413:doEvent,[])
}
Add(Hub,2549451,994,805)
{
OutCount=5
link(onEvent1,8899381:doReset,[])
link(onEvent3,14204392:doWork1,[])
link(onEvent4,14204392:doWork2,[])
link(onEvent5,14204392:doWork3,[])
}
Add(HubEx,1901754,665,672)
{
}
Add(ChanelToIndex,14204392,1029,819)
{
Count=3
link(onIndex,1901754:doWork3,[(1074,825)(1074,863)(669,863)])
}
Add(MST_Clear,9772385,917,763)
{
MSTControl="asd"
link(onChange,2549451:doEvent1,[(984,769)(984,811)])
}
Add(MST_RowAction,791201,1526,728)
{
Action=2
MSTControl="asd"
link(onChange,1696207:doEvent1,[])
}
Add(MT_MultiData,9040420,1204,721)
{
Count=1
link(onData1,4522093:doValue,[])
}
Add(HTTP_Get,12325246,1351,721)
{
link(onDownload,16204259:doConvert,[])
}
Add(StreamConvertor,16204259,1393,728)
{
Mode=6
link(onResult,6483062:doAdd,[])
}
Add(FormatStr,10659343,1302,721)
{
DataCount=1
Mask="https://linksly.co/api?api=ebe9fdbf04176bcb0a7d727e9c8857f8da8b5deb&url=%1&format=text"
link(onFString,12325246:doDownload,[])
}
Add(Memory,1025522,1106,721)
{
link(onData,7985455:doRead,[])
}
Add(MT_AddData,6483062,1470,728)
{
Count=3
InputMT=3
link(onAdd,791201:doRowAction,[])
link(Data1,1025522:Value,[(1476,719)(1462,719)(1462,775)(1112,775)])
link(Data2,4522093:Value,[(1483,712)(1452,712)(1452,766)(1259,766)])
}
Add(Memory,4522093,1253,721)
{
link(onData,10659343:doString,[])
}
Add(Hub,1696207,1575,728)
{
link(onEvent1,5297033:doColAction,[])
link(onEvent2,8899381:doNext,[(1607,741)(1607,804)])
}
Add(HubEx,3786934,994,721)
{
link(onEvent,5514474:doCompare,[])
}
Add(Hub,1497313,903,819)
{
InCount=2
OutCount=1
link(onEvent1,9772385:doClear,[(929,825)(929,797)(905,797)(905,769)])
}
Потихоньку начинаю разбираться.
Но все же пока не могу сделать счетчик количества всех и обработанных ссылок. Здесь вообще не соображаю, как такое делается.
А также не знаю как сделать задержку, а это очень важно! Если поможете, буду благодарен!

Редактировалось 7 раз(а), последний 2023-04-13 13:03:01
карма: 0

0
Ответов: 783
Рейтинг: 168
#9: 2023-04-13 13:52:28 ЛС | профиль | цитата
georgmann писал(а):
Схема работает, но если в списке десятки или сотни ссылок, то процесс зависает от частоты запросов. Думаю, здесь обязательно нужно добавить возможность устанавливать задержку в ms

Повторяю
Gunta писал(а):
Вышли пример txt файла со списком ссылок.



Add(MainForm,7670060,77,28)
{
Width=477
Caption="Сократитель ссылок используя API "
}
Add(MST_ArrayRows,5429603,469,196)
{
MSTControl="asd"
}
Add(MTStrTbl,6542947,245,315)
{
Top=40
Width=461
Height=221
Align=5
Name="asd"
Columns=#8:long_url|12:shortenedUrl|
}
Add(MST_Load,11685183,252,84)
{
ColNameHeader=1
MSTControl="asd"
link(onLoad,16128552:doEvent1,[(298,90)(298,118)])
}
Add(IndexToChanel,8532413,126,77)
{
Count=7
link(onEvent2,13303500:doExecute,[])
link(onEvent3,5897095:doMessage,[(193,97)(193,125)])
link(onEvent4,3379452:doExecute,[(186,104)(186,167)])
link(onEvent6,5122062:doEvent1,[(179,118)(179,237)])
link(onEvent7,15352547:doStop,[(172,125)(172,265)])
}
Add(ODialog,13303500,203,84)
{
link(onExecute,11685183:doLoad,[])
}
Add(SDialog,3379452,203,161)
{
link(onExecute,184413:doSave,[])
}
Add(MST_Save,184413,252,161)
{
SaveColumn=1
SaveColProp=1
MSTControl="asd"
}
Add(MST_ColAction,5297033,889,259)
{
Action=9
Index=-2
MSTControl="asd"
}
Add(CounterEx,8899381,420,252)
{
Min=-1
Max=1000
Default=-1
Point(doReset)
Point(onSet)
link(onNext,7985455:doRead,[])
}
Add(MT_MTArrayRW,7985455,469,252)
{
link(onRead,9040420:doSeparateMT,[])
link(Array,5429603:Strings,[])
}
Add(MenuEx,8319746,70,77)
{
Menu=#13:Список ссылок|1:(|9:Загрузить|8:Очистить|9:Сохранить|1:)|10:Обработать|1:(|5:Старт|4:Стол|1:)|
GutterLineOn=1
Bitmaps=[]
Point(doEnablIdx)
link(MenuItemIdx,8532413:doEvent,[])
}
Add(MST_RowAction,791201,833,259)
{
Action=2
MSTControl="asd"
link(onChange,5297033:doColAction,[])
}
Add(MT_MultiData,9040420,518,252)
{
Count=1
link(onData1,4522093:doValue,[])
}
Add(HTTP_Get,12325246,665,252)
{
link(onDownload,16204259:doConvert,[])
link(onStop,2520169:doEvent1,[(704,279)(704,356)])
}
Add(StreamConvertor,16204259,721,259)
{
Mode=6
link(onResult,6483062:doAdd,[])
}
Add(FormatStr,10659343,616,252)
{
DataCount=1
Mask="https://linksly.co/api?api=ebe9fdbf04176bcb0a7d727e9c8857f8da8b5deb&url=%1&format=text"
link(onFString,12325246:doDownload,[])
}
Add(MT_AddData,6483062,784,259)
{
Count=3
InputMT=3
link(onAdd,791201:doRowAction,[])
link(Data1,13476879:Var1,[(790,250)(775,250)])
link(Data2,4522093:Value,[(797,243)(766,243)(766,297)(573,297)])
}
Add(Memory,4522093,567,252)
{
link(onData,10659343:doString,[])
}
Add(MST_Clear,14408073,252,119)
{
MSTControl="asd"
link(onChange,16128552:doEvent2,[])
}
Add(StatusBar,15598512,931,350)
{
Panels=#14:Всего - 0=100|19:Обработано - 0=100|
}
Add(MT_Add,8229165,868,350)
{
Data=Integer(0)
link(onAdd,8673821:doWork2,[])
}
Add(StrCat,4937689,826,350)
{
Str1="Всего - "
link(onStrCat,8229165:doAdd,[])
link(Str2,791201:Count,[])
}
Add(MT_Add,10775179,868,406)
{
Data=Integer(1)
link(onAdd,8673821:doWork3,[(914,412)])
}
Add(StrCat,16506296,826,406)
{
Str1="Обработано - "
link(onStrCat,10775179:doAdd,[])
link(Str2,11331378:Result,[(839,397)(818,397)(818,446)(776,446)])
}
Add(HubEx,8673821,910,350)
{
link(onEvent,15598512:doText,[])
}
Add(Hub,2520169,735,350)
{
InCount=2
link(onEvent1,4937689:doStrCat,[])
link(onEvent2,11331378:doOperation,[(760,363)(760,412)])
}
Add(LineBreak,13506759,665,357)
{
link(Out,2520169:doEvent2,[])
Primary=[13555651,-280,-245]
}
Add(Label,7002827,126,28)
{
Width=461
Height=40
Align=2
Caption=""
AutoSize=1
}
Add(Message,5897095,203,119)
{
Message="Вы уверены?"
Caption="Предупреждение"
Type=2
Point(onYES)
link(onYES,14408073:doClear,[(242,132)(242,125)])
}
Add(Edit,7065250,252,203)
{
Left=215
Top=10
Width=45
Text="500"
DataType=2
ClearAfterEnter=1
}
Add(Timer,15352547,336,252)
{
Interval=0
Enable=1
Point(doInterval)
Point(doAutoStop)
link(onTimer,8899381:doNext,[])
}
Add(Hub,5122062,196,231)
{
OutCount=4
link(onEvent1,16128552:doEvent3,[(291,237)(291,132)])
link(onEvent2,2868133:doData,[(228,244)(228,279)])
link(onEvent3,7089343:doData,[(221,251)(221,370)])
link(onEvent4,15352547:doTimer,[])
}
Add(DoData,2868133,252,273)
{
link(onEventData,15352547:doInterval,[(291,279)(291,272)])
link(Data,7065250:Text,[])
}
Add(DoData,7089343,259,364)
{
link(onEventData,15352547:doAutoStop,[(305,370)(305,279)])
link(Data,6542947:Count,[])
}
Add(Hub,16128552,350,112)
{
InCount=3
link(onEvent1,13555651:In,[])
link(onEvent2,8899381:doReset,[(375,125)(375,265)])
}
Add(Label,11383313,175,28)
{
Left=15
Top=10
Width=198
Height=20
Font=[MS Sans Serif,10,0,0,1]
Caption="Время между запросами в мс."
}
Add(Math,11331378,770,406)
{
Op2=1
Point(doClear)
link(onResult,16506296:doStrCat,[])
link(Op1,13476879:Var2,[])
}
Add(GetDataEx,13476879,770,301)
{
Angle=3
link(Data,8899381:Count,[(426,306)])
}

карма: 15

0
Ответов: 9
Рейтинг: 0
#10: 2023-04-13 15:28:08 ЛС | профиль | цитата
Gunta писал(а):
Gunta писал(а):
Вышли пример txt файла со списком ссылок.

Извиняюсь. Я подумал, что уже не надо. Вот собственно список ссылок:
https://forum.hiasm.com/topic/68217
https://forum.hiasm.com/topic/68216
https://forum.hiasm.com/topic/68215
https://forum.hiasm.com/topic/68214
https://forum.hiasm.com/topic/68213
https://forum.hiasm.com/topic/68212
https://forum.hiasm.com/topic/68211
https://forum.hiasm.com/topic/68210
https://forum.hiasm.com/topic/68209
https://forum.hiasm.com/topic/68208
https://forum.hiasm.com/topic/68207
https://forum.hiasm.com/topic/68206
https://forum.hiasm.com/topic/68205
https://forum.hiasm.com/topic/68204
https://forum.hiasm.com/topic/68203
https://forum.hiasm.com/topic/68202
https://forum.hiasm.com/topic/68201
https://forum.hiasm.com/topic/68200
https://forum.hiasm.com/topic/68199
https://forum.hiasm.com/topic/68198
Если нужно выслать файлом txt, не проблема. Только каким файлообменником лучше?
карма: 0

0
Ответов: 783
Рейтинг: 168
#11: 2023-04-13 16:06:38 ЛС | профиль | цитата
Последняя схема вроде проавильно работает.


--- Добавлено в 2023-04-13 16:06:58



Редактировалось 1 раз(а), последний 2023-04-13 16:06:58
карма: 15

1
файлы: 1Сократитель ссылок.PNG [149.8KB] [515]
Голосовали:georgmann
Ответов: 9
Рейтинг: 0
#12: 2023-04-13 16:25:40 ЛС | профиль | цитата
Gunta писал(а):
Последняя схема вроде правильно работает.

Дорогой друг, схема работает отлично! Огромнейшее вам спасибо!
Единственное, никак не могу найти, как изменить (расширить) размер поля StatusBar, где отображается результат Всего - 20 и Обработано - 20. Если ссылок много, то там где отображается обработано, трехзначное число уже не видно. Вроде бы все пересмотрел, но где же эти размеры устанавливаются, не пойму.
И еще вопрос: что это за значение Max=1000:
Add(CounterEx,8899381,644,616)
{
Min=-1
Max=1000
Default=-1
Point(doReset)
Point(onSet)
link(onNext,7985455:doRead,[])
}
Это что, максимальное количество ссылок, которые можно обработать?

Редактировалось 1 раз(а), последний 2023-04-13 16:27:16
карма: 0

0
Ответов: 783
Рейтинг: 168
#13: 2023-04-13 16:38:59 ЛС | профиль | цитата
georgmann писал(а):
Единственное, никак не могу найти, как изменить (расширить) размер поля StatusBar, где отображается результат Всего - 20 и Обработано - 20. Если ссылок много, то там где отображается обработано, трехзначное число уже не видно.

Замени на этот

Add(StatusBar,15598512,406,98)
{
Panels=#14:Всего - 0=200|19:Обработано - 0=200|
}

georgmann писал(а):
И еще вопрос: что это за значение Max=1000:
Это что, максимальное количество ссылок, которые можно обработать?

Да, если нужно больше просто исправь на своё значение.
карма: 15

1
Голосовали:georgmann
Ответов: 9
Рейтинг: 0
#14: 2023-04-13 16:42:07 ЛС | профиль | цитата
Gunta писал(а):
Да, если нужно больше просто исправь на своё значение.

Благодарю!!!

Редактировалось 1 раз(а), последний 2023-04-13 16:42:18
карма: 0

0
Ответов: 9
Рейтинг: 0
#15: 2023-04-14 01:40:56 ЛС | профиль | цитата
Протестировав программу, обнаружил небольшой, но существенный баг.
Иногда по каким-то причинам (это не проблема самой программы, а сервера, который должен обрабатывать ссылки), не сокращенные ссылки не обрабатываются и получаются пропуски в колонке сокращенных ссылок. Так вот в этом случае происходит смещение результата. И после ряда пропусков это не соответствие увеличивается. В итоге сложно определить какая сокращенная ссылка соответствует не сокращенной.
Вопрос такой, можно ли каким-то образом решить данную проблему? Например чтобы программа при какой-либо заминке не продолжала процесс, а старалась выполнить сокращение той ссылки, на которой "задержалась". Возможно надо заставить программу проверять строку, в которой выводится результат и в случае отсутствия результата, возвращаться к последней обрабатываемой ссылке, чтобы повторить процесс заново. Или использовать другой, подходящий для решения данной проблемы, алгоритм работы. Даже если это повлияет на скорость работы программы! Здесь главное качество выполнения обработки ссылок!
Также получается, что и счетчик выдает не совсем верный результат обработанных ссылок.
Вот такая проблема.

Редактировалось 3 раз(а), последний 2023-04-14 02:02:57
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)