[mythtv] [PATCH] Control duplicates by channel ID

David Shay david at shay.net
Sat Aug 4 06:47:41 UTC 2007


On 8/3/07, Bruce Markey <bjm at lvcm.com> wrote:
> I had some time this afternoon to play with dupchanid-2.patch
> and hope to find more time over the weekend. The patch itself
> looked good. The wording and scrolling on the options page
> should be fixed but these are cosmetic. However, as far as
> using this, I didn't get off the ground yet...
>
> David Shay wrote:
> > Attached is a patch that controls duplicates by channel ID.
> >
> > It adds a new option to the Scheduling Options recording rule screen
> > that can be set to either "Match duplicates Ignoring Channel ID"
> > (which is the current behavior), or the new behavior "Match duplicates
> > considering channel ID".
> >
> > You can then setup multiple record rules that either specify certain
> > channels or prefer certain inputs, and if the new match duplicates
> > setting is selected, you will get multiple copies of the same show.
> > My primary purpose for the patch is to be able to record both a
> > high-def and low-def version of the same show, but there are many
> > other uses as well as pointed out in other threads.
> >
> > I've created a new field called "dupchanid" in programinfo that
> > controls this with two new constant values -- kDupIgnoreChanID and
> > kDupConsiderChanID.  Yes, it could have been a boolean, but I
> > purposely did it this way so that it could be extensible later to
> > other things, such as just source ID or some other variant just by
> > setting new values. (perhaps the field shouldn't be called dupchanid,
> > then -- let me know if you've got a better name for it)  I've added
> > these to the to and from string lists and updated the protocol to
> > version 36 with this patch.  There is a a new field called dupchanid
> > in the record table as well, so an update to dbcheck.cpp is included
> > as well.
> >
> > The main changes to get this implemented were in the big scheduler
> > query in scheduler.cpp as well as in IsSameProgram in programinfo.cpp.
> >
> > I've tested this with and without programid's, and for both programs
> > on at the same time as well as those that are on at different times,
> > and it "works for me".  Please test and give me feedback.
>
> Can I assume that you are using mismatched callsigns? With
> matching callsigns, there are issues from the get go.
>
> First, the recordmatch table should only match showings for
> the one chanid if dupchanid is set. I did a quick hack in
> UpdateMatches():
>
> @@ -2034,6 +2034,7 @@
>             "                                      OR program.first = 0))) ")
>             .arg(kDupsExRepeats).arg(kDupsExGeneric).arg(kDupsFirstNew) +
>     QString(" AND channel.visible = 1 AND "
> +"(RECTABLE.dupchanid = 0 OR RECTABLE.chanid = program.chanid) AND "
>  "((RECTABLE.type = %1 " // allrecord
>  "OR RECTABLE.type = %2 " // findonerecord
>  "OR RECTABLE.type = %3 " // finddailyrecord
>
> This seems to do the job:
>
> mysql> select * from recordmatch where recordid=1325 order by starttime;
> +----------+--------+---------------------+----------+
> | recordid | chanid | starttime           | manualid |
> +----------+--------+---------------------+----------+
> |     1325 |   1003 | 2007-08-03 18:30:00 |        0 |
> |     1325 |   2123 | 2007-08-03 18:30:00 |        0 |
> |     1325 |   1003 | 2007-08-10 18:30:00 |        0 |
> |     1325 |   2123 | 2007-08-10 18:30:00 |        0 |
> +----------+--------+---------------------+----------+
> 4 rows in set (0.00 sec)
>
> mysql> select * from recordmatch where recordid=1325 order by starttime;
> +----------+--------+---------------------+----------+
> | recordid | chanid | starttime           | manualid |
> +----------+--------+---------------------+----------+
> |     1325 |   1003 | 2007-08-03 18:30:00 |        0 |
> |     1325 |   1003 | 2007-08-10 18:30:00 |        0 |
> +----------+--------+---------------------+----------+
> 2 rows in set (0.01 sec)
>
> The next problem was that the scheduling pages listed
> showings on the other chanid(s) as instances for the
> first rule preventing adding a second rule. This is pretty
> much the same hack for FromProgram() in programinfo.cpp:
>
> @@ -4609,7 +4622,8 @@
>         ProgramInfo *s;
>         for (s = schedList.first(); s; s = schedList.next())
>         {
> -            if (p->IsSameTimeslot(*s))
> +            if (p->IsSameTimeslot(*s) &&
> +                (s->dupchanid == 0 || p->chanid == s->chanid))
>             {
>                 p->recordid = s->recordid;
>                 p->recstatus = s->recstatus;
>
>
> I didn't get further than that before needing my machines for
> the evening. I'll play with it some more...
>
>
Attached are two new patches that address some of this but not all of it.

* Includes your two lines from above
* One additional change to PruneRedundants that I think makes it
finally schedule OK with the same callsign
* Rest of protocol changes for perl bindings and Mythweb
* Support for setting the flag via Mythweb

I tested this by forcing a new "record" entry in with the same
callsign.  I still couldn't get one in.  In fact, I'm not sure what
the right GUI for this should be.  For instance, if you are coming in
from the program guide, and you already have one defined, but the
"consider channel id is set", maybe there is another button choice
added to the list that says "add new rule for same channel/callsign".
Were you able to get a rule in with your change above or not?  Does
that GUI option make sense?

FYI, I used "build_translation.pl" according to the directions in
mythweb since I added some new text.  That appeared to delete quite a
few entries in the translation tables.  Upon further checking, they
are indeed now unused.  Chris Petersen, looking for any advice on
whether that's OK or not...  The attached mythweb patch includes all
of those deletions.  I didn't really add that much text, so I could
add those entries to all of the languages manually, I suppose.  What
has been the approach recently?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dupchanid-3.patch.gz
Type: application/x-gzip
Size: 4895 bytes
Desc: not available
Url : http://mythtv.org/pipermail/mythtv-dev/attachments/20070804/a9eaa6a2/attachment.bin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dupchanid-plugin.patch.gz
Type: application/x-gzip
Size: 16552 bytes
Desc: not available
Url : http://mythtv.org/pipermail/mythtv-dev/attachments/20070804/a9eaa6a2/attachment-0001.bin 


More information about the mythtv-dev mailing list