Конвертация ozon.bsl и первые доки
61
.github/workflows/oint_test_full_en.yml
vendored
@ -1148,9 +1148,50 @@ jobs:
|
|||||||
key: logs-VkTeams
|
key: logs-VkTeams
|
||||||
path: ./docs/en/results/VkTeams
|
path: ./docs/en/results/VkTeams
|
||||||
|
|
||||||
|
|
||||||
|
Testing-Ozon:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [Decode, Build]
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: otymko/setup-onescript@v1.4
|
||||||
|
with:
|
||||||
|
version: 1.9.0
|
||||||
|
|
||||||
|
- name: Получить тестовые данные из кэша
|
||||||
|
uses: actions/cache/restore@v3
|
||||||
|
with:
|
||||||
|
key: test-data
|
||||||
|
path: ./data.json
|
||||||
|
|
||||||
|
- name: Установить asserts и 1testrunner
|
||||||
|
run: |
|
||||||
|
opm install asserts
|
||||||
|
opm install 1testrunner
|
||||||
|
|
||||||
|
- name: Установить OInt
|
||||||
|
run: |
|
||||||
|
cd ./src/en/OInt
|
||||||
|
opm build
|
||||||
|
opm install *.ospx
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Attributes and features
|
||||||
|
if: ${{ cancelled() }} == false
|
||||||
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/en/OInt/tests/Modules/internal/OPI_Tests.os "OzonAPI_AttributesAndFeatures"
|
||||||
|
|
||||||
|
- name: Записать логи
|
||||||
|
if: ${{ cancelled() }} == false
|
||||||
|
uses: actions/cache/save@v3
|
||||||
|
with:
|
||||||
|
key: logs-Ozon
|
||||||
|
path: ./docs/en/results/Ozon
|
||||||
|
|
||||||
Encode:
|
Encode:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24,Testing-VkTeams]
|
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24,Testing-VkTeams,Testing-Ozon]
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@ -1418,6 +1459,22 @@ jobs:
|
|||||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-VkTeams"
|
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-VkTeams"
|
||||||
|
|
||||||
|
- name: Получить логи Ozon
|
||||||
|
uses: actions/cache/restore@v3
|
||||||
|
with:
|
||||||
|
key: logs-Ozon
|
||||||
|
path: ./docs/en/results/Ozon
|
||||||
|
|
||||||
|
|
||||||
|
- name: Очистка логов Ozon
|
||||||
|
run: |
|
||||||
|
curl -L \
|
||||||
|
-X DELETE \
|
||||||
|
-H "Accept: application/vnd.github+json" \
|
||||||
|
-H "Authorization: Bearer ${{ secrets.TOKEN }}" \
|
||||||
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
|
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-Ozon"
|
||||||
|
|
||||||
|
|
||||||
- name: Записать данные
|
- name: Записать данные
|
||||||
uses: stefanzweifel/git-auto-commit-action@v5
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
@ -1430,7 +1487,7 @@ jobs:
|
|||||||
|
|
||||||
Clear-Cache:
|
Clear-Cache:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Testing-VkTeams, Encode]
|
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Testing-VkTeams, Testing-Ozon, Encode]
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
steps:
|
steps:
|
||||||
- name: Очистка основного кэша
|
- name: Очистка основного кэша
|
||||||
|
BIN
Media/Ozon.png
Normal file
After Width: | Height: | Size: 9.8 KiB |
@ -94,7 +94,7 @@ li > a.menu__link {
|
|||||||
.Airtable a::before , .Telegram a::before, .VK a::before, .Viber a::before, .Twitter a::before,
|
.Airtable a::before , .Telegram a::before, .VK a::before, .Viber a::before, .Twitter a::before,
|
||||||
.Notion a::before, .GoogleCalendar a::before, .GoogleDrive a::before, .GoogleSheets a::before,
|
.Notion a::before, .GoogleCalendar a::before, .GoogleDrive a::before, .GoogleSheets a::before,
|
||||||
.Slack a::before, .YandexDisk a::before, .Dropbox a::before, .Bitrix24 a::before, .Messenger a::before,
|
.Slack a::before, .YandexDisk a::before, .Dropbox a::before, .Bitrix24 a::before, .Messenger a::before,
|
||||||
.Social a::before, .Database a::before, .Folder a::before, .Calendar a::before, .CRM a::before,
|
.Social a::before, .Database a::before, .Folder a::before, .Calendar a::before, .CRM a::before, .Commerce a::before,
|
||||||
.VKTeams a::before, .Start a::before{
|
.VKTeams a::before, .Start a::before{
|
||||||
padding-right: 0.7rem;
|
padding-right: 0.7rem;
|
||||||
padding-top: 0.4rem;
|
padding-top: 0.4rem;
|
||||||
@ -180,6 +180,10 @@ li > a.menu__link {
|
|||||||
content: url(../../static/img/Categories/folder.png);
|
content: url(../../static/img/Categories/folder.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.Commerce > div > a::before{
|
||||||
|
content: url(../../static/img/Categories/e-commerce.png);
|
||||||
|
}
|
||||||
|
|
||||||
.Start > div > a::before{
|
.Start > div > a::before{
|
||||||
content: url(../../static/img/Categories/welcome.png);
|
content: url(../../static/img/Categories/welcome.png);
|
||||||
}
|
}
|
||||||
|
BIN
docs/docusaurus/static/img/APIs/Ozon.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
docs/docusaurus/static/img/APIs/small/Ozon.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
docs/docusaurus/static/img/Categories/e-commerce.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
docs/docusaurus/static/img/Categories/e-commerce2.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 26 KiB |
@ -1,5 +1,5 @@
|
|||||||
ClientID = "2128753";
|
ClientID = "2128753";
|
||||||
APIKey = "7cc90d26-33e4-499b...";
|
APIKey = "7cc90d26-33e4-499b...";
|
||||||
|
|
||||||
Result = OPI_Ozon.GetCategoriesAndProductTypesTree(ClientID, APIKey, "EN");
|
Result = OPI_Ozon.GetCategoriesAndProductTypesTree(ClientID, APIKey, "EN");
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ClientID = "2128753";
|
ClientID = "2128753";
|
||||||
APIKey = "7cc90d26-33e4-499b...";
|
APIKey = "7cc90d26-33e4-499b...";
|
||||||
CategoryID = 17029016;
|
CategoryID = 17029016;
|
||||||
TypeID = 970778135;
|
TypeID = 970778135;
|
||||||
|
12
docs/en/md/Instructions/Ozon.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
id: Ozon
|
||||||
|
sidebar_class_name: Ozon
|
||||||
|
---
|
||||||
|
|
||||||
|
<img src={require('../../static/img/APIs/Ozon.png').default} width='64px' />
|
||||||
|
|
||||||
|
# Ozon
|
||||||
|
|
||||||
|
This section is dedicated to the library for working with Ozon Seller API. On this page, all the steps necessary to start working are described
|
||||||
|
|
||||||
|
## Getting started
|
@ -56,6 +56,14 @@
|
|||||||
{ type: 'category', link: {type: 'doc', id:'Instructions/Bitrix24'}, label: 'Bitrix24', className: 'Bitrix24', items:[{type: 'autogenerated', dirName: 'Bitrix24'}]},
|
{ type: 'category', link: {type: 'doc', id:'Instructions/Bitrix24'}, label: 'Bitrix24', className: 'Bitrix24', items:[{type: 'autogenerated', dirName: 'Bitrix24'}]},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
label: 'E-commerce',
|
||||||
|
className: 'Commerce',
|
||||||
|
items:[
|
||||||
|
{ type: 'category', link: {type: 'doc', id:'Instructions/Ozon'}, label: 'Ozon', className: 'Ozon', items:[{type: 'autogenerated', dirName: 'Ozon'}]},
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: 'category',
|
type: 'category',
|
||||||
label: 'Planning and projects managment ',
|
label: 'Planning and projects managment ',
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
oint ozon ПолучитьДеревоКатегорийИТиповТоваров --clientid "2128753" --apikey "7cc90d26-33e4-499b..." --lang %lang%
|
1
docs/ru/cli/Ozon/ПолучитьХарактеристикиКатегории.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
oint ozon ПолучитьХарактеристикиКатегории --clientid "2128753" --apikey "7cc90d26-33e4-499b..." --categoryid %categoryid% --typeid %typeid% --lang %lang%
|
@ -1,5 +1,5 @@
|
|||||||
IDКлиента = "2128753";
|
IDКлиента = "2128753";
|
||||||
КлючAPI = "7cc90d26-33e4-499b...";
|
КлючAPI = "7cc90d26-33e4-499b...";
|
||||||
|
|
||||||
Результат = OPI_Ozon.ПолучитьДеревоКатегорийИТиповТоваров(IDКлиента, КлючAPI, "EN");
|
Результат = OPI_Ozon.ПолучитьДеревоКатегорийИТиповТоваров(IDКлиента, КлючAPI, "EN");
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
IDКлиента = "2128753";
|
IDКлиента = "2128753";
|
||||||
КлючAPI = "7cc90d26-33e4-499b...";
|
КлючAPI = "7cc90d26-33e4-499b...";
|
||||||
IDКатегории = 17029016;
|
IDКатегории = 17029016;
|
||||||
IDТипа = 970778135;
|
IDТипа = 970778135;
|
||||||
|
|
||||||
Результат = OPI_Ozon.ПолучитьХарактеристикиКатегории(IDКлиента, КлючAPI, IDКатегории, IDТипа);
|
Результат = OPI_Ozon.ПолучитьХарактеристикиКатегории(IDКлиента, КлючAPI, IDКатегории, IDТипа);
|
||||||
|
12
docs/ru/md/Instructions/Ozon.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
id: Ozon
|
||||||
|
sidebar_class_name: Ozon
|
||||||
|
---
|
||||||
|
|
||||||
|
<img src={require('../../static/img/APIs/Ozon.png').default} width='64px' />
|
||||||
|
|
||||||
|
# Ozon
|
||||||
|
|
||||||
|
Этот раздел посвящен библиотеке для работы с Ozon Seller API. На данной странице описаны все действия, необходимые для полноценного начала работы
|
||||||
|
|
||||||
|
## Начало работы
|
@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 1
|
||||||
|
---
|
||||||
|
|
||||||
|
# Получить дерево категорий и типов товаров
|
||||||
|
Возвращает категории и типы для товаров в виде дерева
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
`Функция ПолучитьДеревоКатегорийИТиповТоваров(Знач IDКлиента, Знач КлючAPI, Знач Язык = "DEFAULT") Экспорт`
|
||||||
|
|
||||||
|
| Параметр | CLI опция | Тип | Назначение |
|
||||||
|
|-|-|-|-|
|
||||||
|
| IDКлиента | --clientid | Строка | Идентификатор клиента |
|
||||||
|
| КлючAPI | --apikey | Строка | API ключ |
|
||||||
|
| Язык | --lang | Строка | Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) |
|
||||||
|
|
||||||
|
|
||||||
|
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
Создание товаров доступно только в категориях последнего уровня, сравните именно их с категориями на своей площадке. Категории не создаются по запросу пользователя
|
||||||
|
|
||||||
|
Внимательно выбирайте категорию для товара: для разных категорий применяется разный размер комиссии.
|
||||||
|
|
||||||
|
Метод в документации API: [post /v1/description-category/tree](https://docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetTree)
|
||||||
|
:::
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
```bsl title="Пример кода"
|
||||||
|
IDКлиента = "2128753";
|
||||||
|
КлючAPI = "7cc90d26-33e4-499b...";
|
||||||
|
|
||||||
|
Результат = OPI_Ozon.ПолучитьДеревоКатегорийИТиповТоваров(IDКлиента, КлючAPI, "EN");
|
||||||
|
|
||||||
|
Результат = OPI_Ozon.ПолучитьДеревоКатегорийИТиповТоваров(IDКлиента, КлючAPI);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```sh title="Пример команды CLI"
|
||||||
|
|
||||||
|
oint ozon ПолучитьДеревоКатегорийИТиповТоваров --clientid "2128753" --apikey "7cc90d26-33e4-499b..." --lang %lang%
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```json title="Результат"
|
||||||
|
|
||||||
|
```
|
@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 2
|
||||||
|
---
|
||||||
|
|
||||||
|
# Получить характеристики категории
|
||||||
|
Получает характеристики для указанной категории и типа товара
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
`Функция ПолучитьХарактеристикиКатегории(Знач IDКлиента, Знач КлючAPI, Знач IDКатегории, Знач IDТипа, Знач Язык = "DEFAULT") Экспорт`
|
||||||
|
|
||||||
|
| Параметр | CLI опция | Тип | Назначение |
|
||||||
|
|-|-|-|-|
|
||||||
|
| IDКлиента | --clientid | Строка | Идентификатор клиента |
|
||||||
|
| КлючAPI | --apikey | Строка | API ключ |
|
||||||
|
| IDКатегории | --categoryid | Строка, Число | Идентификатор категории |
|
||||||
|
| IDТипа | --typeid | Строка, Число | Идентификатор типа товара |
|
||||||
|
| Язык | --lang | Строка | Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) |
|
||||||
|
|
||||||
|
|
||||||
|
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
Если у dictionary_id значение 0, у атрибута нет вложенных справочников. Если значение другое, то справочники есть. Получить их можно методом ПолучитьЗначенияХарактеристик()
|
||||||
|
|
||||||
|
Метод в документации API: [post /v1/description-category/attribute](https://docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetAttributes)
|
||||||
|
:::
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
```bsl title="Пример кода"
|
||||||
|
IDКлиента = "2128753";
|
||||||
|
КлючAPI = "7cc90d26-33e4-499b...";
|
||||||
|
IDКатегории = 17029016;
|
||||||
|
IDТипа = 970778135;
|
||||||
|
|
||||||
|
Результат = OPI_Ozon.ПолучитьХарактеристикиКатегории(IDКлиента, КлючAPI, IDКатегории, IDТипа);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```sh title="Пример команды CLI"
|
||||||
|
|
||||||
|
oint ozon ПолучитьХарактеристикиКатегории --clientid "2128753" --apikey "7cc90d26-33e4-499b..." --categoryid %categoryid% --typeid %typeid% --lang %lang%
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```json title="Результат"
|
||||||
|
|
||||||
|
```
|
4
docs/ru/md/Ozon/Attributes-and-features/_category_.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"label": "Атрибуты и характеристики",
|
||||||
|
"position": "2"
|
||||||
|
}
|
@ -56,6 +56,14 @@ export default {
|
|||||||
{ type: 'category', link: {type: 'doc', id:'Instructions/Bitrix24'}, label: 'Bitrix24', className: 'Bitrix24', items:[{type: 'autogenerated', dirName: 'Bitrix24'}]},
|
{ type: 'category', link: {type: 'doc', id:'Instructions/Bitrix24'}, label: 'Bitrix24', className: 'Bitrix24', items:[{type: 'autogenerated', dirName: 'Bitrix24'}]},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
label: 'Электронная коммерция',
|
||||||
|
className: 'Commerce',
|
||||||
|
items:[
|
||||||
|
{ type: 'category', link: {type: 'doc', id:'Instructions/Ozon'}, label: 'Ozon', className: 'Ozon', items:[{type: 'autogenerated', dirName: 'Ozon'}]},
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: 'category',
|
type: 'category',
|
||||||
label: 'Планирование и управление проектами ',
|
label: 'Планирование и управление проектами ',
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
|
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
|
||||||
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
|
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
|
||||||
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
|
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
|
||||||
<module name="OPI_VKTeams" file="core/Modules/OPI_VKTeams.os"/>
|
<module name="OPI_Ozon" file="core/Modules/OPI_Ozon.os"/>
|
||||||
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
|
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
|
||||||
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
|
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
|
||||||
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
|
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
|
||||||
|
@ -11228,8 +11228,8 @@ EndProcedure
|
|||||||
|
|
||||||
Procedure Ozon_GetCategoriesAndProductTypesTree(FunctionParameters)
|
Procedure Ozon_GetCategoriesAndProductTypesTree(FunctionParameters)
|
||||||
|
|
||||||
ClientID = FunctionParameters["Ozon_ClientID"];
|
ClientID = FunctionParameters["Ozon_ClientID"];
|
||||||
APIKey = FunctionParameters["Ozon_ApiKey"];
|
APIKey = FunctionParameters["Ozon_ApiKey"];
|
||||||
|
|
||||||
Result = OPI_Ozon.GetCategoriesAndProductTypesTree(ClientID, APIKey, "EN");
|
Result = OPI_Ozon.GetCategoriesAndProductTypesTree(ClientID, APIKey, "EN");
|
||||||
|
|
||||||
@ -11249,7 +11249,7 @@ EndProcedure
|
|||||||
|
|
||||||
Procedure Ozon_GetCategoryAttributes(FunctionParameters)
|
Procedure Ozon_GetCategoryAttributes(FunctionParameters)
|
||||||
|
|
||||||
ClientID = FunctionParameters["Ozon_ClientID"];
|
ClientID = FunctionParameters["Ozon_ClientID"];
|
||||||
APIKey = FunctionParameters["Ozon_ApiKey"];
|
APIKey = FunctionParameters["Ozon_ApiKey"];
|
||||||
CategoryID = 17029016;
|
CategoryID = 17029016;
|
||||||
TypeID = 970778135;
|
TypeID = 970778135;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_VKTeams.os
|
// OneScript: ./OInt/core/Modules/OPI_Ozon.os
|
||||||
// Lib: VKTeams
|
// Lib: Ozon
|
||||||
// CLI: vkteams
|
// CLI: ozon
|
||||||
|
|
||||||
// MIT License
|
// MIT License
|
||||||
|
|
||||||
|
@ -11228,8 +11228,8 @@ EndProcedure
|
|||||||
|
|
||||||
Procedure Ozon_GetCategoriesAndProductTypesTree(FunctionParameters)
|
Procedure Ozon_GetCategoriesAndProductTypesTree(FunctionParameters)
|
||||||
|
|
||||||
ClientID = FunctionParameters["Ozon_ClientID"];
|
ClientID = FunctionParameters["Ozon_ClientID"];
|
||||||
APIKey = FunctionParameters["Ozon_ApiKey"];
|
APIKey = FunctionParameters["Ozon_ApiKey"];
|
||||||
|
|
||||||
Result = OPI_Ozon.GetCategoriesAndProductTypesTree(ClientID, APIKey, "EN");
|
Result = OPI_Ozon.GetCategoriesAndProductTypesTree(ClientID, APIKey, "EN");
|
||||||
|
|
||||||
@ -11249,7 +11249,7 @@ EndProcedure
|
|||||||
|
|
||||||
Procedure Ozon_GetCategoryAttributes(FunctionParameters)
|
Procedure Ozon_GetCategoryAttributes(FunctionParameters)
|
||||||
|
|
||||||
ClientID = FunctionParameters["Ozon_ClientID"];
|
ClientID = FunctionParameters["Ozon_ClientID"];
|
||||||
APIKey = FunctionParameters["Ozon_ApiKey"];
|
APIKey = FunctionParameters["Ozon_ApiKey"];
|
||||||
CategoryID = 17029016;
|
CategoryID = 17029016;
|
||||||
TypeID = 970778135;
|
TypeID = 970778135;
|
||||||
|
131
src/ru/OInt/core/Modules/OPI_Ozon.os
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
// OneScript: ./OInt/core/Modules/OPI_Ozon.os
|
||||||
|
// Lib: Ozon
|
||||||
|
// CLI: ozon
|
||||||
|
|
||||||
|
// MIT License
|
||||||
|
|
||||||
|
// Copyright (c) 2023 Anton Tsitavets
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
|
// BSLLS:Typo-off
|
||||||
|
// BSLLS:IncorrectLineBreak-off
|
||||||
|
// BSLLS:NumberOfOptionalParams-off
|
||||||
|
// BSLLS:UsingServiceTag-off
|
||||||
|
// BSLLS:LineLength-off
|
||||||
|
|
||||||
|
//@skip-check module-structure-top-region
|
||||||
|
//@skip-check module-structure-method-in-regions
|
||||||
|
//@skip-check wrong-string-literal-content
|
||||||
|
//@skip-check method-too-many-params
|
||||||
|
|
||||||
|
// Раскомментировать, если выполняется OneScript
|
||||||
|
#Использовать "../../tools"
|
||||||
|
|
||||||
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
#Область АтрибутыИХарактеристики
|
||||||
|
|
||||||
|
// Получить дерево категорий и типов товаров
|
||||||
|
// Возвращает категории и типы для товаров в виде дерева
|
||||||
|
//
|
||||||
|
// Примечание:
|
||||||
|
// Создание товаров доступно только в категориях последнего уровня, сравните именно их с категориями на своей площадке. Категории не создаются по запросу пользователя
|
||||||
|
// Внимательно выбирайте категорию для товара: для разных категорий применяется разный размер комиссии.
|
||||||
|
// Метод в документации API: [post /v1/description-category/tree](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetTree)
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// IDКлиента - Строка - Идентификатор клиента - clientid
|
||||||
|
// КлючAPI - Строка - API ключ - apikey
|
||||||
|
// Язык - Строка - Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) - lang
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API
|
||||||
|
Функция ПолучитьДеревоКатегорийИТиповТоваров(Знач IDКлиента, Знач КлючAPI, Знач Язык = "DEFAULT") Экспорт
|
||||||
|
|
||||||
|
URL = "https://api-seller.ozon.ru/v1/description-category/tree";
|
||||||
|
|
||||||
|
Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI);
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
OPI_Инструменты.ДобавитьПоле("language", Язык, "Строка", Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Получить характеристики категории
|
||||||
|
// Получает характеристики для указанной категории и типа товара
|
||||||
|
//
|
||||||
|
// Примечание:
|
||||||
|
// Если у dictionary_id значение 0, у атрибута нет вложенных справочников. Если значение другое, то справочники есть. Получить их можно методом ПолучитьЗначенияХарактеристик()
|
||||||
|
// Метод в документации API: [post /v1/description-category/attribute](@docs.ozon.ru/api/seller/#operation/DescriptionCategoryAPI_GetAttributes)
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// IDКлиента - Строка - Идентификатор клиента - clientid
|
||||||
|
// КлючAPI - Строка - API ключ - apikey
|
||||||
|
// IDКатегории - Строка, Число - Идентификатор категории - categoryid
|
||||||
|
// IDТипа - Строка, Число - Идентификатор типа товара - typeid
|
||||||
|
// Язык - Строка - Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) - lang
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Ozon Seller API
|
||||||
|
Функция ПолучитьХарактеристикиКатегории(Знач IDКлиента
|
||||||
|
, Знач КлючAPI
|
||||||
|
, Знач IDКатегории
|
||||||
|
, Знач IDТипа
|
||||||
|
, Знач Язык = "DEFAULT") Экспорт
|
||||||
|
|
||||||
|
URL = "https://api-seller.ozon.ru/v1/description-category/attribute";
|
||||||
|
|
||||||
|
Заголовки = СоздатьЗаголовкиЗапроса(IDКлиента, КлючAPI);
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
OPI_Инструменты.ДобавитьПоле("description_category_id", IDКатегории, "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("type_id" , IDТипа , "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("language" , Язык , "Строка", Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Функция СоздатьЗаголовкиЗапроса(Знач IDКлиента, Знач КлючAPI)
|
||||||
|
|
||||||
|
Заголовки = Новый Соответствие;
|
||||||
|
|
||||||
|
OPI_Инструменты.ДобавитьПоле("Client-Id", IDКлиента, "Строка", Заголовки);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("Api-Key" , КлючAPI , "Строка", Заголовки);
|
||||||
|
|
||||||
|
Возврат Заголовки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
@ -7,7 +7,7 @@
|
|||||||
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
|
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
|
||||||
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
|
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
|
||||||
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
|
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
|
||||||
<module name="OPI_VKTeams" file="core/Modules/OPI_VKTeams.os"/>
|
<module name="OPI_Ozon" file="core/Modules/OPI_Ozon.os"/>
|
||||||
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
|
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
|
||||||
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
|
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
|
||||||
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
|
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
|
||||||
|
@ -11229,7 +11229,7 @@
|
|||||||
Процедура Ozon_ПолучитьДеревоКатегорийИТиповТоваров(ПараметрыФункции)
|
Процедура Ozon_ПолучитьДеревоКатегорийИТиповТоваров(ПараметрыФункции)
|
||||||
|
|
||||||
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
|
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
|
||||||
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
|
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
|
||||||
|
|
||||||
Результат = OPI_Ozon.ПолучитьДеревоКатегорийИТиповТоваров(IDКлиента, КлючAPI, "EN");
|
Результат = OPI_Ozon.ПолучитьДеревоКатегорийИТиповТоваров(IDКлиента, КлючAPI, "EN");
|
||||||
|
|
||||||
@ -11250,9 +11250,9 @@
|
|||||||
Процедура Ozon_ПолучитьХарактеристикиКатегории(ПараметрыФункции)
|
Процедура Ozon_ПолучитьХарактеристикиКатегории(ПараметрыФункции)
|
||||||
|
|
||||||
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
|
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
|
||||||
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
|
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
|
||||||
IDКатегории = 17029016;
|
IDКатегории = 17029016;
|
||||||
IDТипа = 970778135;
|
IDТипа = 970778135;
|
||||||
|
|
||||||
Результат = OPI_Ozon.ПолучитьХарактеристикиКатегории(IDКлиента, КлючAPI, IDКатегории, IDТипа);
|
Результат = OPI_Ozon.ПолучитьХарактеристикиКатегории(IDКлиента, КлючAPI, IDКатегории, IDТипа);
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_VKTeams.os
|
// OneScript: ./OInt/core/Modules/OPI_Ozon.os
|
||||||
// Lib: VKTeams
|
// Lib: Ozon
|
||||||
// CLI: vkteams
|
// CLI: ozon
|
||||||
|
|
||||||
// MIT License
|
// MIT License
|
||||||
|
|
||||||
|
@ -11229,7 +11229,7 @@
|
|||||||
Процедура Ozon_ПолучитьДеревоКатегорийИТиповТоваров(ПараметрыФункции)
|
Процедура Ozon_ПолучитьДеревоКатегорийИТиповТоваров(ПараметрыФункции)
|
||||||
|
|
||||||
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
|
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
|
||||||
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
|
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
|
||||||
|
|
||||||
Результат = OPI_Ozon.ПолучитьДеревоКатегорийИТиповТоваров(IDКлиента, КлючAPI, "EN");
|
Результат = OPI_Ozon.ПолучитьДеревоКатегорийИТиповТоваров(IDКлиента, КлючAPI, "EN");
|
||||||
|
|
||||||
@ -11250,9 +11250,9 @@
|
|||||||
Процедура Ozon_ПолучитьХарактеристикиКатегории(ПараметрыФункции)
|
Процедура Ozon_ПолучитьХарактеристикиКатегории(ПараметрыФункции)
|
||||||
|
|
||||||
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
|
IDКлиента = ПараметрыФункции["Ozon_ClientID"];
|
||||||
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
|
КлючAPI = ПараметрыФункции["Ozon_ApiKey"];
|
||||||
IDКатегории = 17029016;
|
IDКатегории = 17029016;
|
||||||
IDТипа = 970778135;
|
IDТипа = 970778135;
|
||||||
|
|
||||||
Результат = OPI_Ozon.ПолучитьХарактеристикиКатегории(IDКлиента, КлючAPI, IDКатегории, IDТипа);
|
Результат = OPI_Ozon.ПолучитьХарактеристикиКатегории(IDКлиента, КлючAPI, IDКатегории, IDТипа);
|
||||||
|
|
||||||
|
96
src/ru/cli/data/Classes/internal/Classes/ozon.os
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
Функция ПолучитьСостав() Экспорт
|
||||||
|
|
||||||
|
ТаблицаСостава = Новый ТаблицаЗначений();
|
||||||
|
ТаблицаСостава.Колонки.Добавить("Библиотека");
|
||||||
|
ТаблицаСостава.Колонки.Добавить("Модуль");
|
||||||
|
ТаблицаСостава.Колонки.Добавить("Метод");
|
||||||
|
ТаблицаСостава.Колонки.Добавить("МетодПоиска");
|
||||||
|
ТаблицаСостава.Колонки.Добавить("Параметр");
|
||||||
|
ТаблицаСостава.Колонки.Добавить("Описание");
|
||||||
|
ТаблицаСостава.Колонки.Добавить("ОписаниеМетода");
|
||||||
|
ТаблицаСостава.Колонки.Добавить("Область");
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "ozon";
|
||||||
|
НоваяСтрока.Модуль = "OPI_Ozon";
|
||||||
|
НоваяСтрока.Метод = "ПолучитьДеревоКатегорийИТиповТоваров";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬДЕРЕВОКАТЕГОРИЙИТИПОВТОВАРОВ";
|
||||||
|
НоваяСтрока.Параметр = "--clientid";
|
||||||
|
НоваяСтрока.Описание = "Идентификатор клиента";
|
||||||
|
НоваяСтрока.Область = "Атрибуты и характеристики";
|
||||||
|
НоваяСтрока.ОписаниеМетода = "Возвращает категории и типы для товаров в виде дерева";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "ozon";
|
||||||
|
НоваяСтрока.Модуль = "OPI_Ozon";
|
||||||
|
НоваяСтрока.Метод = "ПолучитьДеревоКатегорийИТиповТоваров";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬДЕРЕВОКАТЕГОРИЙИТИПОВТОВАРОВ";
|
||||||
|
НоваяСтрока.Параметр = "--apikey";
|
||||||
|
НоваяСтрока.Описание = "API ключ";
|
||||||
|
НоваяСтрока.Область = "Атрибуты и характеристики";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "ozon";
|
||||||
|
НоваяСтрока.Модуль = "OPI_Ozon";
|
||||||
|
НоваяСтрока.Метод = "ПолучитьДеревоКатегорийИТиповТоваров";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬДЕРЕВОКАТЕГОРИЙИТИПОВТОВАРОВ";
|
||||||
|
НоваяСтрока.Параметр = "--lang";
|
||||||
|
НоваяСтрока.Описание = "Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) (необяз. по ум. - DEFAULT)";
|
||||||
|
НоваяСтрока.Область = "Атрибуты и характеристики";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "ozon";
|
||||||
|
НоваяСтрока.Модуль = "OPI_Ozon";
|
||||||
|
НоваяСтрока.Метод = "ПолучитьХарактеристикиКатегории";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬХАРАКТЕРИСТИКИКАТЕГОРИИ";
|
||||||
|
НоваяСтрока.Параметр = "--clientid";
|
||||||
|
НоваяСтрока.Описание = "Идентификатор клиента";
|
||||||
|
НоваяСтрока.Область = "Атрибуты и характеристики";
|
||||||
|
НоваяСтрока.ОписаниеМетода = "Получает характеристики для указанной категории и типа товара";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "ozon";
|
||||||
|
НоваяСтрока.Модуль = "OPI_Ozon";
|
||||||
|
НоваяСтрока.Метод = "ПолучитьХарактеристикиКатегории";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬХАРАКТЕРИСТИКИКАТЕГОРИИ";
|
||||||
|
НоваяСтрока.Параметр = "--apikey";
|
||||||
|
НоваяСтрока.Описание = "API ключ";
|
||||||
|
НоваяСтрока.Область = "Атрибуты и характеристики";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "ozon";
|
||||||
|
НоваяСтрока.Модуль = "OPI_Ozon";
|
||||||
|
НоваяСтрока.Метод = "ПолучитьХарактеристикиКатегории";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬХАРАКТЕРИСТИКИКАТЕГОРИИ";
|
||||||
|
НоваяСтрока.Параметр = "--categoryid";
|
||||||
|
НоваяСтрока.Описание = "Идентификатор категории";
|
||||||
|
НоваяСтрока.Область = "Атрибуты и характеристики";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "ozon";
|
||||||
|
НоваяСтрока.Модуль = "OPI_Ozon";
|
||||||
|
НоваяСтрока.Метод = "ПолучитьХарактеристикиКатегории";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬХАРАКТЕРИСТИКИКАТЕГОРИИ";
|
||||||
|
НоваяСтрока.Параметр = "--typeid";
|
||||||
|
НоваяСтрока.Описание = "Идентификатор типа товара";
|
||||||
|
НоваяСтрока.Область = "Атрибуты и характеристики";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "ozon";
|
||||||
|
НоваяСтрока.Модуль = "OPI_Ozon";
|
||||||
|
НоваяСтрока.Метод = "ПолучитьХарактеристикиКатегории";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬХАРАКТЕРИСТИКИКАТЕГОРИИ";
|
||||||
|
НоваяСтрока.Параметр = "--lang";
|
||||||
|
НоваяСтрока.Описание = "Язык ответа: DEFAULT (русский), RU, EN, TR (турецкий), ZH_HANS (китайский) (необяз. по ум. - DEFAULT)";
|
||||||
|
НоваяСтрока.Область = "Атрибуты и характеристики";
|
||||||
|
|
||||||
|
Возврат ТаблицаСостава;
|
||||||
|
КонецФункции
|
||||||
|
|
@ -15,6 +15,7 @@
|
|||||||
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
|
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
|
||||||
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
|
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
|
||||||
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
|
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
|
||||||
|
СоответствиеКомандМодулей.Вставить("ozon", "OPI_Ozon");
|
||||||
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
|
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
|
||||||
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
|
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
|
||||||
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
|
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
|
||||||
|