diff --git a/src/utilities/feedfile.py b/src/utilities/feedfile.py index 95c7f41..0271bcf 100644 --- a/src/utilities/feedfile.py +++ b/src/utilities/feedfile.py @@ -1,10 +1,10 @@ __author__ = 'stubbfel' import feedparser -from utilities.textfile import TextFile +from utilities.jsonfile import JsonFile from utilities.serializer import Serializer -class FeedFile(TextFile): +class FeedFile(JsonFile): def __init__(self, filename): """ @@ -21,7 +21,7 @@ class FeedFile(TextFile): feed_str = self.read_text_file() return feedparser.parse(feed_str) - def write_feed_file(self, feed, serializer=None): + def write_feedjson_file(self, feed, serializer=None): """ method write a feedparpser object to a text file. It use a certain serializer or the default serializer if type of the serializer is none @@ -31,8 +31,6 @@ class FeedFile(TextFile): assert isinstance(feed, feedparser.FeedParserDict) if serializer is None: - serializer = Serializer() - feed_string = serializer.serialize(feed) + self.write_json_file(feed) else: - feed_string = serializer.toString(feed) - self.write_text_file(feed_string) \ No newline at end of file + self.write_json_file(serializer.serialize(feed)) \ No newline at end of file diff --git a/src/utilities/podcastserializer.py b/src/utilities/podcastserializer.py index fccf711..89b0c9d 100644 --- a/src/utilities/podcastserializer.py +++ b/src/utilities/podcastserializer.py @@ -1,5 +1,5 @@ __author__ = 'dev' - +import json from utilities.serializer import Serializer class PodcastSerializer(Serializer): @@ -12,4 +12,27 @@ class PodcastSerializer(Serializer): :return: rhe string reprasention of the dict_object """ assert isinstance(dict_object, dict) - return str(dict_object) \ No newline at end of file + + episodeList = [] + + for episode in dict_object["entries"]: + filelink = "" + for links in episode["links"]: + if links["type"] == 'application/x-bittorrent': + filelink = links["href"] + + tempepisode = { + "title": episode["title"], + "subtitle": episode["subtitle"], + "filelink": filelink + } + episodeList.append(tempepisode) + + tempdict = { + "title": dict_object["feed"]["title"], + "subtitle": dict_object["feed"]["subtitle"], + "summary": dict_object["feed"]["summary"], + "episodes": episodeList + } + + return tempdict \ No newline at end of file diff --git a/src/utilities/serializer.py b/src/utilities/serializer.py index e8728fc..170bf1d 100644 --- a/src/utilities/serializer.py +++ b/src/utilities/serializer.py @@ -9,6 +9,7 @@ class Serializer(): this method should be override by any subclasses :param dict_object: object wich his to bee convert to a string :return: rhe string reprasention of the dict_object + :depicated """ assert isinstance(dict_object, dict) - return str(dict_object) \ No newline at end of file + return dict_object \ No newline at end of file diff --git a/testenv/tests/utilities/testfeedfile.py b/testenv/tests/utilities/testfeedfile.py index 8f9a555..346550e 100644 --- a/testenv/tests/utilities/testfeedfile.py +++ b/testenv/tests/utilities/testfeedfile.py @@ -13,11 +13,11 @@ class FeedUtilitiesTest(unittest.TestCase): feed = self.__ff.read_feed_file() self.assertTrue(isinstance(feed, feedparser.FeedParserDict)) - def test_write_feed_file(self): + def test_json_feed_file(self): feed = self.__ff.read_feed_file() ff2 = FeedFile("testfeed.xml") serializer = None - ff2.write_feed_file(feed, serializer) + ff2.write_feedjson_file(feed, serializer) feed2 = ff2.read_feed_file() self.assertTrue(isinstance(feed2, feedparser.FeedParserDict)) ff2.check_and_remove_file() @@ -27,7 +27,7 @@ class FeedUtilitiesTest(unittest.TestCase): feed = "Fail" ff2 = FeedFile("testfeed.xml") serializer = None - self.assertRaises(AssertionError, ff2.write_feed_file, feed, serializer) + self.assertRaises(AssertionError, ff2.write_feedjson_file, feed, serializer) ff2.check_and_remove_file() if __name__ == '__main__': diff --git a/testenv/tests/utilities/testpodcastserializer.py b/testenv/tests/utilities/testpodcastserializer.py index ee73c95..1207722 100644 --- a/testenv/tests/utilities/testpodcastserializer.py +++ b/testenv/tests/utilities/testpodcastserializer.py @@ -1,11 +1,26 @@ __author__ = 'dev' import unittest +from utilities.podcastserializer import PodcastSerializer +from utilities.feedfile import FeedFile +class PodCastSerializerUtilitiesTest(unittest.TestCase): + + def setUp(self): + self.__podcastfeed= FeedFile("testfeeds/podcast/sbk.xml").read_feed_file() + self.__serializer = PodcastSerializer() + + def test_serialize(self): + ff2 = FeedFile("testfeed.json") + ff2.write_feedjson_file(self.__podcastfeed, self.__serializer) + feed = ff2.read_json_file() + + self.assertIsNotNone(feed) + self.assertIsInstance(feed, dict) + self.assertNotEqual(feed, self.__podcastfeed) + + ff2.check_and_remove_file(); -class MyTestCase(unittest.TestCase): - def test_something(self): - self.assertEqual(True, False) if __name__ == '__main__': diff --git a/testenv/tests/utilities/testserializer.py b/testenv/tests/utilities/testserializer.py index 1bb8fe5..7e7c243 100644 --- a/testenv/tests/utilities/testserializer.py +++ b/testenv/tests/utilities/testserializer.py @@ -11,9 +11,8 @@ class SerializerUtilitiesTest(unittest.TestCase): self.__serializer = Serializer() def test_serialize(self): - test_string = self.__serializer.serialize(self.__testdict) - test_string2 = str(self.__testdict) - self.assertEqual(test_string, test_string2) + test_ser = self.__serializer.serialize(self.__testdict) + self.assertEqual(test_ser, self.__testdict) def test_serialize_error_not_equal(self): test_string = self.__serializer.serialize(self.__testdict)