A message from Auntie

Ian Andrews ian.andrews1969 at gmail.com
Fri Oct 31 05:28:55 PDT 2014


I wish to extend my thanks to Ross and User Name, the fix described here is 
working fairly well.  The patch as described works on my Raspberry Pi with 
get_iplayer version 2.88

edit /usr/bin/get_iplayer and modify as described.

I was then able to refresh with
get_iplayer --refresh --type=radio --refreshfuture
get_iplayer --refresh --type=TV --refreshfuture

and then run my pvr search with get_iplayer --pvr


I have many PVR search strings, to pick up radio comedy shows and things 
that interest me, eg Sherlock Holmes.  It is this last part that I find 
get_iplayer so useful for - I have listened to a number of radio programmes 
discussing or about Sherlock Holmes and other interests that I would have 
entirely missed if it wasn't for the search capabilities of get_iplayer.

I do hope this fix, or a variant thereof, can be included in a new update 
soon.  It's better than nothing !

Interestingly, I notice that whilst most of the episode numbers are messed 
up, not all of them are.

After running my pvr, I downloaded the following radio programmes :

Count Arthur Strong S06E00 (Should be E05)
Down The Line S03E00 (Should be E04)
Heresy S08E01 (unsure at the moment)
The Burkiss Way S04E00 (Probably E01)
The Unbelievable Truth S05E05 (seemingly correct)

I wonder why the last one was correctly named and the others weren't?

Ian



-----Original Message----- 
From: Ross
Sent: Friday, October 31, 2014 10:20 AM
To: Roger Bell_West
Cc: get_iplayer at lists.infradead.org
Subject: Re: A message from Auntie

The feeds are gone, but at least for now the bbc schedules are still there. 
I am not sure you need scraping … yet.

Here is one of the schedules: 
http://www.bbc.co.uk/bbctwo/programmes/schedules/hd/this_week.xml

This gives an option for an immediate workaround to get the pvr going again 
(as already pointed out by User name), and also potentially gives a longer 
term solution.

As a side note I looked at this stuff a week ago to see how easy it would be 
to extend the search for 30 days, and I believe the schedule data will allow 
us to do that.

WORKAROUND:

I will quote User Name.  I also have this running on my machine, only took a 
couple of minutes to patch and seems to work OK (barring a small issue 
getting the episode numbers).

—— START
I found that by co-opting (and modifying slightly the behaviour of) 
the --refreshfuture cmdline option, I was able to re-populate the cache with 
a fair amount of stuff. I have modified the 2.86 git version of the 
get_iplayer.pl script I have on Windows (precisely, from git branch 
f109d22).


In the get_links sub, I changed schedule_feeds to:

   my @schedule_feeds = (
    "
http://www.bbc.co.uk/${channel_id
}/this_week.xml",
    "
http://www.bbc.co.uk/${channel_id
}/last_week.xml",
   );


and then reversed the sense of:

     # Don't create this prog instance if the availablity is in the past
     # this prevents programmes which never appear in iPlayer from being 
indexed
     next if Programme::get_time_string( $available ) < $now;


to:


     next if Programme::get_time_string( $available )> $now;


Now when I perform, e.g.:


"%Windir%\system32\cmd.exe" /c get_iplayer --refresh --type 
radio --refreshfuture

or

"%Windir%\system32\cmd.exe" /c get_iplayer --refresh --type 
tv --refreshfuture


my radio.cache (or tv.cache) is repopulated with a wealth of metadata.

Subsequently downloading content with this cache (at least I've tried for 
flashaaclow radio) leaves me with files populated with a (albeit 
wrong/generic iPlayer) thumbnail and what appears to be at least some of the 
correct tagging.


The only down-side so far seems to be that some progs are missing from 
before (e.g. Doctor Who Extra in the tv.cache). Presumably these are 
non-broadcast-schedule files, e.g. red-button-esque web-only iPlayer 
features.

——— END

Just add —refresh future to your commands.  e.g. 
get_iplayer —pvr —whitespace —refreshfuture

Once the cache is populated you can see it in the web gui, search, save new 
pvr (just do not press refresh cache!)

LONGTERM FIX

This is what I would do to fix it.

1) Split the existing schedule logic off to its own method, so that it can 
be called twice (to get past programs and to get future programs).
2) Remove the broken feed logic
3) Replace it with a call to the schedule logic method.  (NB: Doing this 
pulls this logic out into its own method, so it means that if the schedule 
xml disappears in the future and we need to do some web scraping, then we 
just need a new method to call instead)
4) Add the extract for episodenum from <position> in the xml.  (Not a biggy, 
but quick to implement).
5) Add some date logic to get the current date and look back further than 
the last_week.xml feed (this way we could get the full 30 days).

That is probably it.  Then the pvr and search functions should work fine. 
The web gui will also work.

That is my suggestion to fix it, not too hard, probably a few bugs or issues 
would need to be flushed out later, but certainly workable.
Please reply if you have some other wizardry in mind.

So any perl gurus out there who want to have a go.  If no one else does it I 
will probably have a look when I get a moment, not for a week or so though 
I might have to bring out the perl cookbook though.  Not great at perl.


On 31/10/2014, at 22:34, Roger Bell_West <roger at firedrake.org> wrote:

> On Fri, Oct 31, 2014 at 09:08:26AM -0000, Trevor Campbell Davis wrote:
>> It’s a pain, but I can easily manually source the PIDs of the
>> programmes that I want on a daily basis.  What I don’t want (or have
>> time) to do is to manually enter single command line instructions for
>> each programme when the previous one has finished downloading.  So a
>> script (resembling a queue) where I can enter multiple PIDs for
>> automatic sequential download would be really helpful.
>
> At the most basic level, you can just use the shell (this is for
> bash):
>
> for P in b00hslb0 b04mb11l b04mb6ck; do get_iplayer --type 
> radio --metadata generic --pid $P --get; done
>
> I have written a program to automate scraping, but I'm working on
> getting it into a suitable form for release.
>
> R
>
> _______________________________________________
> get_iplayer mailing list
> get_iplayer at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/get_iplayer


_______________________________________________
get_iplayer mailing list
get_iplayer at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/get_iplayer 




More information about the get_iplayer mailing list