#
# This file is part of stov, written by Helmut Pozimski in 2012.
#
# stov is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 2 of the License.
#
# stov is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with stov. If not, see .
# -*- coding: utf8 -*-
from __future__ import unicode_literals
from xml.dom.minidom import parseString
class Parser(object):
def __init__(self, api_result):
self.__api_data = api_result
def parse(self):
"""Take the youtube API data and extract the important entries"""
dom = parseString(self.__api_data)
channel = YtChannel()
i = 0
for title in dom.getElementsByTagName('title'):
xmlTag = title.toxml()
if i == 0:
channel.title = xmlTag.replace('
', '').replace('', '')
channel.title = channel.title.replace('&', '&').replace('"', '"')
else:
video_title = xmlTag.replace('', '').replace('', '')
video_title = video_title.replace('&', '&').replace('"', '"')
xmlTag = dom.getElementsByTagName('media:description')[i-1].toxml()
video_description = xmlTag.replace('',
'').replace('', '')
video_id = dom.getElementsByTagName('yt:videoid')[i-1].toxml()
video_id = video_id.replace('', '').replace('',
'')
channel.videos.append(YtVideo(video_title, video_description, video_id))
i = i + 1
return channel
class YtChannel(object):
def __init__(self):
self.title = ""
self.videos = []
class YtVideo(object):
def __init__(self, title, description, ytid):
self.title = title
self.description = description
self.ytid = ytid