Я хочу разработать Applescript для извлечения идентификатора видео в реальном времени на YouTube с использованием идентификатора канала.
В настоящее время я делаю это вручную, так как Youtube время от времени меняет идентификатор видео в реальном времени. Например, я практикую следующее;
- Откройте https://www.youtube.com/embed/live_stream?channel=UCu7cGbQEMgGk8TD0ZYucM5g.
- Щелкните правой кнопкой мыши на плеере и выберите "Копировать URL видео"
- Этот URL-адрес используется в приложении, которое я написал для автоматизации Livestreamer. (Этот сценарий приведен ниже.)
Поскольку Youtube время от времени изменяет этот URL, следующий скрипт должен время от времени меняться. Мое намерение состоит в том, чтобы автоматизировать весь процесс.
-- Shraddha TV and Radio Recorder --
-- Developed by Anoma --
set pathToShraddha to ((path to downloads folder as text) & "Shraddha:")
set outputExtension to ""
set ls to ""
set sourceURL to ""
set con to ""
set windowInfo to ""
set theTime to ""
set endTime to ""
display dialog "Shraddha TV or Radio" buttons {"TV", "Radio", "Cancel"} default button 1
if result = {button returned:"TV"} then
set outputExtension to ".ts"
set sourceURL to "https://www.youtube.com/watch?v=1yv7JjMP4Dw"
set ls to "livestreamer"
set con to "480p -o"
else if result = {button returned:"Radio"} then
set outputExtension to ".mp3"
set sourceURL to "http://92.222.236.128:8006"
set ls to "ffmpeg -i"
set con to "-c copy"
else
return
end if
set fn to (setFileName(outputExtension))
display dialog "Record now or later?" buttons {"Now", "Later", "Cancel"} default button 1
if result = {button returned:"Now"} then
set endTime to text returned of (display dialog "Please set the time to end recording. (Leave 'hhmm' if you want to record continuously.) " with title "Timer" default answer "hhmm" buttons {"Cancel", "Set"} default button 2)
set windowInfo to recordMedia(ls, sourceURL, con, (POSIX path of pathToShraddha as string), fn)
finishTime(endTime, windowInfo)
else if result = {button returned:"Later"} then
-- get time to be set---
set theTime to text returned of (display dialog "Please set the time to start recording." with title "Timer" default answer "hhmm" buttons {"Cancel", "Set"} default button 2)
if ((theTime as string) is equal to "hhmm") then
display dialog "Time is not set correctly"
return
end if
set endTime to text returned of (display dialog "Please set the time to end recording. (Leave 'hhmm' if you want to record continuously.) " with title "Timer" default answer "hhmm" buttons {"Cancel", "Set"} default button 2)
display dialog (getTimeInHoursAndMinutes())
display dialog theTime
set i to 0
repeat while (getTimeInHoursAndMinutes()) is less than theTime
if (i = 0) then
set i to (i + 1)
recordMedia("", "", "", "", "")
end if
delay 60
end repeat
finishTime(endTime, (recordMedia(ls, sourceURL, con, (POSIX path of pathToShraddha as string), fn)))
else
return
end if
-- This method generates the file name
on setFileName(outputExt)
set fileName to do shell script "date +'%Y-%m-%d_%H-%M-%S'"
set outputExt to the outputExt as string
set fileName to ("STV_" & fileName as string) & outputExt
return fileName as string
end setFileName
-- This method gives the current time in "hhmm" format (24hr)
on getTimeInHoursAndMinutes()
set timeStr to time string of (current date)
set hrStr to (characters 1 thru -10 of timeStr as string)
if ((count hrStr) is less than 2) then
set timeStr to ((0 & timeStr) as string)
end if
set ampm to (characters -2 thru -1 of timeStr as string)
if ((ampm as string) is equal to "PM") then
if ((hrStr as integer) is less than 12) then
set hrStr to (((hrStr as integer) + 12) as string)
end if
else
if ((hrStr as integer) = 12) then
set hrStr to (0 as string)
end if
if ((count hrStr) is less than 2) then
set hrStr to ((0 & hrStr) as string)
end if
end if
set mStr to (characters 4 thru 5 of timeStr as string)
set timeStr to (hrStr) & (mStr)
return timeStr as string
end getTimeInHoursAndMinutes
-- This method Record the stream --
on recordMedia(ls, sourceURL, con, pathToShraddhaString, fn)
tell application "Terminal"
set windowInfo to do script "caffeinate -i " & ls & space & sourceURL & space & con & space & pathToShraddhaString & fn
activate of windowInfo
end tell
return windowInfo
end recordMedia
-- This method end recording --
on finishTime(endTime, windowInfo)
if ((endTime as string) is equal to "hhmm") then
else
repeat while (getTimeInHoursAndMinutes()) is less than endTime
delay 60
end repeat
tell application "Terminal"
-- reopen
activate of windowInfo
--tell application "System Events" to keystroke "q"
tell application "System Events" to keystroke "c" using {control down}
end tell
end if
end finishTime
Не могли бы вы помочь мне в разработке сценария для автоматизации извлечения URL-адреса Livestream при каждом запуске сценария?
Спасибо.