Таким образом, вы автоматизировали что – то с помощью скрипта Python – возможно, проверяя, доступна ли ваша любимая еда – и, возможно, вы запланировали его запуск на вашем компьютере каждый день. Но, возможно, бывают дни, когда вы не используете свой компьютер, но все равно хотите запустить этот скрипт. Разве не было бы здорово, если бы вы могли сделать это на своем iPhone? Ну, хорошая новость: вы можете . Еще лучшая новость: также можно полуавтоматизировать их по местоположению или времени триггеров.
Приложение, необходимое для запуска скриптов Python на iOS
Есть несколько альтернатив, я рекомендую Pythonista 3 . Это не самое дешевое, но, безусловно, самое полезное и многофункциональное приложение. Поскольку это универсальное приложение, вам нужно купить его только один раз, и вы можете редактировать/запускать сценарии на всех своих устройствах через общий доступ к файлам iCloud. Кроме того, с помощью аккуратного расширения оболочки под названием stash вы можете установить любой сторонний модуль через pip.
Mobile App in Python in 60 seconds #shorts
Загрузка и запуск сценариев
Существуют различные способы открыть или загрузить файл в Pythonista. На самой левой панели:
- вы можете выбрать любой файл из своей библиотеки iCloud
- используйте кнопку Открыть в разделе Внешние файлы, чтобы открыть файлы из других приложений/местоположений
- используйте кнопку + в левом нижнем углу, чтобы создать новый пустой файл сценария
- здесь вы можете написать свой собственный код
- или вставьте код из другого файла
Запустить сценарий так же просто, как нажать кнопку воспроизведения в заголовке панели сценариев.
Приложение, необходимое для планирования
Launch Center Pro – это приложение, которое можно использовать для выполнения задач на основе триггеров местоположения и времени. Самое приятное, что он также может выполнять действия с использованием схемы URL-адресов ios. Это означает, что он может открыть Pythonista и запустить в нем любой скрипт! Вот как это работает:
- Создайте новое действие, нажав кнопку карандаша в правом верхнем углу и нажав на пустой слот. Затем в поле URL используйте следующую логику: pythonista://script.py?action=run Это будет работать script.py , который находится в локальной корневой папке вашего Pythonista.
- Если ваш скрипт находится в папке, то используйте следующую схему: pythonista://Folder/script.py?action=run или pythonista://Folder/Folder 2/script.py?action=run
- Если вы хотите запустить скрипт из библиотеки iCloud, используйте следующую схему: pythonista://Папка/script.py?action=runhttps://pythobyte.com/how-to-run-and-schedule-python-scripts-on-ios-fqfxvyp7x-0728e81e/» target=»_blank»]pythobyte.com[/mask_link]
Pythonista. Пишем на Python для iOS
Планшет iPad от компании Apple — всем известное и не нуждающееся в рекламе устройство. Но очень часто хочется использовать всю мощь этого устройства не только для игр и развлечения, а для серьёзной работы. Например для написания программ. Несмотря на 4-x летнею историю развития этого гаджета и наличие разных моделей удобных сред для программирования под iOS существует крайне мало. (Оговорюсь сразу, во избежании дальнейшей путаницы: программирование на iOS — значит написание кода и запуск программы на iPad или iPhone, а программирование для iOS — написание приложения, которое может быть выложено в App Store.)
How To Run Python Scripts DIRECTLY On Your Phone (iOS) [Pythonista]
Недавно я наткнулся на великолепную программку Pythonista, которая позволяет писать на iOS для iOS.
Краткое описание
Как пишут создатели этой программы:Pythonista brings the Zen of Python to your iPad or iPhone.
И это действительно так. Программа является лучшим компилятором для Python.
На мой взгляд, лучшим это приложение делают 3 вещи:
- Не нужно интернет-подключение для запуска программы. iPad действительно становиться рабочей станцией;
- Есть всплывающие подсказки и встроенная документация (опять же без доступа к интернету);
- И, конечно, самое главное, это возможность экспорта в XCode.
Обзор
Среда ориентирована на Python 2.7. Но есть и некоторые фишки из 3-й ветки. Например, сработает и такой код:
print «Hello, world»
print («Hello, world»)Кроме стандартных библиотек, есть несколько библиотек для непосредственной разработки для iOS. Остановлюсь на одной. Она называется ui и отвечает за GUI.
Рассмотрим несколько примеров работы с этой библиотекой. Очень интересно, что в Pythonista графический интерфейс можно задавать программно, а можно нативно:
import ui def button_tapped(sender): sender.title = ‘Hello’ view = ui.View() # [1] view.name = ‘Demo’ # [2] view.background_color = ‘white’ # [3] button = ui.Button(title=’Tap me!’) # [4] button.center = (view.width * 0.5, view.height * 0.5) # [5] button.action = button_tapped # [6] view.add_subview(button) # [7] view.present(‘sheet’) # [8]
Это первый пример по работе с библиотекой ui. Разберём программу построчно:
1) Сначала создаём объект View;
2) Потом задаём имя этого объекта, оно будет отображаться в его заголовке;
3) Устанавливаем цвет фона объекта — белый, можно задавать словом, а можно при помощи RGB;
4) Создаём кнопку с надписью «Tap me!»;
5) Размещаем кнопку на объекте;
6) Задаём функцию, которая будет выполняться при нажатии на кнопку. (В данном случае изменится надпись на кнопке);
7) Уточняем, что «button» является наследником «view»;
8) Наконец, вызываем метод view.present() для отображения объекта на экране iOS устройства.Вот что будет происходить на айпаде:
Но тоже самое можно сделать и нативно:
1) Создадим скрипт с UI:
2) Открыв UI, нажмем на кнопку «+» и выберем button:
3) Растянем кнопку и разместим её по центру экрана:
4) Откроем атрибуты кнопки и зададим функцию, срабатывающую при её нажатии:
4) Перейдём в редактор скрипта и напишем функцию:
def button_tapped(sender): sender.title = ‘Hello’
Скажем, к какому UI привязать данный скрипт:
ui.load_view(‘My UI’).present(‘sheet’)
5) Запустим программу:
В завершение
В завершение хочу сказать, что представленный мною обзор далеко не полон и не раскрывает всех функций этой программы. Множество примеров, отличное описание библиотек — всё это позволит довольно быстро разобраться во всех свойствах этого приложения.
Рекомендую посетить сайт создателей Pythonista. На нём есть документация , к сожалению, только на английском языке.
UPD: Читайте мою статью посвящённую этой программе и автоматизации iOS в февральском номере журнала ][акер
- Python
- Разработка под iOS
Источник: habr.com
Про Pyto. Делаем веб-сервер на iOS и качаем видео с youtube-dl
Говорят, iOS невероятно закрытая система: ни написать свою программу без лицензии разработчика, ни заставить iPhone или iPad делать что‑то, что не одобряют в Apple. Сегодня я познакомлю тебя с Pyto — интерпретатором Python для iOS, который позволяет творить. если не чудеса, то как минимум многие вещи, которые раньше считались невозможными без джейлбрейка.
Сначала посмотрим на сам Pyto, а потом смастерим простенький веб‑интерфейс, который поможет более удобно скачивать видео через youtube-dl. Работать он будет локально на iOS.
Pythonista
Pyto — не первая попытка создать среду разработки на Python для портативных устройств Apple. Уже много лет существует приложение Pythonista. Оно служило мне верой и правдой, позволяя как решать на ходу сиюминутные задачи (что‑то посчитать, расшифровать, сгенерировать последовательность), так и создавать небольшие полезные приложения. В Pythonista есть свой графический интерфейс и некоторые возможности для взаимодействия с системой. К примеру, можно сделать периодически обновляемый виджет для экрана Today.
Однако разработка Pythonista остановилась уже больше пяти лет назад. Автор за это время появился на публике всего один раз и выпустил небольшой апдейт, который позволил приложению запускаться на современных версиях iOS. А затем снова пропал: ни ответов на форуме, ни постов в твиттере. И уж конечно, никаких новых фич в Pythonista.
Встречайте — Pyto!
И тут на сцену выходит Pyto — тоже творение единственного разработчика, но зато полного сил и энтузиазма. А также, кажется, желания испытывать терпение модераторов Apple, постоянно идя по краю дозволенного в App Store. Pyto, к примеру, умеет запускать приложения в фоне, позволяет создавать локальные веб‑серверы и даже имеет встроенную поддержку репозитория PyPI — ставить пакеты можно буквально одной кнопкой!
info
Установка приложений внутри приложения до сих пор была абсолютным табу в iOS. Любые лазейки в Apple прикрывали, из‑за чего в ту же Pythonista новые пакеты приходилось протаскивать сложной цепочкой действий. Не исключено, что автору Pyto повезло и модераторы просто проморгали нарушения. Или же разрешать программистам некоторые вольности — это новая политика Apple. Поживем — увидим!
У Pyto большие возможности для работы с математическими функциями — к примеру, пакет NumPy, без которого не обходятся любые мало‑мальски сложные вычисления, установлен по умолчанию. Также в Pyto удобно строить графики и даже пользоваться кое‑какими средствами для машинного обучения. К примеру, мне без труда удалось поставить Gensim и поразвлекаться с разбором текстов.
Как и Pythonista, Pyto стоит денег: после трехдневного пробного периода тебя попросят раскошелиться на 750 рублей за базовую версию и 1400 за расширенную, с набором библиотек, требующих компилцяии. Но необходимость раскошеливаться — не главный недостаток Pyto.
Основной проблемой этого приложения остается невероятная сырость. Настолько мощная, что в болото багов можно провалиться по колено, если не с головой. И я не преувеличиваю: один раз мне удалось заклинить Pyto настолько, что даже перезагрузка не помогала.
Однако если держаться проторенных дорожек и пользоваться Pyto бережно и аккуратно, то он сослужит отличную службу.
Особенности Pyto
Командная строка
В Pyto есть командная строка. Но учти, что это не Bash и внутри — не Linux. Это свой командный интерпретатор Pyto. Он поддерживает несколько основных команд Bash — список можно узнать командой help . Отсюда ты запустишь скрипты на Python, но на установку каких‑то других программ рассчитывать не приходится.
Использование файловой системы
Важное отличие iOS от других операционок — в том, насколько сильно здесь контролируется доступ к файловой системе. Без разрешения скрипт в Pyto не может получить доступ ни к одной папке!
Хорошая новость заключается в том, что запрашивать права очень просто. Для этого в Pyto есть модуль file_system.
Пишем простенький скрипт:
import file_system as fs
path = fs . FolderBookmark ( )
print ( path )После его запуска появится диалоговое окно для выбора папки. Выбрав ее, ты дашь Pyto права на доступ ко всем файлам в ней. Именно Pyto, а не своему скрипту! Это означает, что дальше доступ к этой папке будет открыт всем программам внутри Pyto, в том числе после любых перезапусков и перезагрузок.
Если же по ходу исполнения скрипта тебе понадобится получать доступ к разным файлам или папкам, ты можешь воспользоваться функциями import_file( ) и open_directory( ) из того же модуля. Каждый раз при их вызове будет появляться диалоговое окно для выбора файла или папки.
Запуск фоновых задач
Еще одна особенность iOS — неиспользуемые приложения принудительно завершаются и выгружаются из памяти (если встретишь людей, кропотливо чистящих историю задач в iOS, передай им, что это мартышкин труд — ОС сама отлично с этим справится). Но что сделать, чтобы программа работала в фоне непрерывно? Для разных типов задач в iOS существуют API, все же позволяющие фоновое исполнение.
В Pyto используется нехитрый прием: если тебе нужна работа в фоне, то приложение будет делать вид, что проигрывает аудиофайл, тогда как никакого воспроизведения в реальности не происходит. Для активации этого поведения используй модуль background.
Чтобы программа начала лучше держаться на плаву, достаточно написать что‑то в таком духе:
import background as bg
with bg . BackgroundTask ( ) as task :
# Код для исполнения в фонеДругие фичи и модули
В Pyto есть поддержка еще нескольких интересных возможностей: например, ты можешь активировать свои скрипты вызовами из Shortcuts или URL-схему и передавать им параметры. Другая мощная вещь — мост между Python и Objective-C на основе библиотеки Rubicon-ObjC, он позволяет вызывать функции из нативных фреймворков.
К Pyto прилагается неплохой набор модулей, для работы которых требуется компиляция. Самостоятельно добавлять такие модули, к сожалению, нельзя.
А также несколько собственных модулей для работы с iOS. Мы уже рассмотрели file_system и background, но есть и другие:
- apps — интерфейсы к популярным сторонним приложениям. Позволяют из скрипта активировать другую программу и сказать ей сделать то или иное действие;
- pyto_ui — фреймворк для разработки приложений с графическим интерфейсом. Позволяет рисовать окошки, кнопочки и прочие элементы управления;
- widgets и watch — библиотеки для создания виджетов для экрана «Сегодня» и часов Apple Watch;
- sound, music и speech отвечают за воспроизведение звука, музыки и синтез речи;
- notifications позволяет отправлять оповещения;
- location и motion дают возможность получать геокоординаты устройства и опрашивать датчики движения;
- pasteboard — взаимодействие с буфером обмена;
- multipeer — позволяет обмениваться данными в режиме точка — точка.
Разбор всех этих замечательных возможностей не уместится в одну статью, так что выберем одну небольшую задачу, на которой испытаем Pyto в деле.
Пишем веб-сервер
Задача
Проглядывая доступные в Pyto модули, я заприметил youtube-dl — широко известную утилиту для скачивания видео с видеохостингов. В том числе и тех, которые пытаются защитить контент от подобных действий. В общем, отличная штука! Но пользоваться модулем Python или утилитой для командной строки на мобильном устройстве не очень‑то удобно.
Есть множество способов приделать с помощью Pyto более удобный интерфейс к youtube-dl, в том числе написать графическое приложение на одном из доступных GUI-фреймворков. Однако мне пришла в голову мысль попробовать использовать Pyto в качестве локального веб‑сервера. Заодно можно будет посмотреть, как тут дела с веб‑разработкой.
Инструментарий
Первым делом нам потребуется веб‑фреймворк или как минимум библиотека, которая будет упрощать работу с HTTP. В документации мне встретилось упоминание Tornado и Django, но для нашей задачи и то и то — оверкилл. Достаточно будет Flask, который без проблем установился командой pip install flask и заработал.
Чтобы еще сильнее упростить себе жизнь, я буду использовать клиентский фреймворк HTMX, который позволяет делать асинхронные запросы без использования JavaScript. С ним достаточно задать тегу несколько HTML-атрибутов с информацией о том, куда слать запрос и куда подставлять полученный ответ. Остальное HTMX сделает сам.
Ну и чтобы внешний вид программы был не колхозным, подключим минималистичный CSS-фреймворк Pico.css.
Код
Первым делом импортируем все необходимое.
Источник: xakep.ru