AirDrop всегда была по -настоящему полезной особенностью экосистемы Apple, поскольку она позволяет вам легко обмениваться текстом, файлами и изображениями между устройствами Apple. Однако, если вы похожи на меня и предпочитаете использовать компьютер Windows с устройством iOS, нет возможности беспрепятственно обмениваться данными между двумя устройствами, без необходимости отправить электронное письмо себе или что -то в этом роде.
Итак, я придумал эту идею, чтобы воссоздать знаменитую AirDrop iOS, но также доступен для Windows. Архитектура проекта, которую я выбрал, была следующей:
- Комплект iOS отправляет данные в базу данных, когда что -то общее
- Программа Python на моем компьютере поднимает эти данные
- Тогда данные представлены в уведомлении
- Если это уведомление нажимается, данные копируются в буфер обмена
Легко, верно?
База данных, которую я выбрал, была База данных Firebase в реальном времени Google, так как это невероятно просто в использовании и совершенно бесплатно. Как только база данных в реальном времени была настроена, мне пришлось сделать ярлык iOS. Интересной особенностью, которая соответствует моим потребностям, была функция «Show in Share Sheets» для ярлыков. Как говорится в названии, он показывает ярлык в меню «Общие», что позволяет создавать ярлык, который делает различные вещи с общими данными в качестве входных данных. Именно то, что мне было нужно!
Как видите, ярлык появляется в общих листах:
Затем ярлык просто сделает запрос на HTTP Post на Firebase, причем ввод ярлыка прошел в теле запроса.
Итак, теперь у меня был ярлык, который мог отправить что -то общее на iOS, Firebase. Теперь мой компьютер просто должен был забрать эти данные.
Перво -наперво, поэтому я начал с создания связи с Firebase. Для этого была необходима единственная зависимость:
import firebase_admin from firebase_admin import credentials from firebase_admin import db
Импортируется с помощью пип
вот так:
pip install firebase-admin
Затем мой скрипт Python должен был получить аутентификацию, чтобы получить доступ к Firebase, которая была сделана с использованием файла JSON аутентификации. Если вы следите за этой статьей в качестве учебника, метод получения этого файла JSON объясняется Здесь Анкет Итак, вот код для аутентификации:
configFile = 'config.json' cred = credentials.Certificate(configFile) app = firebase_admin.initialize_app(cred, { 'databaseURL': 'myDataBaseUrl' # this is not my actual database URL, for security purposes })
Как только это было сделано, мой скрипт должен был прослушать новые данные в базе данных в реальном времени. Это было легко сделано с Слушай
Метод, однако одна проблема осталась. Метод прослушивания фактически отправляет все содержимое базы данных в первый раз, когда она выполняется, что было не тем поведением, которое я искал. Это было легко исправить, хотя, логический переключатель, как так:
hasGotFirst = False def listener(data): global hasGotFirst if hasGotFirst: # Here we'll use the fetched data hasGotFirst = True # Here we just listen at the root of the database db.reference('/').listen(listener)
Затем я хотел, чтобы данные отображались в красивом уведомлении, когда они были получены, а затем скопированы в буфер обмена, когда это уведомление было нажатило. Для этого я добавил еще две зависимости:
from win10toast_click import ToastNotifier # Notifications import pyperclip # Clipboard
Импортируется с помощью пип
вот так:
pip install win10toast-click pip install pyperclip
Затем сценарий Python отобразит уведомление при получении данных, и скопируют эти данные в буфер обмена в обратном вызове уведомления. Вот полный код:
def listener(data): global hasGotFirst if hasGotFirst: msg = str(data.data['value']) # Get the 'value' property from the data toaster.show_toast("Data Sent From Phone", msg, callback_on_click=click, icon_path='') hasGotFirst = True def click(data): pyperclip.copy(data)
Так что теперь Airdrop в основном работал! Я мог бы поделиться строкой текста с моего телефона, и это волшебным образом появилось бы в уведомлении на моем компьютере, которое я мог бы скопировать, нажав на него!
Если бы я поделился запиской, содержащей текст «Привет из iOS!», Подобно бы уведомление, как это:
Однако, чтобы сделать процесс еще более гладким, я добавил автоматическое обнаружение URL -адреса, которое добавило еще пару пакетов:
import re import webbrowser
Оба доступны по умолчанию, поэтому для этих двух установки не требуется.
Что касается кода, он просто проверяет на предмет URL -шаблона при получении данных с использованием Re
модуль, и если он оценивается на True, этот URL -адрес затем открывается с использованием Webbrowser
модуль, как так:
def listener(data): global hasGotFirst if hasGotFirst: msg = str(data.data['value']) matches = re.match(r'https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)', msg) if matches: webbrowser.open(msg) else: toaster.show_toast("Data Sent From Phone", msg, callback_on_click=lambda val=msg: click(val), icon_path='') hasGotFirst = True
И теперь мы полностью закончили! С помощью скрипта Python, работающего в фоновом режиме, теперь я могу с легкостью обмениваться данными между моим iOS -телефоном и компьютером Windows.
Если вам нужен полный исходный код, он доступен на GitHub: https://github.com/oskar-codes/windows-airdrop
Оригинал: “https://dev.to/oskarcodes/how-i-remade-airdrop-from-ios-on-windows-2pa7”