Как создать скрипт для автоматизации приема данных GET с моего сайта Wordpress и POST на другой сервер

У меня есть эта проблема, и я новичок в мире REST API. У меня есть сайт Wordpress, на котором я продаю компакт-диски, и мне приходится принимать все заказы дня и отправлять определенные данные (например, штрих-код/код, название альбома, объем продаж и т. д. и т. п.) на сервер. , отправляя эти данные с помощью вызовов REST API. Я никогда раньше им не пользовался, но пытаюсь этому научиться.

Итак, чтобы получить данные моего сайта Wordpress, я отправляю запрос GET с помощью API Wordpress и получаю файл JSON со всей необходимой информацией. Но из всей этой информации мне просто нужно экстраполировать часть, а затем отправить ее на этот сервер с помощью POST-запроса. (Сервер и API корейские и взяты из Hanteo Chart).

Основная проблема в том, что мне нужно написать скрипт для автоматизации всего процесса, и я не знаю, с чего начать. Взять один запрос из Wordpress, а затем отправить его на сервер, это легко, мне нужно только вручную вставить единственные необходимые данные, и все готово, но взять всю информацию из URL-адреса (для выполнения запроса GET) и отправить все, обработанное правильно для меня это сложно.

Я научился выполнять GET-запросы из Wordpress, поэтому с помощью этого URL-адреса я принимаю все свои заказы за день: https://example.com/wp-json/wc/v3/orders?consumer_key=ck_xxx&consumer_secret=cs_xxx&modified_after=2024-06-25T00:00:00&modified_before=2024-06-26T00:00:00&status=completed

Это возвращает файл JSON с большим количеством информации, в котором мне нужно взять всего несколько полей, например line_items, который представляет собой массив, содержащий все данные о продуктах заказа.

Мне жаль, что я не могу поделиться с вами всем файлом JSON (из-за конфиденциальных данных внутри), но я попытаюсь объяснить вам на примере.

Например: URL-адрес возвращает десять заказов, которые представляют собой дополнительные идентификаторы от 0 до 9. В каждом из этих идентификаторов (например, я беру идентификатор 0, то есть первый заказ) есть информация об этом конкретном заказе, такая как id_order, статус ( который, конечно, всегда полный), валюта, общая сумма и т. д. и т. п., и мне нужен line_items, который, в свою очередь, содержит 3 идентификатора заказанных продуктов. Таким образом, идентификаторы от 0 до 2. В идентификаторе продукта (в данном случае я беру первый продукт, поэтому идентификатор снова равен 0) мне нужно взять следующие атрибуты: ean, name (это название альбома), Product_id, количество и артикул.

Чтобы быть более понятным, у меня есть что-то вроде этого (я выделил жирным шрифтом интересующие меня атрибуты):

[
  {
    "id": 44412,
    "parent_id": 0,
    "status": "completed",
    "currency": "EUR",
    "date_created": "2024-06-21T14:25:07",
    "date_modified": "2024-06-21T14:57:54",
    "discount_total": "0.00",
    "discount_tax": "0.00",
    "shipping_total": "6.50",
    "shipping_tax": "0.00",
    "cart_tax": "0.00",
    "total": "75.40",
    "total_tax": "0.00",
     ...
     ...
    "**line_items**": [
      {
        "id": 59401,
        "**name**": "albumName",
        "**product_id**": 38515,
        "variation_id": 0,
        "**quantity**": 1,
        "tax_class": "",
        "subtotal": "68.90",
        "subtotal_tax": "0.00",
        "total": "68.90",
        "total_tax": "0.00",
        "taxes": [],
        "**sku**": "SEV53",
        "price": 68.9,
        "parent_name": null,
        "**ean**": eanOfTheAlbum
      }
      ... and here i have other data for other products, I show only the first one, so the one with id 0 in line_items, but I have to take the bold attributes for every products ...

    ],
  }
]

Затем мне нужно выполнить запрос POST на сервер, отправив все эти данные (запрос POST сам по себе прост, как и запрос GET, я могу сделать один, но моя проблема заключается в отправке более одного данных за раз. ).

Проблема в том, как мне написать скрипт, который будет делать все это автоматически, например, каждый день в 23:00 (или 23:00)? Я не знаю, с чего начать, можно ли все это сделать в Wordpress или нет, а если нет, то какой язык программирования лучше и что-то в этом роде.

Заранее спасибо всем, кто ответит на этот вопрос, и извините за мой английский.

Спасибо большое viv55 за корректировку по тексту!

CuloAtomico 27.06.2024 09:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что вы используете систему Linux, вы можете выполнить анализ JSON в сценарии bash с помощью jq . Чтобы создать массив объектов только с нужными полями, вы можете использовать карту, которая будет выглядеть примерно так jq '.line_items | map({name, product_id, quantity, sku, ean})'. Затем, изменив JSON так, чтобы он соответствовал вашей схеме API, и добавив учетные данные, вы можете передать результат в curl --json @- <api_endpoint> ( см. здесь ). Для автоматизации выполнения вы можете использовать cron / anacron. Ваш кронтаб выглядел бы так: 0 23 * * * /path/to/shell/script, если бы вы хотели запускать скрипт в 23:00 каждый день.

Ого, спасибо! Не знал о jq, манипулировать файлом JSON очень легко. Действительно однострочная команда. Спасибо большое, попробую и сообщу. Разве я не должен передать ему в команде curl файл json, который я только что создал с помощью jq? Итак, @file.json вместо @-. А поскольку мне нужно добавить crontab в WordPress, можно ли безопасно отправить команду curl с учетными данными? Потому что мне нужно пройти аутентификацию с помощью токена перед отправкой данных на этот сервер.

CuloAtomico 27.06.2024 11:24

Таким образом, команда Curl будет примерно такой: Curl --header "Content-Type: application/json", "Authorization:Bearer my_token_key" \ --request POST \ --json @myfile.json <api_endpoint>

CuloAtomico 27.06.2024 11:26

@CuloAtomico Прочтите связанную документацию. @- сообщает Curl читать входные данные со стандартного ввода, а «@file.json» предназначен для локального файла. Нет проблем с конфиденциальностью, если вы используете HTTPS.

viv55 27.06.2024 22:03

Обновлено: код jq необходимо немного изменить, чтобы он работал, и он выглядит так: jq ' .[] | .line_items | map({name, Product_id, Quantity, sku, ean}) 'Теперь все работает без проблем, еще раз спасибо!

CuloAtomico 02.07.2024 17:49

Другие вопросы по теме