add load and setup methods

This commit is contained in:
stubbfel
2014-07-30 22:59:03 +02:00
parent d1e64e66de
commit 67e74675ed
10 changed files with 113 additions and 39 deletions

View File

@@ -1,7 +1,7 @@
__author__ = 'dev'
Config = {
"FeedLinkTypes" : {"application/x-bittorrent","mp3"},
"FeedLinkTypes" : {"audio/mpeg","application/x-bittorrent"},
"FeedTypes" : {"podcast","rss"},
"FeedStorageFolder" : "testfeeds",
"FeedStoragePrefix" : { "0" : "FeedType", "1" : "FeedName"},

View File

@@ -1,40 +1,67 @@
__author__ = 'dev'
from utilities.jsonfile import JsonFile
from utilities.feedfile import FeedFile
from config.config import Config
from utilities.podcastserializer import PodcastSerializer
import os
import feedparser
class Feed:
def __init__(self, feed_name=None, feed_type=None, link_type=None, feed_url=None):
self.valid_file_types = {"application/x-bittorrent","mp3"}
self.config_path = None
self.feed_folder_path = None
self.feed_config = None
self.setup_feed(feed_name, feed_type, link_type, feed_url)
def load_feed(self):
assert self.feed_config is not None
return feedparser.parse(self.feed_config["FeedUrl"])
def setup_feed(self, feed_name, feed_type, link_type, feed_url):
assert feed_name is not None
assert feed_type is not None
assert link_type is not None
assert feed_url is not None
self.feed_config = self.create_feed_config_file(feed_name, feed_type, link_type, feed_url)
self.config_path = self.create_feed_config_path()
if os.path.exists(self.config_path) is False:
self.write_feed_config_file()
def new_feed_folder(self):
feed_folder = Config["FeedStorageFolder"]
feed_folder_prefix = Config["FeedStoragePrefix"]
for i in range(len(feed_folder_prefix)):
value = feed_folder_prefix.get(str(i))
if value is not None:
tmpValue = self.feed_config.get(value)
if tmpValue is not None:
value = tmpValue
if self.feed_folder_path is None:
assert self.feed_config is not None
feed_folder = Config.get("FeedStorageFolder")
assert feed_folder is not None
feed_folder_prefix = Config.get("FeedStoragePrefix")
assert feed_folder_prefix is not None
feed_folder += "/" + value
else:
break
for i in range(len(feed_folder_prefix)):
value = feed_folder_prefix.get(str(i))
if value is not None:
tmp_value = self.feed_config.get(value)
if tmp_value is not None:
value = tmp_value
feed_folder += "/" + value
else:
break
if not os.path.exists(feed_folder):
self.feed_folder_path = feed_folder
if not os.path.exists(self.feed_folder_path):
os.mkdir(feed_folder)
return os.path.abspath(feed_folder)
return self.feed_folder_path
def create_feed_config_file(self, feed_name, feed_type, link_type, feed_url):
feed_config =\
assert feed_name is not None
assert feed_type is not None
assert link_type is not None
assert feed_url is not None
feed_config = \
{
"FeedName": feed_name,
"FeedType": feed_type,
@@ -43,7 +70,11 @@ class Feed:
}
return feed_config
def create_feed_config_path(self):
if self.config_path is None:
self.config_path = self.new_feed_folder() + "/" + self.feed_config["FeedName"] + Config["ConfigFileSuffix"] + Config["ConfigFileExtension"]
return self.config_path
def write_feed_config_file(self, feed_folder):
file = JsonFile(feed_folder + self.feed_config["FeedName"] + Config["ConfigFileSuffix"] + Config["ConfigFileExtension"])
def write_feed_config_file(self):
file = JsonFile(self.create_feed_config_path())
file.write_json_file(self.feed_config)

View File

@@ -21,7 +21,7 @@ class FeedFile(JsonFile):
feed_str = self.read_text_file()
return feedparser.parse(feed_str)
def write_feedjson_file(self, feed, serializer=None):
def write_feed_json_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

View File

@@ -1,9 +1,13 @@
__author__ = 'dev'
import json
from utilities.serializer import Serializer
from config.config import Config
class PodcastSerializer(Serializer):
def __init__(self, episode_file_type):
self.episode_file_type = episode_file_type
def serialize(self, dict_object):
"""
method convert i dict to a string.
@@ -18,7 +22,7 @@ class PodcastSerializer(Serializer):
for episode in dict_object["entries"]:
filelink = ""
for links in episode["links"]:
if links["type"] == 'application/x-bittorrent':
if links["type"] == self.episode_file_type:
filelink = links["href"]
tempepisode = {