#!/usr/local/bin/perl #VERSION 1.003.1 #UPDATED: 1/12/01 by BRENT NELSON # #Version 1.1 UPDATED 06/13/02 by Jeff McAdoo #Changed CSS implementation; worked on NS6 compatibility; reduced number of dependant files; removed unnecessary subs # #Version 1.2 UPDATED 12/16/02 by Jeff McAdoo #Added dynamic metafile generation to handle pre/post-rolls; removed "more stories"; incorporated two hitbox scripts, one for audio # and one for video # #Version 1.2 UPDATED 12/16/02 by Jeff McAdoo #Added dynamic metafile generation to handle pre/post-rolls; removed "more stories"; incorporated two hitbox scripts, one for audio # and one for video use XML::Parser; use XML::Parser::Expat; use Time::localtime; use Time::Local; use CGI; #use CGI::Carp qw(fatalsToBrowser);#for debugging only use CGI qw(:standard); my $file = param("file"); my $mediatype = param("mp"); my $mediaformat = param("av"); my $contenttype = param("type"); my $contentid = param("id"); my $brand = param("brnd"); my $bandwidth = param("band"); my $mediasubject = param("subj"); my $contentlid = param("lid"); $audImg = qq(); $vidImg = qq(); $background = qq(SportsLine Media Center); open (LOCK, "/html/u/mp/1/lock.dat"); flock(LOCK, 2); flock(LOCK, 8); %att = (); my $cgi = CGI::new(); print $cgi->header(-type=>'text/html'); #Browser sniff $browser = $ENV{'HTTP_USER_AGENT'}; if($browser =~ "netscape"){ $browser = "netscape"; }else{ $browser = "ie"; } #PARSE QUERY STRING VALUES if($ENV{'QUERY_STRING'}){ #still need to parse old way due to var $file usage; not good. &parse_vars($ENV{'QUERY_STRING'}); unless(($contenttype eq "1") || ($contenttype eq "2") || ($contenttype eq "3")){ if($mediaformat eq "a"){ #TYPE 4 - ALPHABETIZED AUDIO (TYPE = A..Z) CHANGE TYPE FROM LETTER ("H") TO "4" $alphaXML = $contentid . "_" . $contenttype; $contenttype = "4"; }elsif(($mediaformat eq "v") && ($contenttype ne "temp") && ($contenttype ne "6")){ #TYPE 5 - VIDEO (TYPE = A..Z) CHANGE TYPE FROM LETTER ("H") TO "4" $alphaXML = $contentid . "_" . $contenttype; $contenttype = "4"; $contenttype = "5"; }elsif(($mediaformat eq "v") && ($contenttype ne "temp") && ($contenttype ne "5")){ #TYPE 5 - VIDEO (TYPE = A..Z) CHANGE TYPE FROM LETTER ("H") TO "4" $alphaXML = $contentid . "_" . $contenttype; $contenttype = "6"; }elsif(($mediaformat eq "v") && ($contenttype eq "temp") && ($contenttype ne "6")){ $alphaXML = $contentid . "_" . $contenttype; $contenttype = "temp"; } } } #BEGIN ASSEMBLING PAGE &loadTopOfPage; #META ID (Determines the selected media clip) @meta = split(/\//, $file); $n = @meta; $metaId = $meta[$n-1]; #FIND STORY ID if($contentid){ $storyId = $contentid; }else{ #PARSE REFERER STRING >BACKUP TO $contentid $httpreferer = $ENV{'HTTP_REFERER'}; @pathsegments = split(/\//, $httpreferer); $segsize = @pathsegments; ($multiId) = split(/\./,$pathsegments[$segsize-1]); @storyId = split(/\,/, $multiId); ($storyId) = split(/\_/, $storyId[2]); } #DEFINE COMPONENTS &definitions; #PROCESS XML FILES &parseXML; #GENERATE SPORT MENU if($mediatype eq "ram"){ $menu = &makeMenu; } #FINISH ASSEMBLING PAGE &paint; exit 0; ######################################################## sub loadTopOfPage(){ $table = "page/page_top.html"; $page .= `cat $table`; $hitbox=""; if($mediaformat eq "v"){ $hitbox = qq(\n); $hitbox .= `cat /html/u/includes/ads/MediaPlayer_video_applethdr.htm`; } else{ $hitbox = qq(\n); $hitbox .= `cat /html/u/includes/ads/MediaPlayer_audio_applethdr.htm`; } if ((($brand eq "NCAAB")||($contentid eq "55")||($mediasubject eq "basketball.ncaab") || ($contentlid eq "55") || ($contentlid eq "291994") || ($contentlid eq "291409")) && ($mediaformat eq "v")){ $hitbox = qq(\n); $hitbox .= `cat /html/u/includes/ads/BKCmadness_mediaplayer_highlights_applethdr.htm`; } if ($brand eq "xp"){ $hitbox = qq(\n); $hitbox .= `cat /html/u/includes/ads/BKCmadness_mediaplayer_dunkoftheday_applethdr.htm`; } $page .= $hitbox; #since most media is audio display audio msg $player_vis = "hidden"; $ad_vis = "visible"; if ($mediaformat eq "v"){ $player_vis = "visible"; $ad_vis = "hidden"; } $audioID = "3281"; $videoID = "3596"; if($mediaformat eq "v"){ $media = "video"; $mediaID = "0,$videoID,"; } else{ $media = "audio"; $mediaID = "0,$audioID,"; } $body = "OnLoad=\"Load('$media')\""; $page =~ s/\$player_vis\$/$player_vis/; $page =~ s/\$ad_vis\$/$ad_vis/; $page =~ s/\$body\$/$body/; print "$page"; print PAGE $page; } #PARSE THE VARS PASSED VIA THE QUERY STRING sub parse_vars() { my $string = shift; $query_string = $string; my @vars = split(/\&/, $string); my ($name,$value); foreach $var (@vars){ ($name,$value) = split(/\=/, $var); $var{$name} = $value; } } sub definitions(){ $table = "page/page_bottom.html"; if ($bandwidth eq "56k"){ $mediaWidth = 160; $mediaHeight = 120; } elsif ($bandwidth eq "100k" || $bandwidth eq "300k"){ $mediaWidth = 240; $mediaHeight = 180; } else{ $mediaWidth = 240; $mediaHeight = 180; } #DIRECTORY LOCATIONS $mainDir = "/html/u/mp/1/"; $headlineDir = "/html/u/components/headlines/xml/"; $audiopageDir = "/html/u/components/audio/xml/"; $mediapageDir = "/html/u/components/video/xml/league/"; #SUBJECT DEFINITIONS open(SUBJECTS, "subjects.txt"); while(){ chomp; @line = split(/\^/, $_); $subjectID{$line[1]} = $line[0]; } close(SUBJECTS); @values = ("football.nfl", "basketball.nba", "baseball.mlb", "hockey.nhl", "football.ncaaf", "golf", "tennis", "autoracing", "horseracing", "boxing", "baseball.college", "soccer.mls", "basketball.ncaab", "basketball.wnba", "cycling", "olympics", "volleyball", "wrestling", "other" ); %sportID = ("5", "soccer", "6", "autoracing", "7", "tennis", "8", "boxing", "9", "golf", "10", "horseracing", "39", "baseball.college", "52", "baseball.mlb", "53", "soccer.mls", "54", "basketball.nba", "55", "basketball.ncaab", "56", "football.ncaaf", "59", "football.nfl", "60", "hockey.nhl", "73", "basketball.wnba", "10916", "cycling", "15", "olympics", "10931", "volleyball", "10934", "wrestling", "13", "other" ); #sportsId - for audio page XML files %sportsId = ("soccer","5", "autoracing","6", "tennis","7", "boxing", "8", "golf", "64", "horseracing", "10", "baseball.college", "39", "baseball.mlb", "52", "soccer.mls", "53", "basketball.nba", "54", "basketball.ncaab", "55", "football.ncaaf", "56", "football.nfl", "59", "hockey.nhl", "60", "basketball.wnba", "73", "cycling", "10916", "olympics", "15", "volleyball", "10931", "wrestling", "10934", "other", "13" ); @menuOrder = ("NFL", "NCAAB", "NBA", "MLB", "NHL", "Golf"); %codes = ("NFL", "football.nfl", "NBA", "basketball.nba", "WNBA", "basketball.wnba", "MLB", "baseball.mlb", "NHL", "hockey.nhl", "NCAAF", "football.ncaaf", "Golf", "golf", "Tennis", "tennis", "Racing", "autoracing", "NCAAB", "basketball.ncaab", "Horses", "horseracing" ); %text = ("NFL", "NFL", "NBA", "NBA", "WNBA", "WNBA", "MLB", "MLB", "NHL", "NHL", "NCAAF", "NCAA Football", "Golf", "Golf", "Tennis", "Tennis", "Racing", "Racing", "NCAAB", "NCAA Hoops" , "Horses" ," Horse Racing" ); $color1="#FFFFFF"; $color2="#EDEDED"; @color = ($color1,$color2); %boxColor = ("box","#000175","outline","#000175"); $boxText = "#FFFFFF"; #Set initial color array value $color = "0"; #$presby = qq(
Presented by Microsoft Windows XP
); $brandTags =qq(
); #SPECIAL BRANDING if(($brand eq "NCAAB")||($contentid eq "55")||($mediasubject eq "basketball.ncaab") || ($contentlid eq "55") || ($contentlid eq "291994") || ($contentlid eq "291409")){ } if(($mediasubject eq "football.nfl") || ($contenttype eq "3" && $contentid eq "59") || ($contenttype eq "1" && $var{'file'} =~ /nfl/) || ($brand eq "NFL")){ $brandTags = qq(
); $brandTags .=qq(
For more NFL audio
and video visit NFL.com
); } if($brand eq "xp"){ #$presby =qq(
Presented by MicrosoftXP
); } if($brand eq "NBA" || $contentlid eq "54"){} if($brand eq "MLB"){} if($brand eq "GOLF"){} $template = $table unless($template); $page = `cat $template`; } sub makeMenu(){ my $menu; my $class; my $brand; my $size = @menuOrder; foreach $menuItem (@menuOrder){ if(($codes{$menuItem} eq $mediasubject) || ($sportsId{$codes{$menuItem}} == $contentid) || ($sportsId{$codes{$menuItem}} == $contentlid)){ $class = "active"; }else{ $class = "inactive"; } $brand = "spl"; $mediatype = "ram" unless($mediatype); $args = "subj=$codes{$menuItem}&mp=$mediatype&brnd=$brand&band=$bandwidth&av=a&type=2'"; $menu .= "); }elsif($mediatype eq "asx"){ $player_js = qq(); } $page =~ s/\$player_js\$/$player_js/; #BACKGROUND $page =~ s/\$background\$/$background/g; $page =~ s/\$brandTags\$/$brandTags/g; $page =~ s/\$presby\$/$presby/g; print "$page"; print PAGE $page; close(PAGE); } sub div2(){ my $file = shift; my $embed; my $src; #EMBED AUDIO REAL OR WINDOWS MEDIA $src = $file; if($mediatype eq "ram"){ $embed = &embed_realmedia($src); }elsif($mediatype eq "asx"){ $embed = &embed_windowsmedia($src); } $div2 = "$embed"; } sub mediacontrols(){ my $file = shift; my $controls; #Embed RealPlayer Controls if($mediatype eq "ram"){ $controls = qq(); $controls .= qq(); $controls .= qq(); } elsif($mediatype eq "asx"){ $controls = qq(); } return($controls); } sub embed_realmedia(){ my $file = shift; my $code; my $mediasource; if ($file =~ /sportsline_nfl/ || $file =~ /nflfilms/){ $file =~s/real\/sportsline_nfl/\/real\/sportslinenfl/; $file = "http:\/\/boss.streamos.com$file"; } elsif ($file =~ /sportslinenfl/){ $file = "http:\/\/boss.streamos.com$file"; } else { $file = "http://ww1.sportsline.com".$file; #$file = "http://stage1.sportsline.com".$file; } if(($brand eq "NCAAB")||($contentid eq "55")||($mediasubject eq "basketball.ncaab")){ $mediasource = $file; } elsif($mediaformat eq "v"){ #$mediasource = "/u/mp/1/playlist-video-real.cgi?file=$file"; $mediasource = $file; }else{ $mediasource = $file; } #RealPlayer Object $code = qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); return($code); } sub embed_windowsmedia(){ my $file = shift; my $code; my $mediasource; #$file = "http://ww1.sportsline.com".$file unless($file =~ /http\:\/\/www\.sportsline\.com/); #$file = "http://stage1.sportsline.com".$file; #$file = "http://ww1.sportsline.com".$file; $file = "http://ww1.sportsline.com".$file; if($mediaformat eq "v"){ #$mediasource = $file; $mediasource = "/u/mp/1/playlist-video-wmp.cgi?file=".$file."&band=".$bandwidth; }else{ $mediasource = $file; } $code = qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); $code .= qq(); return($code); } sub parseXML(){ if($contenttype eq "1"){ #TYPE 1 LOOKING FOR AUDIO FOR 'MORE MEDIA' if($mediasubject){ $sport = $mediasubject; }elsif($subject){ $sport = $subject; }else{ $sport = $att{'subject'}; } foreach $value (@values){ if($subject =~ /$value/){ if ($contentid == 4130253){ $audiopageFile = "0,3281,$sportsId{$value},00.xml"; last; }else{ $mediapageFile = "0,3596,$sportsId{$value},00.xml"; $audiopageFile = "0,3281,$sportsId{$value},00.xml"; last; } }elsif($mediasubject =~ /$value/){ $mediapageFile = "0,3596,$sportsId{$value},00.xml"; $audiopageFile = "0,3281,$sportsId{$value},00.xml"; last; }elsif($att{'subject'} =~ /$value/){ $mediapageFile = "0,3596,$sportsId{$value},00.xml"; $audiopageFile = "0,3281,$sportsId{$value},00.xml"; last; }elsif($sportID{$contentlid} =~ /$value/){ $mediapageFile = "0,3596,$sportsId{$value},00.xml"; $audiopageFile = "0,3281,$sportsId{$value},00.xml"; last; } } $limit = 75; if (-e "$mediapageDir$mediapageFile"){ &parse_mediapageXML($mediapageFile); } # &sort_mediaData(); &parse_audiopageXML($audiopageFile); &lmore_media(); }elsif($contenttype eq "2"){ #TYPE 2 MENU LINK foreach $value (@values){ if($subject =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; }elsif($mediasubject =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; }elsif($att{'subject'} =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; } } $subject = $mediasubject; $limit = 55; #TYPE 2 Video Commented begin $mediapageFile = "0,3596,$sportsId{$mediasubject},00.xml"; if (-e "$mediapageDir$mediapageFile"){ &parse_mediapageXML($mediapageFile); } #TYPE 2 Video Commented end if((($mediasubject eq "basketball.nba") || ($mediasubject eq "basketball.wnba") || ($mediasubject eq "hockey.nhl") || ($mediasubject eq "autoracing") || ($mediasubject eq "tennis") || ($mediasubject eq "golf") || ($mediasubject eq "football.nfl")) && ($mediaformat eq "v") && ($mediatype eq "ram") && ($contenttype eq "2")){ $icon = $vidImg; &parse_audiopageXML($audiopageFile); $haveVideo = "[$lid]"; &more_media(); }else{ # &sort_mediaData(); &parse_audiopageXML($audiopageFile); $haveVideo = "[$lid]"; &more_media(); } } elsif (($contenttype eq "3") && ($brand eq "porsche")){ $m_media .= `cat /html/u/madness/2003/game-highlights-navigation.html`; } elsif (($contenttype eq "3") && ($brand eq "xp")){ $m_media .= `cat /html/u/madness/2003/xp-navigation.html`; } elsif (($contenttype eq "3") && ($brand eq "nfl")){ if ($bandwidth eq "56k"){ $m_media .= `cat /html/u/football/nfl/video/navigation_56k.html`; } elsif ($bandwidth eq "100k"){ $m_media .= `cat /html/u/football/nfl/video/navigation_100k.html`; } elsif ($bandwidth eq "300k"){ $m_media .= `cat /html/u/football/nfl/video/navigation_300k.html`; } else{ $m_media .= `/html/u/football/nfl/video/navigation_100k.html`; } foreach $key (keys(%sportsId)){ if($sportsId{$key} =~ "$contentid"){ $subject = "$key"; }else{ } } $limit = 125; #1818 $audiopageFile = "0,3281,$contentid,00.xml"; &parse_audiopageXML($audiopageFile); $mediapageFile = "0,3596,$contentid,00.xml"; if (-e "$mediapageDir$mediapageFile"){ &parse_mediapageXML($mediapageFile); } #&more_media(); # $m_media = $m_media.$j; } elsif($contenttype eq "3"){ #TYPE 3 AUDIO INDEX LINK foreach $key (keys(%sportsId)){ if($sportsId{$key} =~ "$contentid"){ $subject = "$key"; }else{ } } $limit = 125; #1818 $audiopageFile = "0,3281,$contentid,00.xml"; &parse_audiopageXML($audiopageFile); $mediapageFile = "0,3596,$contentid,00.xml"; if (-e "$mediapageDir$mediapageFile"){ &parse_mediapageXML($mediapageFile); } #&sort_mediaData(); #&related_media(); &more_media(); }elsif($contenttype eq "4"){ #TYPE 4 AUDIO ALPHA LINK foreach $key (keys(%sportsId)){ $compare_id = $sportsId{$key} . "_"; $compare_id = $sportsId{$key}; if($contentid =~ /^$compare_id$/){ $subject = "$key"; last; }else{ } } $limit = 725; $audiopageFile = "0,3281,$contentid,00.xml"; $audiopageFile = "0,3281,$alphaXML,00.xml"; &parse_audiopageXML($audiopageFile); #&related_media(); $alphaClips = &more_media(); }elsif($contenttype eq "5"){ #TYPE 5 VIDEO LINK foreach $value (@values){ if($subject =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; }elsif($mediasubject =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; }elsif($att{'subject'} =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; } } $subject = $mediasubject; $limit = 65; #TYPE 5 Video Commeted begin $mediapageFile = "0,3596,$sportsId{$mediasubject},00.xml"; if (-e "$mediapageDir$mediapageFile"){ &parse_mediapageXML($mediapageFile); } #TYPE 5 Video Commeted end #&sort_mediaData(); &parse_audiopageXML($audiopageFile); &lmore_media(); }elsif($contenttype eq "6"){ #TYPE 6 VIDEO LINK foreach $value (@values){ if($subject =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; }elsif($mediasubject =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; }elsif($att{'subject'} =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; } } $subject = $mediasubject; $limit = 65; #TYPE 6 Video Commeted begin $mediapageFile = "0,3596,$sportsId{$mediasubject},00.xml"; if (-e "$mediapageDir$mediapageFile"){ &parse_mediapageXML($mediapageFile); } #TYPE 6 Video Commeted end &parse_audiopageXML($audiopageFile); &lmore_media(); }elsif ($contenttype eq "temp"){ #TYPE TEMP $file = "http:\/\/boss.streamos.com$file"; foreach $value (@values){ if($subject =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; }elsif($mediasubject =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; }elsif($att{'subject'} =~ /$value/){ $lid = $sportsId{$value}; $audiopageFile = "0,3281,$lid,00.xml"; last; } } $subject = $mediasubject; $limit = 65; $mediapageFile = "0,3596,$sportsId{$mediasubject},00.xml"; if (-e "$mediapageDir$mediapageFile"){ &parse_mediapageXML($mediapageFile); } &parse_audiopageXML($audiopageFile); } } sub parse_mediapageXML(){ my $mediapageFile = shift; #SET MEDIA PAGE PARSER OBJECT my $mediapageParser = new XML::Parser(ErrorContext => 2); $mediapageParser->setHandlers(Start => \&start_handler, End => \&end_handler, Char => \&mediapageChar_handler); #PARSE AUDIO PAGE sort (@date); $test = $mediapageDir . $mediapageFile; unless(-e $test){ $mediapageFile = ""; #NO ALTERNATE MEDIA PAGE } #PARSE AUDIO PAGE FILE eval{$mediapageParser->parsefile("$mediapageDir$mediapageFile")} if($mediapageFile); $error .= "EVAL: mediapageParser '$mediapageDir$mediapageFile' $@
\n"; if($@){}; } sub parse_audiopageXML(){ $audiopageFile = shift; #SET AUDIO PAGE PARSER OBJECT my $audiopageParser = new XML::Parser(ErrorContext => 2); $audiopageParser->setHandlers(Start => \&startaudio_handler, End => \&end_handler, Char => \&audiopageChar_handler); #PARSE AUDIO PAGE $test = $audiopageDir . $audiopageFile; unless(-e $test){ #$audiopageFile = "0,3281,13,00.xml"; #ALTERNATE AUDIO PAGE $audiopageFile = "0,3281,59,00.xml"; #ALTERNATE AUDIO PAGE } $audiopageFile = "0,3281,59,00.xml" unless($audiopageFile); #ALTERNATE AUDIO PAGE #PARSE AUDIO PAGE FILE eval{$audiopageParser->parsefile("$audiopageDir$audiopageFile")}; $error .= "EVAL: audiopageParser '$audiopageDir$audiopageFile' $@
\n"; if($@){}; $mSize = @more_m_person; } sub search_dir(){ #FIND FILE TO BE OPENED my $dir = shift; my $storyId = shift; my $type = shift; my $file; my @list = `ls -t $dir`; foreach $filename (@list){ chomp($filename); next unless($filename =~ /xml$/); if($filename =~ /$storyId/){ $file = $filename; last; } } return($file); } sub end_handler { $expat = shift; $element = shift; } sub mediaEnd_handler { $expat = shift; $element = shift; if($element eq "media_instance"){ ($junk,$end) = split(/\_/, $metaId); $end = "_$end"; } } sub headline_titles(){ ##HEADLINE TITLES MUST BEGIN WITH A CAPITAL LETTER AND BE LONGER THAN 5 CHARACTERS ##AS A SAFEGUARD AGAINST BAD DATA IN XML FILES (an apostrophe in a name returns 3 headline files) if($data =~ /^[a-z]/){ return(1); } if(length($data) < 5){ return(1); } } sub headlineChar_handler { ($p, $data) = @_; $data =~ s/\n+/ /g; $substr = substr($data,0,1); return() if(&headline_titles); ##SCREENS OUT BAD DATA IN HEADLINES if($element eq "headline" && $data ne " "){ push(@headline_m_link, $att{'href'}); push(@headline_m_data, $data); $headline_items++; } } sub mediaRef(){ my $mediaRef; my $mediaLink = shift; my $refType = shift; #('audio' | 'video') if($mediaLink =~ /cbs.sportsline.com/){ $mediaLink =~ s/\.$mediatype$//; if($mediaLink =~ /$mediatype$/){ $mediaRef = "javascript:goMovie('$mediaLink','$refType')"; }else{ $mediaRef = "javascript:goMovie('$mediaLink.$mediatype','$refType')"; } $mediaLink =~ s/http:\/\/ww1\.sportsline\.com//; }elsif($mediaLink =~ /nflcom/ && $mediaLink =~ /rm/){ $mediaRef = "javascript:goMovie('$mediaLink','$refType')"; #}elsif($mediaLink =~ /asx/){ # $mediaRef = "javascript:goMovie('$mediaLink','wmp')"; }else{ $mediaRef = "javascript:goMovie('http://ww1.sportsline.com$mediaLink.$mediatype','$refType')"; } return($mediaRef); } sub sort_mediaData(){ #reverse sort (@date); foreach $cid (@cID){ #Controls NFL.com and SPLN video Clips feed_ID eq 5 for NFL.com next if($feed_id[$cid] eq "5"); #foreach $cid (sort(@cID)){ #next unless($cid); if( ($href[$cid] =~ /$metaId/) && ( ($href[$cid] =~ /$mediatype$/ || $href[$cid] =~ /rm$/) || ($href[$cid] =~ /$mediatype$/ || $href[$cid] =~ /ram$/) || ($href[$cid] =~ /$mediatype$/ || $href[$cid] =~ /smi$/) ) ){ #REQUESTED CLIP $mediaRef = &mediaRef($href[$cid],$type[$cid]); $embedRef = $href[$cid]; $embedRef =~ s/http:\/\/ww1.sportsline.com//g; $metaLink = $mediaRef; $related_person = "$iname[$cid]" unless($person); $related_date = $date[$cid]; unless($related_person){ $related_person = $title[$cid]; $title[$cid] = ""; } unshift(@related_m_person, $related_person); unshift(@related_m_date, $date[$cid]); unshift(@related_m_title, $title[$cid]); unshift(@related_m_mediaRef, $mediaRef); unshift(@related_m_data, $synopsis[$cid]); unshift(@related_m_type, $type[$cid]); }else{ #OTHER CLIPS $mediaRef = &mediaRef($href[$cid],$type[$cid]); $test = join("\", @related_data); unless($iname[$cid]){ $iname[$cid] = $title[$cid]; $title[$cid] = ""; } push(@more_m_person, $iname[$cid]); push(@more_m_date, "$date[$cid]"); push(@more_m_title, $title[$cid]); push(@more_m_mediaRef, $mediaRef); push(@more_m_href, $href[$cid]); push(@more_m_data, $synopsis[$cid]); push(@more_m_type, $type[$cid]); push(@more_m_feed_id, $feed_id[$cid]); } } } sub start_handler { $expat = shift; $element = shift; while (@_) { $atts = shift; $val = shift; $val =~ s/\s+$/\n/g; $att{$atts} = $val; } $i++; } sub mediapageChar_handler { $p = shift; $data = shift; $es = join(", ", @es); $jj++; $data =~ s/\n+/ /g; #ELEMENT #return if(grep(/$att{'content_id'}/, @cID)); push(@es, $element) unless(grep(/$element/, @es)); #SORT if($element eq "media_collection"){ #content_type subject $cgID = $att{'content_group_id'}; $subject[$cgID] = $att{'subject'}; }elsif($element eq "media"){ foreach $Key (keys %att){ } $cID = $att{'content_id'}; push(@cID, $cID) unless(grep(/$cID/, @cID)); $x = grep(/$att{'content_id'}/, @cID); if($cID){ #push(@cID, $cID) unless(grep(/$cID/, @cID)); $type[$cID] = $att{'type'}; $league_id[$cID] = $att{'league_id'}; $sport_id[$cID] = $att{'sport_id'}; $team_id[$cID] = $att{'team_id'}; $player_id[$cID] = $att{'player_id'}; $date[$cID] = $att{'date'}; $feed_id[$cID] = $att{'feed_id'} if ($att{'feed_id'} ne ""); $type[$cID] =~ s/External Real/video/g; } }elsif($element eq "name"){ if($data =~ /[A-Z]/){ $iname[$cID] = $data; } }elsif($element eq "title"){ if($data =~ /[A-Z]/){ $title[$cID] = $data; $title{$cID} = $data; } }elsif($element eq "synopsis"){ if($data =~ /[A-Z]/){ $synopsis[$cID] = $data; } }elsif($element eq "media_instance"){ ($junk,$end) = split(/\_/, $metaId); $end = "_$end"; if(($att{'href'} =~ /$mediatype$/) &&($att{'href'} =~ /$end/)){ #if(($att{'href'} =~ /$mediatype$/)&&($att{'href'} =~ /$metaId/)) #STOPPED #href type $href[$cID] = $att{'href'}; $mFormat[$cID] = $att{'type'}; }elsif($att{'href'} =~ /rm$/ || $att{'href'} =~ /rtsp$/ || $att{'href'} =~ /smi$/){ $href[$cID] = $att{'href'}; $mFormat[$cID] = $att{'type'}; }else{ } } } sub startaudio_handler { $expat = shift; $element = shift; %att = (); while (@_) { $att = shift; $val = shift; $val =~ s/\s+$/\n/g; $att{$att} = $val; } $i++; } sub audiopageChar_handler { ($p, $data) = @_; $data =~ s/\n+/ /g; # HOW DO WE DEAL WITH VIDEO ?!?!?!?!??!? if(($mediatype eq "asx") && ($mediaformat eq "v") && ($att{'href'} =~ /_g/)){ $att{'href'} =~ s/_g/_h/g; } if($element eq "link" && $data ne " "){ if($masterAudio =~ /$att{'href'}/){ #DISCARD DUPLICATE CLIP }else{ #AUDIOPAGE ATTRIBUTES: (name, title, type, date, href) if(($att{'type'} eq "audio")||($att{'type'} eq "video")){ ##JS CALL TO EMBEDED PLAYER $mediaRef = &mediaRef($att{'href'},$att{'type'}); ##EMBED FILE REFERENCE if(($att{'href'} =~ /$metaId/)&&($metaId)){ ## THIS IS THE CLIP REQUESTED, PLACE AT THE TOP OF THE LIST!! $embedRef = "$att{'href'}.$mediatype"; $metaLink = $mediaRef; $alpha_by = substr($att{'last_name'},0,1); $related_person = &names; $related_date = $att{'date'}; unshift(@related_m_person, $related_person); unshift(@related_m_last, $att{'last_name'}); unshift(@related_m_date, $att{'date'}); unshift(@related_m_title, $att{'title'}); unshift(@related_m_mediaRef, $mediaRef); unshift(@related_m_data, $data); unshift(@related_m_type, $att{'type'}); }else{ #LIMIT THE NUMBER OF AUDIO CLIPS ($j needed for "More Media" section title) if($j++ >=$limit){ #1818#COUNT MORE MEDIA CLIPS #return; } $name = &names; push(@more_m_person, $name); push(@more_m_last, $att{'last_name'}); push(@more_m_date, "$att{'date'}"); push(@more_m_title, $att{'title'}); push(@more_m_mediaRef, $mediaRef); push(@more_m_data, $data); push(@more_m_type, $att{'type'}); } $t2_first_clip = "$att{'href'}.$mediatype" unless($t2_first_clip); $metaLink = $mediaRef unless($metaLink); }elsif ($att{'type'} eq "video"){ } } } } sub names(){ my $person; $person = "$att{'name'}"; $person = "$att{'first_name'} $att{'last_name'}" unless($person); return($person); } sub changeColor(){ #CHANGE THE CELL BACKGROUND COLOR ARRAY ELEMENT my $color = shift; $lastColor = $color; $colorChanges++; if($color){ $color = 0; }else{ $color = 1; } return($color); } sub mediaPersonInsert(){ #INSERT PERSON/TITLE ROW my $insert = shift; my $media; $media .= qq(); $media .= qq($insert\n); return($media); } sub mediaBox(){ my $text = shift; my $mediaBox; $mediaBox = qq(); $mediaBox .= qq(); $mediaBox .= qq(
); $mediaBox .= qq(); return($mediaBox); } sub new_person(){ my $person = shift; my $title = shift; my $i = shift; my $relation = shift; #"related" or "more" media my $date = shift; my $new_person; my $spot; if($person ne $last_person){ $people++; if($relation eq "related"){ $spot = "$person
$title $date"; }else{ $spot = "$person
$title $date"; } $color = &changeColor($color); $topmedia = ""; $new_person = &mediaPersonInsert("$spot"); }else{ $new_person = ""; } $last_person = $person; return($new_person); } sub sort_moremedia(){ my $size = @more_m_date; for($i=$size-1; $i>=0; $i--){ ($m,$d,$y) = split (/\//, $more_m_date[$i]); $m = $m - 1; #CONVERT TO UNIX MONTH NUMBER $epoch = timelocal(0,0,0,$d,$m,$y); $epoch{$i} = $epoch; push (@dateSort, $epoch) unless(grep(/$epoch/, @dateSort)); $mmData{$epoch}{$i} = $more_m_data[$i]; $mmPerson{$epoch}{$i} = $more_m_person[$i]; $mmMediaRef{$epoch}{$i} = $more_m_mediaRef[$i]; $mmDate{$epoch}{$i} = $more_m_date[$i]; $mmType{$epoch}{$i} = $more_m_type[$i]; $mmTitle{$epoch}{$i} = $more_m_title[$i]; } $j = 0; foreach $ep (reverse(@dateSort)){ $x = $size -1; for($i=0;$i<$size;$i++){ next unless($mmData{$ep}{$i}); $mmPerson[$j] = $mmPerson{$ep}{$i}; $mmData[$j] = $mmData{$ep}{$i}; $mmMediaRef[$j] = $mmMediaRef{$ep}{$i}; $mmDate[$j] = $mmDate{$ep}{$i}; $mmType[$j] = $mmType{$ep}{$i}; $mmTitle[$j] = $mmTitle{$ep}{$i}; $mmType[$j] =~ s/External Real/video/g; $j++; } } $j = 0; } sub more_media(){ my $j; my $n = @more_m_person; my $icon; $howmany = $n; &sort_moremedia(); $sizeof_mmP = @mmPerson; $sizeof_m_m_p = @more_m_person; $color = 0; $MboxTitle = &mediaBox("MORE MEDIA"); $last_person = $more_m_person[0]; $more_m_person = "" ; $last_person = "" ; for($i=0;$i<$n;$i++){ next unless($mmPerson[$i]); $icon = $audImg if($mmType[$i] eq "audio"); $icon = $vidImg if($mmType[$i] eq "video"); if(($related_person eq $more_m_person[$i])&&($contenttype >= 3)&&($related_date eq $more_m_date[$i])){ #SEPERATE VIDEO $icon = $audImg if($mmType[$i] eq "audio"); $icon = $vidImg if($mmType[$i] eq "video"); $icon = $audImg if($more_m_type[$i] eq "audio"); $icon = $vidImg if($more_m_type[$i] eq "video"); next; } if($contenttype <= 3){ $icon = $audImg if($mmType[$i] eq "audio"); $icon = $vidImg if($mmType[$i] eq "video"); $icon = $audImg if($more_m_type[$i] eq "audio"); $icon = $vidImg if($more_m_type[$i] eq "video"); $m_media .= &new_person($mmPerson[$i],$mmTitle[$i],$i,"more") if($mmPerson[$i]); $m_media .= "$icon "; $m_media .= "
$mmData[$i]"; $m_media .= "($mmDate[$i])\n"; $lastTitle = $mm_title[$i]; $lastType = $more_m_type[$i]; last if($j++ > $limit); }elsif($contenttype eq "4"){ #AUDIO ALPHA PAGES if(($more_m_last[$i] =~ /^$alpha_by/)||($more_m_person[$i] =~ / $alpha_by/)){ $m_media .= &new_person($mmPerson[$i],$mmTitle[$i],$i,"more") if($mmPerson[$i]); $m_media .= "$icon "; $m_media .= "$mmData[$i] "; $m_media .= "($mmDate[$i])\n"; last if($j++ > $limit); } }elsif($contenttype eq "5" || $contenttype eq "6"){ #EXCLUDE CONTENT INCLUDED IN RELATED SECTION $icon = $audImg if($mmType[$i] eq "audio"); $icon = $vidImg if($mmType[$i] eq "video"); $m_media .= &new_person($mmPerson[$i],$mmTitle[$i],$i,"more") if($mmPerson[$i]); $m_media .= "$icon "; $m_media .= "$mmData[$i] "; $m_media .= "($mmDate[$i])\n"; last if($j++ > $limit); } } $m_media = $MboxTitle . $m_media if($m_media); return($j); } sub lmore_media(){ my $j; my $n = @more_m_person; my $icon; $howmany = $n; &sort_moremedia(); $color = 0; $MboxTitle = &mediaBox("MORE MEDIA"); $last_person = $more_m_person[0]; $more_m_person = "" ; $last_person = "" ; for($i=0;$i<$n;$i++){ $more_m_type[$i] =~ s/External Real/video/g; $icon = $audImg if($more_m_type[$i] eq "audio"); $icon = $vidImg if($more_m_type[$i] eq "video"); if(($related_person eq $more_m_person[$i])&&($contenttype >= 3)&&($related_date eq $more_m_date[$i])){ next; } if($contenttype <= 3){ $m_media .= &new_person($more_m_person[$i],$more_m_title[$i],$i,"more") if($more_m_person[$i]); $m_media .= " $icon"; $m_media .= ""; $m_media .= "\n$more_m_data[$i] "; $m_media .= "($more_m_date[$i])\n"; $m_media .= "\n"; last if($j++ > $limit); }elsif($contenttype eq "4"){ #AUDIO ALPHA PAGES if($more_m_last[$i] =~ /^$alpha_by/){ $m_media .= &new_person($more_m_person[$i],$more_m_title[$i],$i,"more") if($more_m_person[$i]); $m_media .= " $icon"; $m_media .= ""; $m_media .= "\n$more_m_data[$i] "; $m_media .= "($more_m_date[$i])\n"; $m_media .= "\n"; last if($j++ > $limit); } }elsif($contenttype eq "5" || $contenttype eq "6"){ #EXCLUDE CONTENT INCLUDED IN RELATED SECTION unless((grep(/$cID[$i]/, @related_cID))&&($cID[$i])){ $m_media .= &new_person($more_m_person[$i],$more_m_title[$i],$i,"more") if($more_m_person[$i]); $m_media .= " $icon"; $m_media .= ""; $m_media .= "\n$more_m_data[$i] "; $m_media .= "($more_m_date[$i])\n"; $m_media .= "\n"; last if($j++ > $limit); } }elsif($contenttype eq "temp"){ $m_media .= &new_person($more_m_person[$i],$more_m_title[$i],$i,"more") if($more_m_person[$i]); $m_media .= " $icon"; $m_media .= ""; $m_media .= "\n$more_m_data[$i] "; $m_media .= "($more_m_date[$i])\n"; $m_media .= "\n"; last if($j++ > $limit); } } $m_media = $MboxTitle . $m_media if($m_media); $m_media .= ""; return($j); } sub storyChar_handler { ($p, $data) = @_; $data =~ s/\n+/ /g; $data =~ s/\s+/ /g; if($element eq "link" && $data ne " "){ #LINK ELEMENTS (AUDIO | VIDEO | PHOTO | STORY) ##TEST FOR CONTENT TYPE (AUDIO | VIDEO | PHOTO | STORY) if (($att{'type'} eq "audio") || ($att{'type'} eq "AUDIO")){ &storyChar_media("audio"); }elsif(($att{'type'} eq "video") || ($att{'type'} eq "VIDEO")){ &storyChar_media("video"); } $lasttitle = $att{'title'}; }elsif($element eq "media_instance"){ # && $data ne " ") # if(($mediatype eq "asx") &&($att{'type'} =~ /Windows/)); }elsif($element eq "content"){ # && $data ne " ") #CONTENT ELEMENT - SUBJECT FOUND HERE if($att{'subject'}){ $subject = $att{'subject'} if($att{'subject'}); } } } sub storyChar_media(){ ##ADD: my $mediaType = shift; # ( "audio" || "video" ) ##JS CALL TO EMBEDED PLAYER $mediaRef = &mediaRef($att{'href'},$att{'type'}); if($masterAudio =~ /$att{'href'}/){ #DUPLICATE FILE!!! - Discarding next; } ##EMBED FILE REFERENCE if(($att{'href'} =~ /$metaId/)&&($metaId)){ $embedRef = "$att{'href'}.$mediatype"; $topmedia = 1; ## THIS IS THE CLIP REQUESTED, PLACE AT THE TOP!! $metaLink = $mediaRef; $person = "$att{'first_name'} $att{'last_name'}
$att{'title'}"; $top_person = &mediaPersonInsert("$person p:$people c:$color"); unshift(@related_m_person, &names); unshift(@related_m_title, $att{'title'}); unshift(@related_m_mediaRef, $mediaRef); unshift(@related_m_data, $data); unshift(@related_m_type, $mediaType); }else{ $person = &names; push(@related_m_person, $person); push(@related_m_title, $att{'title'}); push(@related_m_mediaRef, $mediaRef); push(@related_m_data, $data); push(@related_m_type, $mediaType); } } sub storyChar_audio(){ $mediaRef = &mediaRef($att{'href'},$att{'type'}); if($masterAudio =~ /$att{'href'}/){ #DUPLICATE FILE!!! - Discarding next; } ##EMBED FILE REFERENCE if(($att{'href'} =~ /$metaId/)&&($metaId)){ ## THIS IS THE CLIP REQUESTED, PLACE AT THE TOP!! $embedRef = "$att{'href'}.$mediatype"; $topmedia = 1; $metaLink = $mediaRef; $person = "$att{'first_name'} $att{'last_name'}
$att{'title'}"; $top_person = &mediaPersonInsert("$person p:$people c:$color"); unshift(@related_m_person, &names); unshift(@related_m_title, $att{'title'}); unshift(@related_m_mediaRef, $mediaRef); unshift(@related_m_data, $data); }else{ $person = &names; push(@related_m_person, $person); push(@related_m_title, $att{'title'}); push(@related_m_mediaRef, $mediaRef); push(@related_m_data, $data); } } sub storyChar_video(){ #VIDEO# $vidRef = "javascript:goMovie('$att{'href'}.$mediatype')"; $embedRef = "$att{'href'}.$mediatype"; if(($att{'href'} =~ /$metaId/)&&($metaId)){ $metaLink = $vidRef; $top_media .= "$vidImg $data
\n"; }else{ $r_media2 .= "$vidImg $data
\n"; } }