This patch has been incorporated into the get_iplayer Git repo. Instructions for updating are here:
https://github.com/dinkypumpkin/get_iplayer/wiki/instructions Commit message and patch follow. The XML format of programme schedule feeds changed at some point so that get_iplayer could no longer parse it. This broke --refresh-future. Parsing was updated to use new format. --- get_iplayer | 90 ++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 56 insertions(+), 34 deletions(-) diff --git a/get_iplayer b/get_iplayer index f726ca0..f397cf0 100755 --- a/get_iplayer +++ b/get_iplayer @@ -6702,38 +6702,60 @@ sub get_links { $xml = main::request_url_retry($ua, $url, 3, '.', "WARNING: Failed to get programme schedule feed for $channel_id from iplayer site\n"); decode_entities($xml); - # <broadcast> - # <start>2010-01-11T11:25:00Z</start> - # <end>2010-01-11T11:30:00Z</end> - # <duration>300</duration> - # <episode> - # <pid>b00l6wjs</pid> - # <title>Vampire Bats</title> - # <short_synopsis>How to survive the most dangerous - # situations that Mother Nature can chuck at - # you.</short_synopsis> - # <medium_synopsis>A light-hearted look at how to survive - # the most dangerous situations that Mother Nature can - # chuck at you.</medium_synopsis> - # <long_synopsis></long_synopsis> - # <iplayer> - # <audio_expires /> - # <video_expires>2010-01-18T11:29:00Z</video_expires> - # </iplayer> - # <position>16</position> - # <series> - # <pid>b00kh5x3</pid> - # <title>Shorts</title> - # </series> - # <brand> - # <pid>b00kh5y8</pid> - # <title>Sam and Mark's Guide to Dodging Disaster</title> - # </brand> - # </episode> - # </broadcast> + # <broadcast is_repeat="1" is_blanked="0"> + # <pid>p00l44r8</pid> + # <start>2011-10-24T00:45:00+01:00</start> + # <end>2011-10-24T01:15:00+01:00</end> + # <duration>1800</duration> + # <programme type="episode"> + # <pid>b016c73c</pid> + # <position>3</position> + # <title>Episode 3</title> + # <short_synopsis>With team captains Noel Fielding and Phill Jupitus, and a surprise special guest host.</short_synopsis> + # <media_type>audio_video</media_type> + # <duration>2100</duration> + # <display_titles> + # <title>Never Mind the Buzzcocks</title> + # <subtitle>Series 25, Episode 3</subtitle> + # </display_titles> + # <first_broadcast_date>2011-10-17T22:00:00+01:00</first_broadcast_date> + # <ownership> + # <service type="tv" id="bbc_two" key="bbctwo"> + # <title>BBC Two</title> + # </service> + # </ownership> + # <programme type="series"> + # <pid>b015skhy</pid> + # <title>Series 25</title> + # <position>25</position> + # <expected_child_count>12</expected_child_count> + # <first_broadcast_date>2011-10-03T22:00:00+01:00</first_broadcast_date> + # <programme type="brand"> + # <pid>b006v0dz</pid> + # <title>Never Mind the Buzzcocks</title> + # <position /> + # <expected_child_count /> + # <first_broadcast_date>2007-06-20T22:00:00+01:00</first_broadcast_date> + # <ownership> + # <service type="tv" id="bbc_two" key="bbctwo"> + # <title>BBC Two</title> + # </service> + # </ownership> + # </programme> + # </programme> + # <available_until>2011-10-30T23:29:00Z</available_until> + # <actual_start>2011-10-17T22:30:00+01:00</actual_start> + # <is_available_mediaset_pc_sd>1</is_available_mediaset_pc_sd> + # <is_legacy_media>0</is_legacy_media> + # <media format="video"> + # <expires>2011-10-30T23:29:00Z</expires> + # <availability>11 days left to watch</availability> + # </media> + # </programme> + # </broadcast> # get list of entries within <broadcast> </broadcast> tags - my @entries = split /<broadcast>/, $xml; + my @entries = split /<broadcast[^s]/, $xml; # Discard first element == header shift @entries; main::logger "INFO: Got ".($#entries + 1)." programmes\n" if $opt->{verbose}; @@ -6744,11 +6766,11 @@ sub get_links { my $entry_flat = $entry; $entry_flat =~ s/\n/ /g; - $pid = $1 if $entry =~ m{<episode>.*?<pid>\s*(.+?)\s*</pid>}; + $pid = $1 if $entry =~ m{<programme\s+type="episode">.*?<pid>\s*(.+?)\s*</pid>}; - $episode = $1 if $entry =~ m{<episode>.*?<title>\s*(.*?)\s*</title>}; - $nametitle = $1 if $entry =~ m{<brand>.*?<title>\s*(.*?)\s*</title>.*?</brand>}; - $seriestitle = $1 if $entry =~ m{<series>.*?<title>\s*(.*?)\s*</title>.*?</series>}; + $episode = $1 if $entry =~ m{<programme\s+type="episode">.*?<title>\s*(.*?)\s*</title>}; + $nametitle = $1 if $entry =~ m{<programme\s+type="brand">.*?<title>\s*(.*?)\s*</title>.*?</programme>}; + $seriestitle = $1 if $entry =~ m{<programme\s+type="series">.*?<title>\s*(.*?)\s*</title>.*?</programme>}; # Set name if ( $nametitle && $seriestitle ) { -- 1.7.5.4 _______________________________________________ get_iplayer mailing list [email protected] http://lists.infradead.org/mailman/listinfo/get_iplayer

