Похоже, Apple предоставляет услугу с этой информацией.
Пример / TL; др:
Сделайте следующий curl
вызов:
curl "http://wu-quotes.apple.com/dgw?imei=42&apptype=finance" -H "Content-type: text/xml" -d "<?xml version='1.0' encoding='utf−8'?><request devtype='Apple_OSX' deployver='APPLE_DASHBOARD_1_0' app='YGoAppleStocksWidget' appver='unknown' api='finance' apiver='1.0.1' acknotification='0000'><query id='0' timestamp='`date +%s000`' type='getquotes'><list><symbol>GE</symbol></list></query></request>"
(Возможно, вам придется заменить параметр imei
другим случайным числом)
Это вернет ответ, подобный следующему (я отформатировал XML и удалил ненужные части):
<?xml version="1.0" encoding="UTF-8"?>
<response>
<result type="getquotes" timestamp="1405539220">
<list count="1" total="1">
<quote>
...
<!-- Verify that this is the exchange you are interested in -->
<exchange>NYSE</exchange>
...
<!-- 0 means market is closed, anything else means its open -->
<status>1</status>
...
</quote>
</list>
</result>
</response>
Найдите элемент <status>
. Если значение 0
, NYSE закрыто, в противном случае NYSE открыто.
Подробнее
Apple предоставляет сервис, который использует виджет MacOS Stocks Dashboard для определения, открыты или закрыты рынки (предположительно, приложение для iPhone также использует его). Насколько мне известно, эта служба не имеет документов, но в этом ответе делается попытка документировать информацию, имеющую отношение к вашему вопросу.
Служба расположена по следующему URL-адресу конечной точки:
http://wu -quotes.apple.com / DGW? = IMEI (UID) и AppType = финансы
(Вы можете просто использовать случайное число для UID)
Сервис действительно предназначен для получения информации о котировках акций, но в ответе имеется свойство status
, которое, по-видимому, соответствует, если рынок, на котором торгуются акции, открыт или закрыт. Чтобы позвонить, отправьте на него следующий XML-код:
<?xml version='1.0' encoding='utf−8'?>
<request devtype='Apple_OSX' deployver='APPLE_DASHBOARD_1_0' app='YGoAppleStocksWidget' appver='unknown' api='finance' apiver='1.0.1' acknotification='0000'>
<query id='0' timestamp='{{millis since epoch}}' type='getquotes'>
<list>
<symbol>{{stock symbol}}</symbol>
<!-- More symbols -->
</list>
</query>
</request>
(убедитесь, что для заголовка Content-type установлено значение "text / xml").
Поскольку вы заявили, что интересуетесь NYSE, вы опубликуете символ такой компании, как GE (которая торгуется на NYSE, как в моем примере выше). Если вы заинтересованы, скажем, в NASDAQ, вы должны разместить компанию, торгуемую NASDAQ (например, AAPL).
Ответ, который вы получите, должен быть в следующем формате:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<result type="getquotes" timestamp="1405539220">
<list count="1" total="1">
<quote>
<!-- quote details here -->
</quote>
<!-- more quotes here if you submitted more than one symbol -->
</list>
</result>
</response>
В элементе <quote>
:
- Найдите элемент
<exchange>
, чтобы убедиться, что он соответствует обмену, который вы ищете (например, "NasdaqGS", "NYSE").
- Найдите элемент
<status>
. Значение 0
означает, что фондовые рынки закрыты. Любое другое значение означает, что они открыты.
Виджет Акции выполняет итерацию по всем символам, для которых он настроен, и считает, что рынки открыты тогда и только тогда, когда все котировки имеют ненулевые статусы.
Для получения более подробной информации, пожалуйста, обратитесь к /System/Library/WidgetResources/.parsers/stocksParser.js
, который должен быть доступен на каждом Mac.