Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#11152 closed Bug Report - General (fixed)

In Frontend/PlayRecording format of startime passed to network control is not as network control expects

Reported by: stephengrobertson@… Owned by: Chris Pinkham <cpinkham@…>
Priority: minor Milestone: 0.26.1
Component: MythTV - General Version: 0.26
Severity: medium Keywords:
Cc: Ticket locked: no

Description

http://192.168.0.3:6547/Frontend/PlayRecording?ChanId=9700&StartTime=2012-10-07T05:05:00Z

returns <bool>true</bool> but the recording does not play.

Frontend log gives Oct 7 11:49:48 bressay mythfrontend[19646]: I HttpServer59 services/frontend.cpp:132 (PlayRecording?) Frontend API: PlayRecording?, ChanID: 9700 StartTime?: 2012-10-07T05:05:00Z Oct 7 11:49:48 bressay mythfrontend[19646]: I CoreContext? playbackbox.cpp:3696 (processNetworkControlCommand) PlaybackBox?: NetworkControl?: Trying to PLAY program '9700' @ '20121007060500'

Using netcat play program 9700 2012007060500 gives ERROR: You are in playbackbox mode and this command is only for playback mode

play program 9700 2012-10-07T05:05:00Z gives ERROR: You are in playbackbox mode and this command is only for playback mode

but removing the 'Z' play program 9700 2012-10-07T05:05:00 works

My guess at what is happening( could be completely wrong!)

In services/frontend.cpp Frontend::PlayRecording?() builds the message as follows:

QString message = QString("NETWORK_CONTROL PLAY PROGRAM %1 %2 %3")

.arg(ChanID) .arg(starttime.toLocalTime().toString("yyyyMMddhhmmss")) .arg("12345");

In networkcontrol.cpp NetworkControl::processPlay() else if ((nc->getArgCount() >= 4) &&

(is_abbrev("program", nc->getArg(1))) && (nc->getArg(2).contains(QRegExp("
d+$"))) && (nc->getArg(3).contains(QRegExp(

"
d
d
d
d-
d
d-
d
dT
d
d:
d
d:
d
d$"))))

fails and we fall through to

else if (GetMythUI()->GetCurrentLocation?().toLower() != "playback")

{

return QString("ERROR: You are in %1 mode and this command is only "

"for playback mode") .arg(GetMythUI()->GetCurrentLocation?());

}

Attachments (1)

version.txt (871 bytes) - added by stephengrobertson@… 7 years ago.
Version

Download all attachments as: .zip

Change History (4)

Changed 7 years ago by stephengrobertson@…

Attachment: version.txt added

Version

comment:1 Changed 7 years ago by sutro@…

This issue began with MythTV 0.26. MythTV gives out datetime strings in the GetRecordedList? API, and inputting those same strings into the PlayRecording? API fails. Presumably, this was broken by the numerous refactorings and changes of internal handling of date and time between .25 and .26. MythTV should accept the date data it gives as input (as it does in all the other API calls). Only this one has been broken.

comment:2 Changed 7 years ago by Chris Pinkham <cpinkham@…>

Owner: set to Chris Pinkham <cpinkham@…>
Resolution: fixed
Status: newclosed

In b62198ffcada256ebf3c40c9c6c4be1615ae17ea/mythtv:

Fix mythfrontend services API /Frontend/PlayRecording? call.

We don't need to convert the specified starttime toLocalTime() anymore.

Copies 3eef99e from master.

Fixes #11236 and #11152 I believe.

comment:3 Changed 7 years ago by Raymond Wagner

Milestone: unknown0.26.1
Note: See TracTickets for help on using tickets.