Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

resources/

Page Tree
root@self


Подсказка

Рекомендуем к прочтению: Параметры и ресурсы в скриптах

В теле скрипта Trassir есть возможность сохранить любые файлы например иконки, сторонние бибилотеки Python или же свои модули (блоки кода).

Блок кода
languagepy
titleПример
resources = {
	"sound_player.py": '''
		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
	'''
}
t1utils.resources_check(script_path, resources)

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

После запуска скрипта ресурсы "распаковываются" в папку скрипта с помощью функции t1utils.resources_check которая в качестве аргументов принимает путь до папки скрипта (глобальная переменная script_path) и словарь с описанием ресурсов.


В большинстве случаев можно разрабатывать и тестировать скрипт локально, например на клиентском ПО т.к. большинство функций одинаково доступны и на клиенте и на сервере.

Разберем пример создания скрипта, который по нажатию кнопки будет проигрывать звуковой файл

Создадим новый скрипт и сразу изменим его параметры

После сохранения нового скрипта можно будет создать папку ресурсов для данного скрипта

Примечание
Якорь
script_path
script_path

Обратите внимание, что параметры company, title, version влияют на путь, где будут храниться ресурсы скрипта.

Для WinOS данная папка создается в .../trassir/scripts-data/company_title_version

Для TrassirOS данная папка создается в /home/trassir/scripts-data/company_title_version

*при этом знаки пробела и точки заменяются на нижнее подчеркивание _

Скопируем модуль sound_player.py в созданную папку ресурсов скрипта

Теперь данный модуль будет доступен для импорта в нашем скрипте.

Далее, если мы хотим перенести наш скрипт вместе с модулем sound_player.py на другой сервер нам необходимо добавить в список ресурсов наш модуль

Для этого укажем в скрипте ссылку на ресурс в описании параметров скрипта

Блок кода
languagepy
'''
<parameters>
	<company>DSSL</company>
	<title>SoundPlayerExample</title>
	<version>1.0</version>
	
	<resources>
		<resource>sound_player.py</resource>
	</resources>
</parameters>
'''

Подключем скопированную библиотеку в скрипт, а также встроенный модуль host

Блок кода
languagepy
import host
import sound_player

Далее созданим функцию, при вызове которой мы будем проигрывать звуковой файл.
Для удобства вынесем название звукового файла в костанту SOUND_FILE, а также инициализируем глобальный объект player

Блок кода
languagepy
SOUND_FILE = "bell.wav"

player = sound_player.SoundPlayer()


def play_sound():
    player.play(SOUND_FILE)

После чего останется только добавить хендлер, который будет отслеживать нажание кнопки F12 и вызывать функцию play_sound()
Итоговый скрипт должен получиться примерно таким

Блок кода
languagepy
# Sound player example
'''
<parameters>
	<company>DSSL</company>
	<title>SoundPlayerExample</title>
	<version>1.0</version>
	
	<resources>
		<resource>sound_player.py</resource>
	</resources>
</parameters>
'''

import host
import sound_player

SOUND_FILE = "bell.wav"

player = sound_player.SoundPlayer()


def play_sound():
    player.play(SOUND_FILE)


host.activate_on_shortcut("F12", play_sound)

На данном этапе можно сохранить и протестировать скрипт.
Нажав F12 - мы услышим проигрывание звукового файла.


Для сохранения итогового скрипта с ресурсами воспользуемся встроенным функционалом публикации скрипта

Предупреждение

Если просто сохранить в файл - скрипт сохранится в закодированном виде. дальнейшее изменение закодированного скрипта невозможно

После сохранения скрипта в файл - в коде получившегося скрипта также будут находится закодированные в base64 данные ресурсов

Раскрыть
titlesound_player.py


Блок кода
languagepy
# Sound player example
'''
<parameters>
	<company>DSSL</company>
	<title>SoundPlayerExample</title>
	<version>1.0</version>
	
	<resources>
		<resource>sound_player.py</resource>
	</resources>
</parameters>
'''


resources = {
	"sound_player.py": '''
		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
	'''
}
t1utils.resources_check(script_path, resources)

script = '''
		3c54sx/v1SfptVjOswhGbZNjLChosHjVdjBa3CYwjeyEBPTTTJ88coeL1fNXS8qrRyOMS6I3
		G9pWlt73liA8ABtobQia5q39I1iaZq/zOcNzbS7Y6HILYBAQfXAILphX3stZMLkpvVj5+ehY
		hIC9uD80ezzo4w2DExgovMiweNnd50SohLte6pi7+PW88EyEZJSqlTpOTUrFvwvN+q2/frQ2
		ghclaIAO88biyNdl+Zr7xI6SfHEeZ758o0fnd48SifVnPfUfLjZ75n/vAEDsPA==
'''
exec_encoded(script)



Раскрыть
titlesound_player_unencoded.py


Блок кода
languagepy
# Sound player example
'''
<parameters>
	<company>DSSL</company>
	<title>SoundPlayerExample</title>
	<version>1.0</version>
	
	<resources>
		<resource>sound_player.py</resource>
	</resources>
</parameters>
'''


resources = {
	"sound_player.py": '''
		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
	'''
}
t1utils.resources_check(script_path, resources)



import host
import sound_player

SOUND_FILE = "bell.wav"

player = sound_player.SoundPlayer()


def play_sound():
    player.play(SOUND_FILE)


host.activate_on_shortcut("F12", play_sound)