Changeset 118

Show
Ignore:
Timestamp:
10/21/06 22:02:08 (7 years ago)
Author:
lincoln
Message:

make set_order smarter with random ordering within quality groups

Files:
2 modified

Legend:

Unmodified
Added
Removed
  • shepherd

    r116 r118  
    33# "Shepherd" 
    44 
    5 my $version = '0.2.19'; 
     5my $version = '0.2.20'; 
    66 
    77# A wrapper for various Aussie TV guide data grabbers 
     
    15301530} 
    15311531 
     1532# set_order is used to set the order of datafiles that we present to the reconciler. 
     1533# typically we want at least one 'preferred' datasource in order to keep programme 
     1534# titles consistent even if we are switching grabbers all the time. 
     1535# for any grabbers not explicitly listed, we randomly order them while 
     1536# taking into account the 'quality' of the data they offer 
     1537 
    15321538sub set_order 
    15331539{ 
     
    15401546    } 
    15411547 
    1542     # and now set order 
     1548    # and now set order by whatever we have been instructed 
    15431549    my $order_num = 1; 
    15441550    if ($pref_order) { 
     
    15521558 
    15531559    # set order of any grabbers not specified in a random manner 
     1560    # set randomly while obeying data 'quality' field - so we always put higher quality 
     1561    # grabbers before lower-quality ones 
    15541562    foreach my $proggy (query_grabbers()) { 
    15551563        if ((!defined $components->{$proggy}->{order}) || ($components->{$proggy}->{order} == 0)) { 
    1556             $components->{$proggy}->{order} = $order_num+int(rand(1000)); 
     1564            my $dq = query_config($proggy, 'quality');  # quality is a value 1-3.  higher=better 
     1565            $components->{$proggy}->{order} = $order_num+((4-$dq)*1000)+int(rand(1000)); 
    15571566        } 
    15581567    } 
     
    15901599sub query_grabbers 
    15911600{ 
    1592     return query_component_type('grabber'); 
     1601    my ($conf, $val) = @_; 
     1602    return query_component_type('grabber',$conf,$val); 
    15931603} 
    15941604 
     
    16051615sub query_component_type 
    16061616{ 
    1607     my $progtype = shift; 
     1617    my ($progtype,$conf,$val) = @_; 
    16081618 
    16091619    my @ret = (); 
    16101620    foreach (keys %$components) 
    16111621    { 
    1612         push (@ret, $_) if ($components->{$_}->{type} eq $progtype); 
     1622        if ($components->{$_}->{type} eq $progtype) { 
     1623            if (defined $conf) { 
     1624                push (@ret, $_) if (query_config($_,$conf) eq $val); 
     1625            } else { 
     1626                push (@ret, $_); 
     1627            } 
     1628        } 
    16131629    } 
    16141630    return @ret; 
     
    18721888          "Were you using one of the following data sources previously?\n". 
    18731889          "If so, list it (or them) in order of preference.\n\n". 
    1874           "Choose from: "; 
    1875     print join(", ",query_grabbers()); 
     1890          "Choose from:\n"; 
     1891    printf " %s (100%% accurate or very close to it)\n", 
     1892        join(", ",query_grabbers('quality',3)); 
     1893    printf " %s (occasionally or sometimes inaccurate)\n", 
     1894        join(", ",query_grabbers('quality',2)); 
     1895    printf " %s (often inaccurate)\n", 
     1896        join(", ",query_grabbers('quality',1)); 
     1897 
    18761898    print "\nProvide a comma-seperated list (in preference order) or leave blank\n". 
    18771899          "if you have no order preference.\n"; 
  • status

    r117 r118  
    1 shepherd:0.2.19:shepherd 
     1shepherd:0.2.20:shepherd 
    22grabber:rex:3.3.5 
    33grabber:oztivo:0.8