@@ -5014,6 +5014,9 @@ sub get_verpids {
5014
5014
if ( ( ! $prog -> {type } || $prog -> {type } eq ' tv' ) ) {
5015
5015
$rc_html = $prog -> get_verpids_html( $ua );
5016
5016
}
5017
+ elsif ( $prog -> {type } eq ' radio' ) {
5018
+ $rc_html = $prog -> get_verpids_html_radio( $ua );
5019
+ }
5017
5020
# ensure title info extracted
5018
5021
$prog -> parse_title();
5019
5022
return 0 if ! $rc_json || ! $rc_html ;
@@ -5093,6 +5096,22 @@ sub get_verpids_json {
5093
5096
return 0;
5094
5097
}
5095
5098
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 " \n INFO: 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
+
5096
5115
# Return hash of version => verpid given a PID
5097
5116
# and fill in minimal metadata
5098
5117
# Scrapes HTML from episode page: https://www.bbc.co.uk/iplayer/episode/<pid>
@@ -5112,6 +5131,9 @@ sub get_verpids_html {
5112
5131
main::logger " \n INFO: No metadata for '$version ' version retrieved from iPlayer site (HTML)\n " if $opt -> {verbose };
5113
5132
next ;
5114
5133
}
5134
+ unless ( $prog -> {releaseyear } ) {
5135
+ $prog -> {releaseyear } = $1 if $html =~ / <span.*?>First shown<\/ span><span.*?>.*?(\d {4})<\/ span>/i ;
5136
+ }
5115
5137
my $config = $1 if $html =~ / bind\(\{\s *"player":(.*?)\<\/ script\> /s ;
5116
5138
unless ($config ) {
5117
5139
$config = $1 if $html =~ / data-playable='(.*?)'/s ;
@@ -5437,6 +5459,7 @@ sub get_metadata {
5437
5459
$prog -> {series } = " Series $seriesnum " if $seriesnum && $prog -> {series } && $prog -> {nameshort } && $prog -> {series } eq $prog -> {nameshort };
5438
5460
$prog -> {series } ||= " Series $seriesnum " if $seriesnum ;
5439
5461
$prog -> {seriessort } = $prog -> {series } || $prog -> {firstbcastyear };
5462
+ $prog -> {releaseyear } ||= $prog -> {firstbcastyear };
5440
5463
5441
5464
# Do this for each version tried in this order (if they appeared in the content)
5442
5465
for my $version ( sort keys %{ $prog -> {verpids } } ) {
0 commit comments