#!/usr/bin/perl
# For those people who got fetch_one where there was a genrelist, this
# Perl script will convert your genrelist into the new programs format.
#
# Run as cvt_gen2progs < genrelist > programs
#

use strict;

&read_datafiles;
exit(0);

# Procedure read_datafiles: open and read in the genre list, the list
# of stations, the incremental numbers and the episodes
sub read_datafiles {
  my ($prog,$genre,$series,$episode);
  my ($name,$id,$url,$fudge,$genrenum);
  my (%genrelist, @genre_set, $i);

  # Open the list of genres known by the TiVo, and read it in
  #
  open(IN, "genretypes") || die("Cannot read genretypes: $!\n");
  while(<IN>) {
    if (/^#/) { next; }
    chop;
    ($genre,$genrenum)= split(/\t+/);
    $genrelist{$genrenum}=$genre;
  }
  close(IN);

  # Read the old genrelist from stdin
  #
  while(<>) {
    if (/^#/) { print; next; }
    chop;
    ($prog,$genre,$fudge)= split(/\t+/);
    $genre=~ s/\s//g;

    # Convert the numeric genre list into a textual genre list
    #
    @genre_set= split(/[,\s]/,$genre);
    for ($i=0;$i<=$#genre_set;$i++) {
      if (!defined($genrelist{$genre_set[$i]})) {
	print(STDERR "Unknown genre $genre_set[$i] for $prog in genrelist\n");
      } else { $genre_set[$i]= $genrelist{$genre_set[$i]}; }
    }
    $genre=join(',', @genre_set);
    if (defined($fudge)) { print("$prog\t$genre\t$fudge\n"); }
    else { print("$prog\t$genre\n"); }
  }
}
