Можно ли запустить сценарий с использованием CRON, для которого требуется URI перенаправления? - PullRequest
0 голосов
/ 11 июля 2020

Я создал скрипт Spotipy, который извлекает последние 50 песен, которые я слушал, и добавляет их вместе с их звуковыми функциями в Google Таблицы. Тем не менее, я бы хотел иметь возможность запускать этот скрипт ежедневно без необходимости вручную запускать его, но у меня очень мало опыта с планированием CRON. У меня проблемы с пониманием того, как его можно запустить, учитывая все аргументы командной строки, которые мне нужно ввести.

Код требует, чтобы сначала было передано несколько аргументов командной строки, например

export SPOTIPY_REDIRECT_URI="http://google.com"

export SPOTIPY_CLIENT_SECRET='secret' и аналогичные для идентификатора клиента.

Кроме того, первым аргументом после вызова скрипта является имя пользователя username = sys.argv[1].

Самое главное, он предлагает мне скопировать и вставить URL-адрес перенаправления в командную строку, которая является уникальной при каждом запуске.

Возможно ли вообще передавать URL-адрес перенаправления в командную строку каждый раз, когда сценарий запускается с использованием CRON?

1 Ответ

0 голосов
/ 26 июля 2020

Я думаю, что то, что вы хотите достичь sh, может быть достигнуто одним из двух способов.

Во-первых, вы можете написать сценарий оболочки для обработки команд экспорта и передачи URI перенаправления на ваш сценарий. Во-вторых, с помощью нескольких настроек вашего скрипта вы сможете запускать его без подключения к голове, без промежуточного шага копирования / вставки.

В своем ответе я собираюсь исследовать второй путь.

Что касается переменных среды, у вас есть несколько вариантов. В зависимости от вашего дистрибутива вы можете установить эти переменные в crontab перед запуском задания. Кроме того, вы можете установить экспорт в том же задании, которое вы используете для запуска вашего скрипта, разделяя команды точкой с запятой. См. этот ответ для подробного объяснения.

Затем, что касается аргумента имени пользователя: к счастью, аргументы скрипта также могут быть переданы через cron. Вы просто указываете имя пользователя после имени сценария в задании; cron передаст его в качестве аргумента вашему скрипту.

Наконец, что касается URI перенаправления: если вы измените свой URI перенаправления на что-то вроде localhost с номером порта, скрипт автоматически перенаправит вас. На самом деле это не было разъяснено мне в документации spotipy, а скорее из командной строки при аутентификации с помощью localhost: «Использование localhost в качестве URI перенаправления без порта. Укажите порт (например, localhost:8080), чтобы разрешить автоматизацию c получение кода аутентификации вместо копирования и вставки URL-адреса, на который перенаправлен ваш браузер ". Следуя этому совету, я смог запустить свой скрипт без необходимости копировать / вставлять URL-адрес перенаправления.

Добавьте что-то вроде «http://localhost: 8080» в URI перенаправления вашего приложения на панели инструментов Spotify, а затем экспортируйте его в вашей среде и запустите свой скрипт - он должен работать без вашего ввода! 1021 *

...