Manual Recording Feature

@NetworkGuy -
This is the thread where I introduced it so you can see more details:

It does if you know how to use it, but I consider it "Advanced" and not for the casual user.
I still use the method of modifying a json template for all the manual recordings I do. This lets me modify any data in the json payload, including making it look identical to a scheduled recording from a pass with the same metadata.

I'm intrigued by this statement. :thinking:

Are you saying that you are using the manual method to schedule recurring recordings (more than one) with a single request just like a pass?

1 Like

I do that with a script. So I have to modify the script for channel, date, time, duration and recurrence.
For a single manual recording I drag and drop a json payload on a Windows cmd file.

Cool! :sunglasses:

I'm really intrigued by this word in the context of a manual recording. In my mind, a manual recording is a one time shot.

Maybe you could provide an example and/or use case.
(I'm not sure if this is derailing this thread now)

Just a simple shell script that I scheduled to run at 2pm every Sunday which scheduled manual recordings for the week on Monday-Friday at 2pm.

I modified that for others I used that ran every hour for 2 days, every week on certain days and times, etc.

#!/bin/sh
# Create 60 minute manual recording on channel 3777 with the Title 'Shepherds Chapel' starting in 24 hours and repeating at the same time every day for 5 days
# No longer using - found EPG source
_CH=3777
_START=$(($(date +%s) + 86400))
_DUR=3600
_TITLE="Shepherds Chapel"
_DESC="Shepherds Chapel 2PM weekday recording"

for _DAYNUMBER in 1 2 3 4 5
do
scheduled_job() {
cat << EOF
{
   "Name": "${_TITLE}",
   "Time": ${_START},
   "Duration": ${_DUR},
   "Channels": ["${_CH}"],
   "Airing": {
      "Source": "manual",
      "Channel": "${_CH}",
      "Time": ${_START},
      "Duration": ${_DUR},
      "Title": "${_TITLE}",
      "Summary": "${_DESC} ${_DAYNUMBER}",
      "Image": "http://192.168.1.4:8189/dvr/uploads/3/content",
      "SeriesID": "manual/3777"
   }
}
EOF
}
curl -XPOST http://192.168.1.4:8189/dvr/jobs/new --data-binary "$(scheduled_job)"
# increment _START value by a day
_START=$(($_START + 86400))
done

To give credit, I borrowed this script from racameron and modified it.

Thank you for the explanation and the example.
This is a very special use case.

Very interesting. :thinking: :slightly_smiling_face:

I'm an living edge case!
Here's one where I was trying to schedule recording the "Curious Moment" on the Curiosity channel.

#!/bin/sh
# Create 10.5 minute manual recordings every hour for one week, beginning at _START
_TITLE="Curiosity Moment"
# Start at Sunday, November 26, 2023 12:49:30 AM GMT-08:00
_START=1700988570
# Duration 10 minutes and 30 seconds
_DUR=630
# Frndly 9031 Curiosity channel
_CH=9031
_DESCR="Curiosity Moment"
_SERIESID="manual/9031"
# Every day of the week
for _DAYNAME in SUN MON TUE WED THU FRI SAT
do
# Every hour from 12:49:30 AM
for _HOURNUM in 0049 0149 0249 0349 0449 0549 0649 0749 0849 0949 1049 1149 1249 1349 1449 1549 1649 1749 1849 1949 2049 2149 2249 2349
do
# wait 0.7 seconds between POSTS
sleep 0.7
scheduled_job() {
cat << EOF
{
   "Name": "${_TITLE} ${_DAYNAME} at ${_HOURNUM}",
   "Time": ${_START},
   "Duration": ${_DUR},
   "Channels": ["${_CH}"],
   "Airing": {
      "Source": "manual",
      "Channel": "${_CH}",
      "Time": ${_START},
      "Duration": ${_DUR},
      "Title": "${_TITLE}",
      "Summary": "${_DESCR} ${_DAYNAME} at ${_HOURNUM}",
      "SeriesID": "${_SERIESID}"
   }
}
EOF
}
curl -XPOST http://192.168.1.4:8389/dvr/jobs/new --data-binary "$(scheduled_job)"
# increment _START value by 60 minutes
_START=$(($_START + 3600))
done
done

That gave me enough to edit and create an Imported Video Channel.

Another one off example trying to get a 4K recording from FS1

#!/bin/sh
# Create 30 second manual recordings every minute, beginning at _START
_TITLE="FS1-6197 30 second 4K Test recording Thu 10/19"
_START=1697758200
_DUR=30
_CH=6197
_SERIESID="manual/6197"
for _HOURNUM in 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710
do
# wait 1 seconds between POSTS
sleep 1
scheduled_job() {
cat << EOF
{
   "Name": "${_TITLE}",
   "Time": ${_START},
   "Duration": ${_DUR},
   "Channels": ["${_CH}"],
   "Airing": {
      "Source": "manual",
      "Channel": "${_CH}",
      "Time": ${_START},
      "Duration": ${_DUR},
      "Title": "${_TITLE} at ${_HOURNUM}",
      "Summary": "${_TITLE} at ${_HOURNUM}",
      "SeriesID": "${_SERIESID}"
   }
}
EOF
}
curl -XPOST http://192.168.1.4:8289/dvr/jobs/new --data-binary "$(scheduled_job)"
# increment _START value by a minute
_START=$(($_START + 60))
done

Here is my problem: I could not find any documentation of what goes in the time parameter of the advanced pass. Based on what I entered, I either has no recordings or dozens which were not the right time.

What is the correct format for Today at 10:00pm? Because entering that in the advanced pass did NOT work.

BTW.....Where is the documentation of what should be entered in the fields of the advanced pass?

Use Case Example:

Multiple times the published schedule does not match the actual broadcast for later that day. (Yesterday for example.) If you hear the schedule has changed and you want to record something, you should not have to be forced to learn JSON to create a simple one-time recording.

Based on the user created GUI's it should be super simple to add a page to the web administration to create a manual recording.

Time CONTAINS Monday 10pm

See this section of the Forum

Official Documentation is here Channels Support — Support Articles and here Knowledge Base - Channels Community

1 Like

Sorry, not finding anything about the format of the time field.

When creating passes:

When using the API to create a manual recording, it is in Epoch time.

I am not using the API. I am using the Advanced Pass feature.

But there is NO documentation on what needs to be entered the in TIME field.

I posted 2 answers. The first was specific to the time formats used in Channels' webUI fields, which is exactly what you asked for. (It does require reading some technical documentation.) The second was about time formatting for manual recordings. (Conveniently, that is also the topic of this thread.)

In your screenshot it shows "Friday 8:00pm" as a placeholder. That is the expected format.

So you could use any day of the week and time combination in the same format:

Monday 10:00pm
Wednesday 3:30pm

See also:

Full list of supported matchers:

I did a short manual recording earlier.

I can see it in DVR > Manage:

It is present on the disk:

All good but...

I don't see it in Library > TV Shows > Recently Added:

This is on the server and I also confirmed the same with a client (visible on the "Recordings" screen only).

Is it normal? Maybe it is. I don't remember if that was mentioned before.

What did you use to create the manual recording?
I normally don't use OliveTin (I use my own scripts), but just tried with OliveTin and it works.




Screenshot 2024-08-10 at 17-21-36 Channels TV Shows
Screenshot 2024-08-10 at 17-21-01 Channels Browse TV Shows

Also works when selecting to record as a Movie


Screenshot 2024-08-10 at 17-28-23 Channels Movies
Screenshot 2024-08-10 at 17-28-55 Channels Browse Movies

Thank you for your reply.

I implemented the functionality in javascript so that it can be used with a Chrome extension right in the browser.
I never got OliveTin to work properly on my Windows machine so I'm trying to create an alternative option.

It is strange that the recording worked but it didn't show up in recently added.

I'm wondering why that is.

Would you mind showing the file details that shows the json attributes (airing data, program ID, etc.)?

Maybe I'm missing something.

I'll have to dig up my old Python script to see if I get the same outcome.