Skip to content

Commit 46135c6

Browse files
committed
added <releaseyear> substitution parameter
Year of programm original release if available, else <firstbcastyear>
1 parent 68f31b0 commit 46135c6

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

get_iplayer

+23
Original file line numberDiff line numberDiff line change
@@ -5014,6 +5014,9 @@ sub get_verpids {
50145014
if ( ( ! $prog->{type} || $prog->{type} eq 'tv' ) ) {
50155015
$rc_html = $prog->get_verpids_html( $ua );
50165016
}
5017+
elsif ( $prog->{type} eq 'radio' ) {
5018+
$rc_html = $prog->get_verpids_html_radio( $ua );
5019+
}
50175020
# ensure title info extracted
50185021
$prog->parse_title();
50195022
return 0 if ! $rc_json || ! $rc_html;
@@ -5093,6 +5096,22 @@ sub get_verpids_json {
50935096
return 0;
50945097
}
50955098

5099+
sub get_verpids_html_radio {
5100+
my ( $prog, $ua ) = @_;
5101+
my $pid = $prog->{pid};
5102+
my $html;
5103+
my $url = "https://www.bbc.co.uk/sounds/play/$pid";
5104+
main::logger "INFO: Sounds metadata URL (HTML) [$version] = $url\n" if $opt->{verbose};
5105+
$html = main::request_url_retry( $ua, $url, 3, undef, undef, undef, undef, 1 );
5106+
if ( ! $html ) {
5107+
main::logger "\nINFO: No metadata retrieved from Sounds site (HTML)\n" if $opt->{verbose};
5108+
return;
5109+
}
5110+
unless ( $prog->{releaseyear} ) {
5111+
$prog->{releaseyear} = $1 if $html =~ /<div.*?><span.*?>Released On.*?<\/span>.*?(\d{4})<\/div>/i;
5112+
}
5113+
}
5114+
50965115
# Return hash of version => verpid given a PID
50975116
# and fill in minimal metadata
50985117
# Scrapes HTML from episode page: https://www.bbc.co.uk/iplayer/episode/<pid>
@@ -5112,6 +5131,9 @@ sub get_verpids_html {
51125131
main::logger "\nINFO: No metadata for '$version' version retrieved from iPlayer site (HTML)\n" if $opt->{verbose};
51135132
next;
51145133
}
5134+
unless ( $prog->{releaseyear} ) {
5135+
$prog->{releaseyear} = $1 if $html =~ /<span.*?>First shown<\/span><span.*?>.*?(\d{4})<\/span>/i;
5136+
}
51155137
my $config = $1 if $html =~ /bind\(\{\s*"player":(.*?)\<\/script\>/s;
51165138
unless ($config) {
51175139
$config = $1 if $html =~ /data-playable='(.*?)'/s;
@@ -5437,6 +5459,7 @@ sub get_metadata {
54375459
$prog->{series} = "Series $seriesnum" if $seriesnum && $prog->{series} && $prog->{nameshort} && $prog->{series} eq $prog->{nameshort};
54385460
$prog->{series} ||= "Series $seriesnum" if $seriesnum;
54395461
$prog->{seriessort} = $prog->{series} || $prog->{firstbcastyear};
5462+
$prog->{releaseyear} ||= $prog->{firstbcastyear};
54405463

54415464
# Do this for each version tried in this order (if they appeared in the content)
54425465
for my $version ( sort keys %{ $prog->{verpids} } ) {

0 commit comments

Comments
 (0)