Advertisement
Guest User

part of epg2xml

a guest
Sep 8th, 2018
501
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.30 KB | None | 0 0
  1. function writeProgram($programdata) {
  2.     $ChannelId = $programdata['channelId'];
  3.     $startTime = $programdata['startTime'];
  4.     $endTime = $programdata['endTime'];
  5.     $programName = trim(htmlspecialchars($programdata['programName'], ENT_XML1));
  6.     $subprogramName = trim(htmlspecialchars($programdata['subprogramName'], ENT_XML1));
  7.     preg_match('/(.*) \(?(\d+부)\)?/', $programName, $matches);
  8.     if ($matches != NULL) :
  9.         if(isset($matches[1])) $programName = trim($matches[1]) ?: "";
  10.         if(isset($matches[2])) $subprogramName = trim($matches[2]." ".$subprogramName) ?: "";
  11.     endif;//
  12.     if($programName == NULL):
  13.         $programName = $subprogramName;
  14.     endif;
  15.     $actors = htmlspecialchars($programdata['actors'], ENT_XML1);
  16.     $producers = htmlspecialchars($programdata['producers'], ENT_XML1);
  17.     $category = htmlspecialchars($programdata['category'], ENT_XML1);
  18.     $episode = $programdata['episode'];
  19.     if($episode) :
  20.         $episode_ns = (int)$episode - 1;
  21.         $episode_ns = '0' . '.' . $episode_ns . '.' . '0' . '/' . '0';
  22.         $episode_on = $episode;
  23.     endif;
  24.     $rebroadcast = $programdata['rebroadcast'];
  25.     if($episode && $GLOBALS['addepisode'] == 'y') $programName = $programName." (".$episode."회)";
  26.     if($rebroadcast == True && $GLOBALS['addrebroadcast'] == 'y') $programName = $programName." (재)";
  27.     if($programdata['rating'] == 0) :
  28.         $rating = "전체 관람가";
  29.     else :
  30.         $rating = sprintf("%s세 이상 관람가", $programdata['rating']);
  31.     endif;
  32.     if($GLOBALS['addverbose'] == 'y') :
  33.         $desc = $programName;
  34.         if($subprogramName)  $desc = $desc."\n부제 : ".$subprogramName;
  35.         if($rebroadcast == True && $GLOBALS['addrebroadcast']  == 'y') $desc = $desc."\n방송 : 재방송";
  36.         if($episode) $desc = $desc."\n회차 : ".$episode."회";
  37.         if($category) $desc = $desc."\n장르 : ".$category;
  38.         if($actors) $desc = $desc."\n출연 : ".trim($actors);
  39.         if($producers) $desc = $desc."\n제작 : ".trim($producers);
  40.         $desc = $desc."\n등급 : ".$rating;
  41.     else:
  42.         $desc = "";
  43.     endif;
  44.     if($programdata['desc']) $desc = $desc."\n".htmlspecialchars($programdata['desc'], ENT_XML1);
  45.     $desc = preg_replace('/ +/', ' ', $desc);
  46.     $contentTypeDict = array(
  47.         '교양' => 'Arts / Culture (without music)',
  48.         '만화' => 'Cartoons / Puppets',
  49.         '교육' => 'Education / Science / Factual topics',
  50.         '취미' => 'Leisure hobbies',
  51.         '드라마' => 'Movie / Drama',
  52.         '영화' => 'Movie / Drama',
  53.         '음악' => 'Music / Ballet / Dance',
  54.         '뉴스' => 'News / Current affairs',
  55.         '다큐' => 'Documentary',
  56.         '라이프' => 'Documentary',
  57.         '시사/다큐' => 'Documentary',
  58.         '연예' => 'Show / Game show',
  59.         '스포츠' => 'Sports',
  60.         '홈쇼핑' => 'Advertisement / Shopping'
  61.        );
  62.     $contentType = "";
  63.     foreach($contentTypeDict as $key => $value) :
  64.         if(!(strpos($category, $key) === False)) :
  65.             $contentType = $value;
  66.         endif;
  67.     endforeach;
  68.  
  69.     $splitProgram = ($GLOBALS['prevChannelId'] == $ChannelId and $programName != '' and $GLOBALS['prevProgramName'] == $programName and $GLOBALS['prevEpisode'] == $episode);
  70.     if ($splitProgram) {
  71.         $GLOBALS['buffer']['endTime'] = $endTime;
  72.         $GLOBALS['buffer']['subprogramName'] = '';
  73.         return;
  74.     } else if ($GLOBALS['buffer']) {
  75.         printBuffer();
  76.     }
  77.  
  78.     $GLOBALS['splitProgram'] = $splitProgram;
  79.     $GLOBALS['prevChannelId'] = $ChannelId;
  80.     $GLOBALS['prevProgramName'] = $programName;
  81.     $GLOBALS['prevEpisode'] = $episode;
  82.  
  83.     $GLOBALS['buffer'] = [
  84.         'startTime' => $startTime,
  85.         'endTime' => $endTime,
  86.         'ChannelId' => $ChannelId,
  87.         'programName' => $programName,
  88.         'subprogramName' => $subprogramName,
  89.         'desc' => $desc,
  90.         'actors' => $actors,
  91.         'producers' => $producers,
  92.         'category' => $category,
  93.         'contentType' => $contentType,
  94.         'episode' => $episode,
  95.         'rebroadcast' => $rebroadcast,
  96.         'rating' => $rating,
  97.     ];
  98. }
  99.  
  100. function printBuffer() {
  101.     $buffer = $GLOBALS['buffer'];
  102.     if (!$buffer) {
  103.         return;
  104.     }
  105.    
  106.     $fp = $GLOBALS['fp'];
  107.     fprintf($fp, "  <programme start=\"%s +0900\" stop=\"%s +0900\" channel=\"%s\">\n", $buffer['startTime'], $buffer['endTime'], $buffer['ChannelId']);
  108.     fprintf($fp, "    <title lang=\"kr\">%s</title>\n", $buffer['programName']);
  109.     if($buffer['subprogramName']) :
  110.         fprintf($fp, "    <sub-title lang=\"kr\">%s</sub-title>\n", $buffer['subprogramName']);
  111.     endif;
  112.     if($GLOBALS['addverbose']=='y') :
  113.         fprintf($fp, "    <desc lang=\"kr\">%s</desc>\n", $buffer['desc']);
  114.         if($buffer['actors'] || $buffer['producers']):
  115.             fprintf($fp, "    <credits>\n");
  116.             if($buffer['actors']) :
  117.                 foreach(explode(',', $buffer['actors']) as $actor):
  118.                     if(trim($actor)) fprintf($fp, "      <actor>%s</actor>\n", trim($actor));
  119.                 endforeach;
  120.             endif;
  121.             if($buffer['producers']) :
  122.                 foreach(explode(',', $buffer['producers']) as $producer):
  123.                     if(trim($producer)) fprintf($fp, "      <producer>%s</producer>\n", trim($producer));
  124.                 endforeach;
  125.             endif;
  126.             fprintf($fp, "    </credits>\n");
  127.         endif;
  128.     endif;
  129.     if($buffer['category']) fprintf($fp, "    <category lang=\"kr\">%s</category>\n", $buffer['category']);
  130.     if($buffer['contentType']) fprintf($fp, "    <category lang=\"en\">%s</category>\n", $buffer['contentType']);
  131.     if($buffer['episode'] && $GLOBALS['addxmltvns']=='y') fprintf($fp, "    <episode-num system=\"xmltv_ns\">%s</episode-num>\n", $buffer['episode_ns']);
  132.     if($buffer['episode'] && $GLOBALS['addxmltvns']!='y') fprintf($fp, "    <episode-num system=\"onscreen\">%s</episode-num>\n", $buffer['episode_on']);
  133.     if($buffer['rebroadcast']) fprintf($fp, "    <previously-shown />\n");
  134.     if($buffer['rating']) :
  135.         fprintf($fp, "    <rating system=\"KMRB\">\n");
  136.         fprintf($fp, "      <value>%s</value>\n", $buffer['rating']);
  137.         fprintf($fp, "    </rating>\n");
  138.     endif;
  139.     fprintf($fp, "  </programme>\n");
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement