Шаблоны поведения для новичков

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

Re: Шаблоны поведения для новичков

Сообщение Lerych » Ср ноя 21, 2018 8:39 pm

А если создать файл скрипта (типа bash-скрипта), где прописать открытие окна браузером, а это скрипт запускать через шаблон?
За это сообщение автора Lerych поблагодарил:
xor (Ср ноя 21, 2018 10:50 pm)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Шаблоны поведения для новичков

Сообщение xor » Ср ноя 21, 2018 10:50 pm

Lerych писал(а):
Ср ноя 21, 2018 8:39 pm
А если создать файл скрипта (типа bash-скрипта), где прописать открытие окна браузером, а это скрипт запускать через шаблон?
отличная идея, что мы, действительно, упёрлись в php!
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

Re: Шаблоны поведения для новичков

Сообщение Lerych » Ср ноя 21, 2018 11:17 pm

Я так подозреваю надо использовать для запуска скрипта что-то типа, safe_exec? Синтаксис такого кода можно где посмотреть?
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Шаблоны поведения для новичков

Сообщение xor » Ср ноя 21, 2018 11:23 pm

Lerych писал(а):
Ср ноя 21, 2018 11:17 pm
Я так подозреваю надо использовать для запуска скрипта что-то типа, safe_exec? Синтаксис такого кода можно где посмотреть?
Легко ищется поиском по содержимому, например, в windows_tts.class.php

Код: Выделить всё

safe_exec('cscript ' . DOC_ROOT . '/rc/sapi.js ' . $message, 1, $level);
или в common.class.php и для винды и для линукса

Код: Выделить всё

      {
         if (IsWindowsOS())
            safe_exec(DOC_ROOT . '/rc/madplay.exe ' . $filename, $exclusive, $priority);
         else
            safe_exec('mplayer ' . $filename . " >/dev/null 2>&1", $exclusive, $priority);
      }
За это сообщение автора xor поблагодарил:
Lerych (Ср ноя 21, 2018 11:28 pm)
Рейтинг: 1.16%
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

Re: Шаблоны поведения для новичков

Сообщение Lerych » Ср ноя 21, 2018 11:29 pm

Спасибо! Буду пробовать.
А то я поиском по форуму "safe_exec" ничего не нашёл.
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

Re: Шаблоны поведения для новичков

Сообщение Lerych » Чт ноя 22, 2018 12:02 am

Мужчины!
Кто может протестировать это:
Поставить это https://www.npmjs.com/package/chromix-too
Потом протестить с этим
скрипт может работать с несколькими окнами и позволяет вам выбрать нужную вкладку в правом окне, используя сравнение строк для заголовков таблеток и используя возможность некоторых браузеров выбрать определенную вкладку путем отправки нажатий клавиш.

Код имеет два параметра: позицию вкладки в окне (число от 1 до 8) и подстроку заголовка вкладки, чтобы определить правильную вкладку.

Код ниже основан на Google Chrome, см. Комментарий к некоторым строкам кода, чтобы узнать, как изменить его для случая с Firefox (или вы можете изменить его, чтобы получить имя браузера во вводе).

Сохраните этот код в файле, скажем, например tab_refresh.sh
(Примечание: этот код расширяет этот код, как в ответе blockloop)

#!/bin/bash

BROWSER=google-chrome # Or BROWSER=firefox for the Firefox case
TABNUM=$1
TABTITLE=$2

CUR_WID=$(xdotool getwindowfocus)

for WID in $(xdotool search --onlyvisible --class $BROWSER)
do
xdotool windowactivate $WID
xdotool key "ctrl+$TABNUM"
# Or "alt+$TABNUM" for the Firefox case
WIN_TITLE=$(xdotool getwindowname $WID)
if [[ $WIN_TITLE = *"$TABTITLE"* ]]
then
xdotool key 'F5'
fi
done
xdotool windowactivate $CUR_WID
После создания файла сделайте его исполняемым, например, набрав:

chmod +x tab_refresh.sh
Наконец, чтобы использовать этот скрипт, вы должны ввести что-то вроде:

./tab_refresh.sh TABNUM TABTITLE
Например, скажем, вы хотите обновить 4-ю вкладку в окне Google Chrome, где заголовок 4-й вкладки содержит строку foo.

./tab_refresh.sh 4 foo
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

Re: Шаблоны поведения для новичков

Сообщение Lerych » Чт ноя 22, 2018 12:20 am

xor писал(а):
Пт ноя 09, 2018 10:40 am
Lerych писал(а):Ясно. Спасибо. Какие ещё могут быть варианты?
Коллективный мозг не нашел решение для пхп((

Serge:
Или из чистого пхп хрен вообще окно открыть, ведь серверный язык?
skysilver:
Ну по логике да, пхп выполняется в бэкэнде и переключать вкладки в веб-морде он по умолчанию не может.

Отправлено с моего Redmi 4X через Tapatalk
А это можно использовать:
(This is for linux users only).

We know now how we can fork a process in linux with the & operator.
And by using command: nohup MY_COMMAND > /dev/null 2>&1 & echo $! we can return the pid of the process.

This small class is made so you can keep in track of your created processes ( meaning start/stop/status ).

You may use it to start a process or join an exisiting PID process.

<?php
// You may use status(), start(), and stop(). notice that start() method gets called automatically one time.
$process = new Process('ls -al');

// or if you got the pid, however here only the status() metod will work.
$process = new Process();
$process.setPid(my_pid);
?>

<?php
// Then you can start/stop/ check status of the job.
$process.stop();
$process.start();
if ($process.status()){
echo "The process is currently running";
}else{
echo "The process is not running.";
}
?>

<?php
/* An easy way to keep in track of external processes.
* Ever wanted to execute a process in php, but you still wanted to have somewhat controll of the process ? Well.. This is a way of doing it.
* @compability: Linux only. (Windows does not work).
* @author: Peec
*/
class Process{
private $pid;
private $command;

public function __construct($cl=false){
if ($cl != false){
$this->command = $cl;
$this->runCom();
}
}
private function runCom(){
$command = 'nohup '.$this->command.' > /dev/null 2>&1 & echo $!';
exec($command ,$op);
$this->pid = (int)$op[0];
}

public function setPid($pid){
$this->pid = $pid;
}

public function getPid(){
return $this->pid;
}

public function status(){
$command = 'ps -p '.$this->pid;
exec($command,$op);
if (!isset($op[1]))return false;
else return true;
}

public function start(){
if ($this->command != '')$this->runCom();
else return true;
}

public function stop(){
$command = 'kill '.$this->pid;
exec($command);
if ($this->status() == false)return true;
else return false;
}
}
?>
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: Шаблоны поведения для новичков

Сообщение hc2hunter » Чт дек 27, 2018 12:24 pm

Коллеги, вопрос по шаблонам поведения... Использую их для голосового управления.
Совершенно случайно наткнулся, что Алиса почему-то разрывает предложения, где встречается соединительное "и".
Когда я засылаю эту фразу через command.php она рвется на 2 команды.
hттp://192.168.168.188/command.php?qry="Главный вопрос жизни вселенной и вообще"
Вот что происходит в консоли Алисы:
gv.png
gv.png (15.49 КБ) 4348 просмотров
Пробовал брать в ковычки и без - бесполезно... Если перенести "и" или еще куда-то добавить - порвет фразу еще и там, превратив её в 3 строки! :shock:

В самом скрипте command.php нашел строку Define('DEVIDER', 'и');. Видимо оно и портит все? Но что с этим делать и можно ли просто удалить? Не повредит ли прочему функционалу?
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Шаблоны поведения для новичков

Сообщение xor » Чт дек 27, 2018 12:37 pm

Это было сделано для
Включи что-то тут и выключи то-то там
Если девайдер закомментить, то, естественно, не будет работать указанная (довольно искусственная, кстати -- и работает, а или нет) конструкция(((

Отправлено с моего Redmi 4X через Tapatalk

За это сообщение автора xor поблагодарил:
hc2hunter (Чт дек 27, 2018 1:08 pm)
Рейтинг: 1.16%
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Шаблоны поведения для новичков

Сообщение tarasfrompir » Чт дек 27, 2018 12:46 pm

hc2hunter писал(а):
Чт дек 27, 2018 12:24 pm
Коллеги, вопрос по шаблонам поведения... Использую их для голосового управления.
Совершенно случайно наткнулся, что Алиса почему-то разрывает предложения, где встречается соединительное "и".
Когда я засылаю эту фразу через command.php она рвется на 2 команды.
hттp://192.168.168.188/command.php?qry="Главный вопрос жизни вселенной и вообще"
Вот что происходит в консоли Алисы:
gv.png

Пробовал брать в ковычки и без - бесполезно... Если перенести "и" или еще куда-то добавить - порвет фразу еще и там, превратив её в 3 строки! :shock:

В самом скрипте command.php нашел строку Define('DEVIDER', 'и');. Видимо оно и портит все? Но что с этим делать и можно ли просто удалить? Не повредит ли прочему функционалу?
отписал в предыдущей теме
За это сообщение автора tarasfrompir поблагодарил:
hc2hunter (Чт дек 27, 2018 1:08 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Ответить