1

Тема: AHK: Пауза плеера при наборе текста

Приветствую.

Подсмотрел, как синхронизируется текст субтитров с видео на youtube и решил использовать этот приём в обыденной жизни для набора текстов с аудиоматериалов.

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

Нужна помощь гуру составить скрипт, который будет:

  • При запуске себя - будет стартовать плеер (например, посылая настроенную в самом плеере горячую клавишу).

  • Как только будет начинаться набор текста, плеер ставится на паузу (горячая клавиша).

  • Как только ввод заканчивается (таймер 1 секунда, например), то плеер опять автоматом запускается (горячая клавиша).

Интересный способ, который может позволить минимизировать обращение к горячим клавишам во время набора текста (остановка, перемотка назад). 

Буду очень рад любой помощи, сам пока разбираюсь в программе. Спасибо

2 (изменено: serzh82saratov, 2014-10-23 07:58:30)

Re: AHK: Пауза плеера при наборе текста


Loop  {
    Input, chr, I V L1
    If !WinActive("ahk_class Notepad")
        Continue
    SetTimer, Play, -1000
    If Enter
        Continue
    SendInput {Space}    ;  Pause
    Enter := 1
} 

Play: 
    If WinActive("ahk_class Notepad")
        SendInput {vk50}    ;  "P" Play
    Enter := 0
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3 (изменено: flyer2001, 2014-10-23 11:09:53)

Re: AHK: Пауза плеера при наборе текста

Спасибо огромное, немного допилил, так как набираю в Word (подсмотрел ahk_class OpusApp в  WindowsSpy) и поменял клавишу на медийную play_pause, ну и таймер немного сбавил (до 500 мс). Всё работает отлично!

Loop  {
    Input, chr, I V L1
    If !WinActive("ahk_class OpusApp")
        Continue
    SetTimer, Play, -500
    If Enter
        Continue
    SendInput {Media_Play_Pause}  
    Enter := 1
} 

Play: 
    If WinActive("ahk_class OpusApp")
        SendInput {Media_Play_Pause}    
    Enter := 0
    Return

Два маленьких вопроса
1) Когда на лету редактирую текст, исправляя ошибки жму Backspace, а скрипт не считает это набором текста (естественно это ведь так и есть ). Как то можно это решить?
2) И всё-таки необъяснимо на ходу меняется местами запуск и остановка плеер. То есть скрипт начинает наоборот запускать плеер, когда текст набирается. Лечится нажатием медийной клавиши play_pause, но интересно почему так происходит? Может потому что таймер слишком маленький выставил?

4 (изменено: serzh82saratov, 2014-10-23 20:55:04)

Re: AHK: Пауза плеера при наборе текста

1) Когда на лету редактирую текст, исправляя ошибки жму Backspace, а скрипт не считает это набором текста (естественно это ведь так и есть  ). Как то можно это решить?


Loop  {
    Input, chr, I V L1
    If !WinActive("ahk_class OpusApp")
        Continue
    SetTimer, Play, -500
    If Enter
        Continue
    SendInput {Media_Play_Pause}  
    Enter := 1
} 

Play: 
    If WinActive("ahk_class OpusApp")
        SendInput {Media_Play_Pause}    
    Enter := 0
    Return

#If Enter
~Backspace:: SetTimer, Play, -500
#If
+ Или так, если надо чтобы с Backspace ещё и начинался отсчёт времени

Loop  {
    Input, chr, I V L1, {BS}
    If !WinActive("ahk_class OpusApp")
        Continue
    SetTimer, Play, -500
    If Enter
        Continue
    SendInput {Media_Play_Pause}  
    Enter := 1
} 

Play: 
    If WinActive("ahk_class OpusApp")
        SendInput {Media_Play_Pause}    
    Enter := 0
    Return

Может потому что таймер слишком маленький выставил?

Поставьте больше, и убедитесь что проблема отпала, либо нет.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5 (изменено: flyer2001, 2014-10-26 19:46:37)

Re: AHK: Пауза плеера при наборе текста

Второй вариант заработал.  Спасибо огромное!!!

А не будет верхом наглости попросить еще одну малость? Кнопку запуска и остановки скрипта (например F10).
Необходимо останавливать скрип, когда во время просмотра видео надо набрать какую-то статичную информацию (плашка, надпись, подпись и т.д.)

И еще для тех, кто заинтересуется, есть оказывается возможность настроить горячие клавиши для windows media pleer - http://123-box.ru/1556

6

Re: AHK: Пауза плеера при наборе текста

Кнопку запуска и остановки скрипта (например F10).

Loop  {
    Input, chr, I V L1, {BS}
    If (Pause || !WinActive("ahk_class OpusApp"))
        Continue
    SetTimer, Play, -500
    If Enter
        Continue
    SendInput {Media_Play_Pause}  
    Enter := 1
} 

Play: 
    If (!Pause && WinActive("ahk_class OpusApp"))
        SendInput {Media_Play_Pause}    
    Enter := 0
    Return 
    
F10:: TrayTip,, % (Pause := !Pause) ? "OFF" : "ON"
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Пауза плеера при наборе текста

Всё супер! Добавил, чтобы при нажатии F10 плеер вставал на паузу, и потом выходил из нее после запуска скрипта.


Loop  {
    Input, chr, I V L1, {BS}
    If (Pause || !WinActive("ahk_class OpusApp"))
        Continue
    SetTimer, Play, -500
    If Enter
        Continue
    SendInput {Media_Play_Pause}  
    Enter := 1
} 

Play: 
    If (!Pause && WinActive("ahk_class OpusApp"))
        SendInput {Media_Play_Pause}    
    Enter := 0
    Return 
    
F10:: 
 TrayTip,, % (Pause := !Pause) ? "OFF" : "ON"
 SendInput {Media_Play_Pause}
return    

И вопрос, чтобы не привязываться к окну редактора (подозреваю, что ahk_class будет разный у людей для разных текстовых редакторов), то есть сделать скрипт более универсальным, посмотрите правильно ли я поправил код?
Проверил работает адекватно везде ))


Loop  {
    Input, chr, I V L1, {BS}
    If Pause 
        Continue
    SetTimer, Play, -500
    If Enter
        Continue
    SendInput {Media_Play_Pause}  
    Enter := 1
} 

Play: 
    If !Pause 
        SendInput {Media_Play_Pause}    
    Enter := 0
    Return 
    
F10:: 
 TrayTip,, % (Pause := !Pause) ? "OFF" : "ON"
 SendInput {Media_Play_Pause}
return    

------

Может потому что таймер слишком маленький выставил?

Поставьте больше, и убедитесь что проблема отпала, либо нет.

Насчет таймера, такие сбои перестали наблюдаться совсем во всех плеерах.

8

Re: AHK: Пауза плеера при наборе текста

посмотрите правильно ли я поправил код?

Всё норм.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Пауза плеера при наборе текста

Удобней не сразу набирать весь текст с нуля, а подождать, пока ютуб сгенерирует авто-сабы к видео — и уже этот текст вставить в это окно и корректировать. Как правило, большая часть текста уже бывает готова.