@@ -5644,17 +5644,22 @@ sub fetch_episodes_recursive {
5644
5644
$title =~ s / ^BBC[-\s ]+[^-]+[-\s ]+// g ;
5645
5645
$title =~ s / [-\s ]+[^-]+[-\s ]+BBC$// g ;
5646
5646
}
5647
- my @episodes = $dom -> findnodes(' //div [@data-pid]' );
5647
+ my @episodes = $dom -> findnodes(' //* [@data-pid]' );
5648
5648
if ( @episodes ) {
5649
5649
for my $episode ( @episodes ) {
5650
5650
my $pid = $episode -> findvalue(' @data-pid' );
5651
5651
next unless $pid ;
5652
5652
next if $seen {$pid };
5653
5653
$seen {$pid } = 1;
5654
- my $prog_episode = $episode -> findvalue(' .//span[contains(@class,"programme__title")]/span' );
5655
- my $name2 = $episode -> findvalue(' .//span[contains(@class,"programme__subtitle")]' );
5654
+ my $prog_episode ;
5655
+ my $name2 ;
5656
+ my @prog_titles = $episode -> findnodes(' .//*[contains(@class,"programme__titles")]' );
5657
+ for my $prog_title ( @prog_titles ) {
5658
+ $prog_episode = $prog_title -> findvalue(' .//*[contains(@class,"programme__title")]' );
5659
+ $name2 = $prog_title -> findvalue(' .//*[contains(@class,"programme__subtitle")]' );
5660
+ }
5656
5661
my $prog_name = $name2 ? " $title : $name2 " : $title ;
5657
- my $prog_desc = $episode -> findvalue(' .//p [contains(@class,"programme__synopsis")]/span ' );
5662
+ my $prog_desc = $episode -> findvalue(' .//* [contains(@class,"programme__synopsis")]/* ' );
5658
5663
unless ( $name2 ) {
5659
5664
if ( $prog_episode =~ s / ((?:Series|Cyfres) \d +(\s +Reversions)?)[, :]+// ) {
5660
5665
$prog_name .= " : $1 " ;
@@ -5664,7 +5669,7 @@ sub fetch_episodes_recursive {
5664
5669
}
5665
5670
}
5666
5671
unless ( $last_page ) {
5667
- $last_page = $dom -> findvalue(' //li [contains(@class,"pagination__page--last")]/a' );
5672
+ $last_page = $dom -> findvalue(' //* [contains(@class,"pagination__page--last")]/ /a' );
5668
5673
}
5669
5674
last unless $last_page ;
5670
5675
$last_page =~ s / (^\s +|\s +$)// g ;
@@ -5687,16 +5692,16 @@ sub fetch_episodes_recursive {
5687
5692
last unless $html ;
5688
5693
my $dom = XML::LibXML-> load_html(string => $html , recover => 1, suppress_errors => 1);
5689
5694
if ( ! $check_series_nav ) {
5690
- my @hrefs = $dom -> findnodes(' //nav [contains(@class,"series-nav")]/ul/li /a/@href' );
5695
+ my @hrefs = $dom -> findnodes(' //* [contains(@class,"series-nav")]//a/@href' );
5691
5696
push @urls , " https://www.bbc.co.uk" .$_ -> findvalue(' .' ) for @hrefs ;
5692
5697
$has_series_nav = @hrefs ;
5693
5698
$check_series_nav = 1;
5694
5699
}
5695
5700
unless ( $channel ) {
5696
- $channel = $dom -> findvalue(' //div [contains(@class,"hero-header__label")]' );
5701
+ $channel = $dom -> findvalue(' //* [contains(@class,"hero-header__label")]' );
5697
5702
}
5698
5703
unless ( $title ) {
5699
- $title = $dom -> findvalue(' //h1 [contains(@class,"hero-header__title")]' );
5704
+ $title = $dom -> findvalue(' //* [contains(@class,"hero-header__title")]' );
5700
5705
unless ( $title ) {
5701
5706
$title = $dom -> findvalue(' //title' );
5702
5707
}
@@ -5705,18 +5710,18 @@ sub fetch_episodes_recursive {
5705
5710
$title =~ s / ^BBC[-\s ]+[^-]+[-\s ]+// g ;
5706
5711
$title =~ s / [-\s ]+[^-]+[-\s ]+BBC$// g ;
5707
5712
}
5708
- my @episodes = $dom -> findnodes(' //div[contains(@class,"list__grid")]/ul/li' );
5713
+ my $name2 = $dom -> findvalue(' //*[contains(@class,"series-nav")]//*[contains(@class,"series-nav__button--active")]/*' );
5714
+ my @episodes = $dom -> findnodes(' //*[contains(@class,"list__grid")]//*[contains(@class,"grid__item")]' );
5709
5715
if ( @episodes ){
5710
5716
for my $episode ( @episodes ) {
5711
- my $item = $episode -> findvalue(' .//div [contains(@class,"content-item")]/a /@href' );
5717
+ my $item = $episode -> findvalue(' .//a [contains(@class,"content-item-root ")]/@href' );
5712
5718
my $pid = $1 if $item =~ m { /episode/([a-z0-9]+)} ;
5713
5719
next unless $pid ;
5714
5720
next if $seen {$pid };
5715
5721
$seen {$pid } = 1;
5716
- my $prog_episode = $episode -> findvalue(' .//div[contains(@class,"content-item__title")]' );
5717
- my $name2 = $episode -> findvalue(' .//div[contains(@class,"content-item__title")]/span[1]' );
5722
+ my $prog_episode = $episode -> findvalue(' .//*[contains(@class,"content-item-root__meta--with-label")]' );
5718
5723
my $prog_name = $name2 ? " $title : $name2 " : $title ;
5719
- my $prog_desc = $episode -> findvalue(' .//div [contains(@class,"content-item__info__secondary ")]/div[contains(@class,"content-item__description") ]' );
5724
+ my $prog_desc = $episode -> findvalue(' .//* [contains(@class,"content-item-root__meta-label ")][1 ]' );
5720
5725
unless ( $name2 ) {
5721
5726
if ( $prog_episode =~ s / ((?:Series|Cyfres) \d +(\s +Reversions)?)[, :]+// ) {
5722
5727
$prog_name .= " : $1 " ;
@@ -5726,7 +5731,7 @@ sub fetch_episodes_recursive {
5726
5731
}
5727
5732
}
5728
5733
unless ( $last_page ) {
5729
- $last_page = $dom -> findvalue(' //div [contains(@class,"list__pagination")]//ol [contains(@class,"pagination__list")]/li [contains(@class,"pagination__number")][last()]//a/span/span [1]' );
5734
+ $last_page = $dom -> findvalue(' //* [contains(@class,"list__pagination")]//* [contains(@class,"pagination__list")]//* [contains(@class,"pagination__number")][last()]//*[contains(@class,"button__text")]/* [1]' );
5730
5735
}
5731
5736
last unless $last_page ;
5732
5737
$last_page =~ s / (^\s +|\s +$)// g ;
0 commit comments