есть на хоббисити такая штука как Drop Ship API, предназначена в основном для спекулянтов реселлеров, которые не хотят светить своим покупателям источники. позволяет обратившись по специальному адресу вытащить наличие, цену, вес и название продукта.
идея такова, на запрос видаwww.hobbyking.com/hobbyking_api.asp?id=8731&switch… сервер вернет цену для товара 8731.
возможные значения switch:
1 - Stock Level
2 - Shipping Weight
3 - Cost
4 - Product Description
(цены указаны безо всяких скидок)
ХС предлагает воспользоваться AJAX на своей веб-страничке, однако большинство браузеров запрещают кроссдоменные запросы. как ни странно, но Internet Explorer единственный, в котором работает предложенный метод.
мне же понадобилось переодически мониторить ряд продуктов, но поднимать локальный вебсервер или вешать на имеющиеся было лениво, поэтому набросал простенький скрипт, который запускается по планировщику и складывает результаты в файлик. далее это дело парсится и складывается в БД, но это уже другая история.
так как скрипты на bash-е я думаю мало кого заинтересуют, то вот адаптация реализованная в bat-файле. для работы потребуется утилита curl, страница закачки. из архива извлечь экзешник, рядом создать bat-файл следующего содержания:
@echo off
setlocal enabledelayedexpansion
set id=6518 6306 7636 7635 9942 8932 8934 9394 10383 10279 7363 9317 9318 7314 7365 9612 7294 7468 9261 9462 10281
set str=
set url=
set cur=
echo.>"%TEMP%\~.ddf"
makecab /D RptFileName="%TEMP%\~.rpt" /D InfFileName="%TEMP%\~.inf" -f "%TEMP%\~.ddf">nul
for /f "tokens=4,5,6,7" %%a in ('type "%TEMP%\~.rpt"') do (
if not defined cur set cur=%%d_%%a_%%b_%%c
)
set cur=%cur::=-%
set cur=%cur:~0,-3%
echo %cur%
echo id;stock;weight;cost;description > %~dp0%cur%.csv
for %%j in (%id%) do (
for /l %%i in (1,1,4) do (
set url=""
title id=%%j, step %%i of 4
for /f "usebackq delims=" %%a in (`curl -s !url!%%i`) do (
if "."!str! == "." (set str=%%j;%%a) else (set str=!str!;%%a)
)
)
echo !str!
echo !str! >> %~dp0%cur%.csv
set str=
)
title finished.
del /q "%TEMP%\~.*"
goto eof
:eof
после запуска скрипт пробегается по всем запрошенным товарам, выводит на экран и в .csv файл (имя файла - дата и время запуска) примерно такое содержание:
Есть желание посмотреть скриптик на bash. Покажите?
собственно вот, два цикла, никаких изысков:
#!/bin/sh -e
ID="6518 6306 7636 7635"
NUM="1 2 3 4"
STR=""
for id in $ID
do
for num in $NUM
do
URL=""
if [ $num = 1 ]
then STR="$id;$(curl -s $URL)"
else STR="$STR;$(curl -s $URL)"
fi
done
# только вывод на экран
echo $STR
done
Спасибо! Надо будет себе прикрутить в cron. Напоминание по e-mail у Хоббисетей как-то фигово работает.
А так можно будет хоть каждую минуту проверять.
в минуту проверяется не больше 15-20 товаров. можно ускорить процесс запрашивая только количество (switch=1), то есть вместо 4-х запросов отправлять только один.
Я собсно об этом и говорил. Интересует в основном только наличие, так как некоторые товары у них расхватывают так, что аж шуба заворачивается.
Сегодня попробую поработать над скриптом.
Вот наковырял немного. Мне вроде удобно. Пока работает. 😃
Спасибо!
Наваял свой вариант, с немного другой логикой 😃
Скажите, а кроме двух типов линков, которые на странице www.hobbyking.com/…/hobbyking_dropship.asp рассматриваются, есть еще что-то из кинговского API? И где посмотреть?
На каком-то сайте по бади-линку выдавалась цена со скидкой.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"47d633ba3df955007777ce4d":{"_id":"47d633ba3df955007777ce4d","hid":32384,"name":"vitkor","nick":"vitkor","avatar_id":null,"css":""},"4826ee483df955007777b0e0":{"_id":"4826ee483df955007777b0e0","hid":34364,"name":"HikeR","nick":"HikeR","avatar_id":null,"css":""},"48e5b0183df9550077776e98":{"_id":"48e5b0183df9550077776e98","hid":38996,"name":"Andrew_Stick","nick":"Andrew_Stick","avatar_id":null,"css":""},"4df0b20f3df955007775189e":{"_id":"4df0b20f3df955007775189e","hid":90221,"name":"Zergboy","nick":"Zergboy","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"4b4be85999707300770fc5bb","hid":8266,"title":"Hobbycity Drop Ship API (нестандартное применение)","html":"<p>есть на хоббисити такая штука как Drop Ship API, предназначена в основном для <s>спекулянтов</s> реселлеров, которые не хотят светить своим покупателям источники. позволяет обратившись по специальному адресу вытащить наличие, цену, вес и название продукта.</p>\n<!--cut-->\n<p>идея такова, на запрос вида<a href=\"http://www.hobbyking.com/hobbyking_api.asp?id=8731&switch=3\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"http://www.hobbyking.com/hobbyking_api.asp?id=8731&switch=3\" target=\"_blank\" rel=\"nofollow noopener\">www.hobbyking.com/hobbyking_api.asp?id=8731&switch…</a> сервер вернет <strong data-nd-pair-src=\"**\">цену</strong> для товара <strong data-nd-pair-src=\"**\">8731</strong>.<br>\nвозможные значения switch:<br>\n1 - Stock Level<br>\n2 - Shipping Weight<br>\n3 - Cost<br>\n4 - Product Description<br>\n(цены указаны безо всяких скидок)</p>\n<p>ХС предлагает воспользоваться AJAX на своей веб-страничке, однако большинство браузеров запрещают кроссдоменные запросы. как ни странно, но Internet Explorer единственный, в котором работает предложенный метод.</p>\n<p>мне же понадобилось переодически мониторить ряд продуктов, но поднимать локальный вебсервер или вешать на имеющиеся было лениво, поэтому набросал простенький скрипт, который запускается по планировщику и складывает результаты в файлик. далее это дело парсится и складывается в БД, но это уже другая история.</p>\n<p>так как скрипты на bash-е я думаю мало кого заинтересуют, то вот адаптация реализованная в bat-файле. для работы потребуется утилита curl, <a href=\"http://curl.haxx.se/latest.cgi?curl=win32-nossl\" class=\"link link-ext\" data-nd-link-orig=\"http://curl.haxx.se/latest.cgi?curl=win32-nossl\" target=\"_blank\" rel=\"nofollow noopener\">страница закачки</a>. из архива извлечь экзешник, рядом создать bat-файл следующего содержания:</p>\n<pre class=\"hljs\"><code>@echo off\nsetlocal enabledelayedexpansion\n\nset id=6518 6306 7636 7635 9942 8932 8934 9394 10383 10279 7363 9317 9318 7314 7365 9612 7294 7468 9261 9462 10281\nset str=\nset url=\nset cur=\n\necho.>"%TEMP%\\~.ddf"\nmakecab /D RptFileName="%TEMP%\\~.rpt" /D InfFileName="%TEMP%\\~.inf" -f "%TEMP%\\~.ddf">nul\nfor /f "tokens=4,5,6,7" %%a in ('type "%TEMP%\\~.rpt"') do (\n\tif not defined cur set cur=%%d_%%a_%%b_%%c\n)\nset cur=%cur::=-%\nset cur=%cur:~0,-3%\necho %cur%\necho id;stock;weight;cost;description > %~dp0%cur%.csv\n\nfor %%j in (%id%) do (\n\tfor /l %%i in (1,1,4) do\t(\n\t\tset url=""\n\t\ttitle id=%%j, step %%i of 4\n\t\tfor /f "usebackq delims=" %%a in (`curl -s !url!%%i`) do (\n\t\t\tif "."!str! == "." (set str=%%j;%%a) else (set str=!str!;%%a)\n\t\t)\n\t)\n\techo !str!\n\techo !str! >> %~dp0%cur%.csv\n\tset str=\n)\n\ntitle finished.\ndel /q "%TEMP%\\~.*"\ngoto eof\n\n:eof\n</code></pre>\n<p>третья строка - это перечисление id интересующих товаров. взять их можно, например, из ссылки на товар:<br>\n<a href=\"http://www.hobbycity.com/hobbycity/store/uh_viewItem.asp?idProduct=10323\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"http://www.hobbycity.com/hobbycity/store/uh_viewItem.asp?idProduct=10323\" target=\"_blank\" rel=\"nofollow noopener\">www.hobbycity.com/hobbycity/…/uh_viewItem.asp?idPr…</a></p>\n<p>после запуска скрипт пробегается по всем запрошенным товарам, выводит на экран и в .csv файл (имя файла - дата и время запуска) примерно такое содержание:</p>\n<pre class=\"hljs\"><code>id;stock;weight;cost;description\n6518;283;197;12.29;ZIPPY Flightmax 2200mAh 3S1P 15C\n6306;2591;197;10.99;ZIPPY Flightmax 2200mAh 3S1P 20C\n7636;5846;215;16.95;ZIPPY Flightmax 2200mAh 3S1P 25C\n</code></pre>\n<p>я ради интереса отслеживаю таким образом цены и популярность интересующих товаров. вы же можете придумать что с этим делать еще ;)</p>\n","user":"4826ee483df955007777b0e0","ts":"2010-01-12T03:11:21.000Z","st":1,"cache":{"comment_count":8,"last_comment":"4df3c080997073007717965d","last_comment_hid":8,"last_ts":"2011-06-11T19:22:40.000Z","last_user":"4df0b20f3df955007775189e"},"views":3069,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}