[mythtvnz] epgsnoop/xmltv-proc-nz/tv_grab_nz-py

David Moore dmoo1790 at ihug.co.nz
Sun Oct 19 04:00:32 BST 2014


On 19/10/14 13:08, Aaron Pelly wrote:
> On 19/10/14 11:33, David Moore wrote:
>> On 18/10/14 20:55, Aaron Pelly wrote:
>>> TL;DR Comments requested for a replacement xmltv grabber for NZ
>>>
>>> I've been thinking about how to string all this together in an xmltv 
>>> friendly way.
>>>
>>> My thoughts, based on my progress so far:
>>> 1) Change mhegepgsnoop to invent xmltv channel names based on 
>>> somehting like trim(name)+'.freeview.nz' and return all channel 
>>> data, regardless of which channels interest you. We have to decode 
>>> it all anyway. This means mhegepgsnoop no longer needs 
>>> configuration. But will probably mean renaming some of your channels 
>>> in Myth. Can also make it handle utf-8 characters properly.
>>>
>>> 2) Process the data as per the xmltv spec, to exclude everything 
>>> that is not interesting. This should be easy enough to do by 
>>> modifying an existing grabber. The recommended new grabbers do seem 
>>> more feature-complete than our current one.
>>>
>>> 3) Within the modified grabber, call xmltv-proc-nz to augment any 
>>> remaining data. This processes the minimum amount of data, which is 
>>> a good thing.
>>>
>>> I'm kind of reluctant to make yet another copy of an mheg reader, 
>>> knowing that my copy will surely fall into disrepair at some stage. 
>>> Perhaps the author would care to comment? On the other hand, the 
>>> code could really do with some comments and a bit of a clean up. 
>>> Caching would be good too, for testing. And it might be interesting 
>>> to make it Python 3 as well.
>>>
>>> As for utf-8; I haven't had any to work with yet, because they have 
>>> been missing in the guide data. I am confident this can be made to 
>>> work properly with only minor changes to existing code.
>>>
>>> I feel like I'm very close to something good here. xmltv-proc-nz 
>>> probably needs more options, but, from where I am, this should be 
>>> crazy-easy to implement.
>>>
>>> Anyway, I'm kind of thinking out loud here, but if anyone has an 
>>> opinion I'm all ears.
>>>
>> Hi Aaron,
>>
>> I'm the primary author of mhegepgsnoop. Others have made useful 
>> contributions and I'm happy to accept changes but I have one 
>> non-negotiable rule. Any changes must be backward compatible. So if 
>> you want to _extend_ mhegepgsnoop in some way then go for it. Just 
>> add another command line option and the help for that option.
>
> Awesome! This is great news.
>
>> Getting and parsing the mheg data was by far the trickiest part of 
>> the code. So if it needs to change in future there is quite a steep 
>> learning curve to acheive reasonable understanding of this part of 
>> the code.
>
> Now the hard part has been done I might see what else is in there.
>
>> But, hey, if you're up for the challenge then go for it. :) Maybe 
>> you'll work out a better way to get the data.
>
> Ha!
>
>> Offer to clean up code and add more comments (where really useful) 
>> gratefully accepted. :) Actually I know the code is a bit spaghetti. 
>> Knowing what I know now I would write it much differently if I 
>> started now.
>
> My code rarely starts with a good plan, and I've been writing (not 
> Python!) for years. Hard problems like this are the best at causing 
> temporary code that "I'll get back to"
>
>> it ain't broke so I don't fix it.
>
> Good reasoning.
>
>>
>> BTW I really don't see Python 3 compatibility as something that needs 
>> to be tackled soon. Fine if you want to do it but it seems to me that 
>> Python 2 will be around for a while yet. Just check out the number of 
>> libs available for 2 vs 3. 2 won't go away until 3 has a similar 
>> number of libs available.
>
> Yes, but I can't write Python, so I /really/ don't want to be able to 
> write Python 2 and Python 3.
>
> One issue though: Do you see porting to Python 3 as breaking backwards 
> compatibility?
>
> Anyway, as I said; it's early days. I'll have a better opinion once 
> I've hacked at the code a bit.
>
> Aaron.
>
My understanding is that Python 3 is deliberately not backward 
compatible with Python 2. So I guess it would be tedious to refactor the 
code so it runs on both 2 and 3. I think I'm saying that support for 3 
would be a fork of the 2 code and both would have to be maintained in 
parallel for a while until everyone moves to 3.



More information about the mythtvnz mailing list