Advertisement
g6man

part_of_epg2xml.py

Dec 3rd, 2018
572
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.37 KB | None | 0 0
  1. # Write Program
  2. buf = {}
  3. def writeProgram(programdata):
  4.     global buf
  5.     ChannelId = programdata['channelId']
  6.     startTime = programdata['startTime']
  7.     endTime = programdata['endTime']
  8.     programName = escape(programdata['programName']).strip()
  9.     subprogramName = escape(programdata['subprogramName']).strip()
  10.     matches = re.match('(.*) \(?(\d+부)\)?', unescape(programName.encode('utf-8', 'ignore')))
  11.     if not(matches is None):
  12.         programName = escape(matches.group(1)).strip();
  13.         subprogramName = escape(matches.group(2)) + ' ' + subprogramName
  14.         subprogramName = subprogramName.strip()
  15.     if programName is None:
  16.         programName = subprogramName
  17.     actors = escape(programdata['actors'])
  18.     producers = escape(programdata['producers'])
  19.     category = escape(programdata['category'])
  20.     episode = programdata['episode']
  21.     if episode:
  22.         try:
  23.             episode_ns = int(episode) - 1
  24.             episode_ns = '0'+ '.' +  str(episode_ns) + '.' + '0' + '/' + '0'
  25.         except ValueError as ex:
  26.             episode_ns = int(episode.split(',', 1)[0]) - 1
  27.             episode_ns = '0'+ '.' +  str(episode_ns) + '.' + '0' + '/' + '0'
  28.         episode_on = episode
  29.     else:
  30.         episode_ns = ''
  31.         episode_on = ''
  32.     rebroadcast = programdata['rebroadcast']
  33.     if episode and addepisode  == 'y': programName = programName + ' ('+ str(episode) + '회)'
  34.     if rebroadcast  == True and addrebroadcast == 'y' : programName = programName + ' (재)'
  35.     if programdata['rating'] == 0 :
  36.         rating = '전체 관람가'
  37.     else :
  38.         rating = '%s세 이상 관람가' % (programdata['rating'])
  39.     if addverbose == 'y':
  40.         desc = programName
  41.         if subprogramName : desc = desc + '\n부제 : ' + subprogramName
  42.         if rebroadcast == True and addrebroadcast == 'y' : desc = desc + '\n방송 : 재방송'
  43.         if episode : desc = desc + '\n회차 : ' + str(episode) + '회'
  44.         if category : desc = desc + '\n장르 : ' + category
  45.         if actors : desc = desc + '\n출연 : ' + actors.strip()
  46.         if producers : desc = desc + '\n제작 : ' + producers.strip()
  47.         desc = desc + '\n등급 : ' + rating
  48.     else:
  49.         desc =''
  50.     if programdata['desc'] : desc = desc + '\n' + escape(programdata['desc'])
  51.     desc = re.sub(' +',' ', desc)
  52.     contentTypeDict={'교양':'Arts / Culture (without music)', '만화':'Cartoons / Puppets', '교육':'Education / Science / Factual topics', '취미':'Leisure hobbies', '드라마':'Movie / Drama', '영화':'Movie / Drama', '음악':'Music / Ballet / Dance', '뉴스':'News / Current affairs', '다큐':'Documentary', '라이프':'Documentary', '시사/다큐':'Documentary', '연예':'Show / Game show', '스포츠':'Sports', '홈쇼핑':'Advertisement / Shopping'}
  53.     contentType = ''
  54.     for key, value in contentTypeDict.iteritems():
  55.         if key in category:
  56.             contentType = value
  57.     try:
  58.         splitProgram = buf['ChannelId'] == ChannelId and programName != '' and buf['programName'] == programName and buf['episode'] == episode
  59.     except KeyError:
  60.         splitProgram = False
  61.  
  62.     if splitProgram:
  63.         buf['endTime'] = endTime
  64.         buf['subprogramName'] = ''
  65.         return
  66.     elif buf:
  67.         printBuffer()
  68.  
  69.     buf = {
  70.         'startTime': startTime,
  71.         'endTime': endTime,
  72.         'ChannelId': ChannelId,
  73.         'programName': programName,
  74.         'subprogramName': subprogramName,
  75.         'desc': desc,
  76.         'actors': actors,
  77.         'producers': producers,
  78.         'category': category,
  79.         'contentType': contentType,
  80.         'episode': episode,
  81.         'episode_ns': episode_ns,
  82.         'episode_on': episode_on,
  83.         'rebroadcast': rebroadcast,
  84.         'rating': rating,
  85.     }
  86.  
  87. def printBuffer():
  88.     if not buf:
  89.         return
  90.  
  91.     print('  <programme start="%s +0900" stop="%s +0900" channel="%s">' % (buf['startTime'], buf['endTime'], buf['ChannelId']))
  92.     print('    <title lang="kr">%s</title>' % (buf['programName']))
  93.     if buf['subprogramName']:
  94.         print('    <sub-title lang="kr">%s</sub-title>' % (buf['subprogramName']))
  95.     if addverbose == 'y':
  96.         print('    <desc lang="kr">%s</desc>' % (buf['desc']))
  97.         if buf['actors'] or buf['producers']:
  98.             print('    <credits>')
  99.             if buf['actors']:
  100.                 for actor in buf['actors'].split(','):
  101.                     if actor.strip(): print('      <actor>%s</actor>' % (actor.strip()))
  102.             if buf['producers']:
  103.                 for producer in buf['producers'].split(','):
  104.                     if producer.strip(): print('      <producer>%s</producer>' % (producer).strip())
  105.             print('    </credits>')
  106.     if buf['category']: print('    <category lang="kr">%s</category>' % (buf['category']))
  107.     if buf['contentType']: print('    <category lang="en">%s</category>' % (buf['contentType']))
  108.     if buf['episode'] and addxmltvns == 'y': print('    <episode-num system="xmltv_ns">%s</episode-num>' % (buf['episode_ns']))
  109.     if buf['episode'] and addxmltvns != 'y': print('    <episode-num system="onscreen">%s</episode-num>' % (buf['episode_on']))
  110.     if buf['rebroadcast']: print('    <previously-shown />')
  111.     if buf['rating']:
  112.         print('    <rating system="KMRB">')
  113.         print('      <value>%s</value>' % (buf['rating']))
  114.         print('    </rating>')
  115.     print('  </programme>')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement