add new feeds

This commit is contained in:
stubbfel
2016-04-08 00:11:25 +02:00
parent c50b890805
commit 20cc6dfba3
17 changed files with 1549 additions and 678 deletions

View File

@@ -0,0 +1,21 @@
import os
import sys
import shutil
import glob
import stat
from http.server import HTTPServer, CGIHTTPRequestHandler
import ui.web.cgi.pages
def runServer(workingDir, serverAddress=('',8080)):
page_folder = os.path.join(workingDir, "cgi-bin/")
if(not os.path.exists(page_folder)):
srcpagefolder = str(sys.modules['ui.web.cgi.pages']).replace("<module 'ui.web.cgi.pages' from '", "").replace("/__init__.py'>","")
shutil.copytree(srcpagefolder, page_folder)
os.chdir(page_folder)
for file in glob.glob('*.py'):
os.chmod(file, stat.S_IXUSR | stat.S_IWUSR | stat.S_IRUSR)
os.chdir('..')
server = HTTPServer(serverAddress, CGIHTTPRequestHandler)
server.serve_forever()

View File

@@ -0,0 +1,44 @@
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import cgi
import urllib
from feed.feed import Feed
def create_episode_list(episodes, feedFolder):
result = []
for episode in episodes:
result.append('''<li><a href="FileLoader.py?{EpisodeUrl}" target="_blank">{EpisodeTitle}</a> <i>{EpisodeDate}</i>
<p>{EpisodeSubTitle}</p></li>'''.format(EpisodeTitle=episode["title"], EpisodeSubTitle=episode["subtitle"], EpisodeDate=episode["pubdate"], EpisodeUrl=urllib.parse.urlencode({'EpisodeTitle': episode["title"], 'FeedFolder': feedFolder})))
return "\n".join(result)
arguments = cgi.FieldStorage()
feedFolder =arguments["FeedFolder"].value
feed = Feed.create_feed_from_feed_folder_path(feedFolder)
feedObj = feed.get_feed_items()
page = '''Content-Type: text/html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Feed: {FeedName} - {FeedTitle}</title>
</head>
<body>
<h1>Feed: {FeedName} - {FeedTitle}</h1>
<h2>{FeedSubTitle}</h2>
<p>{FeedSummary}</p>
<ul>
{EpisodeList}
</ul>
</body>
</html>'''.format(FeedName=feed.name, FeedTitle=feedObj["title"], FeedSubTitle=feedObj["subtitle"], FeedSummary=feedObj["summary"], EpisodeList=create_episode_list(feedObj["episodes"], feed.feed_folder_path))
print(page)

View File

@@ -0,0 +1,48 @@
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import cgi
import os
import subprocess
from feed.feed import Feed
arguments = cgi.FieldStorage()
feedFolder = arguments["FeedFolder"].value
feed = Feed.create_feed_from_feed_folder_path(feedFolder)
feedObj = feed.get_feed_items()
feedName = feed.name
episodeTitle = arguments["EpisodeTitle"].value
episode = Feed.FindItem(feedObj["episodes"], "title", episodeTitle)
originLink = episode["file_link"]
filename, file_extension = os.path.splitext(originLink)
mylinkPrefix = os.path.join(feedFolder, episodeTitle.replace(" ", "_"))
mylink = mylinkPrefix + file_extension
if not os.path.exists(mylink):
subprocess.call(['curl -Lo "{Mylink}" "{OriginLink}" &'.format(Mylink=mylink, OriginLink=originLink)],
shell=True
)
page = '''Content-Type: text/html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>FileLoad</title>
</head>
<body>
<h1>FileLoad</h1>
<h2>{FeedName}: {EpisodeTitle}</h2>
<ul>
<li><audio src="../{MyLinkUrl}" controls preload="auto"></audio></li>
<li>MyLink: <a href="../{MyLinkUrl}" target="_blank">{MyLinkUrl}</a></li>
<li>OriginLink: <a href="{OriginEpisodeUrl}" target="_blank">{OriginEpisodeUrl}</a></li>
</body>
</html>'''.format(FeedName=feedName, EpisodeTitle=episodeTitle, OriginEpisodeUrl=originLink, MyLinkUrl=mylink)
print(page)

View File

@@ -0,0 +1,70 @@
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import urllib
import os
from datetime import datetime
from feed.feed import Feed
def create_feed_list(feeds):
result = []
for feed in feeds:
result.append('''<li><a href="FeedOverview.py?{FeedFolder}">{FeedType}:{FeedName}</a></li>
'''.format(FeedName=feed.name, FeedType=feed.type, FeedFolder=urllib.parse.urlencode({'FeedFolder': feed.feed_folder_path})))
return "\n".join(result)
def create_episode_list(feeds):
result = []
episodes = []
for feed in feeds:
feedObj = feed.get_feed_items()
if not "episodes" in feedObj:
continue
feedEpisodes = feedObj["episodes"]
for feedEpisode in feedEpisodes:
feedEpisode["FeedFolder"] = feed.feed_folder_path
feedEpisode["FeedName"] = feed.name
episodes.extend(feedEpisodes)
for episode in sorted(episodes, key= lambda x: datetime.strptime(x["pubdate"], "%a, %d %b %Y %X %z"), reverse=True)[0:50]:
result.append('''<li><a href="FeedOverview.py?{FeedFolder}"">{FeedName}:</a> <a href="FileLoader.py?{EpisodeUrl}" target="_blank">{EpisodeTitle}</a></li>
'''.format(EpisodeTitle=episode["title"], EpisodeUrl=urllib.parse.urlencode({'EpisodeTitle': episode["title"], 'FeedFolder': episode["FeedFolder"]}), FeedName=episode["FeedName"], FeedFolder=urllib.parse.urlencode({'FeedFolder': episode["FeedFolder"]})))
return "\n".join(result)
feed_list_items = Feed.create_feeds_from_storage_folder()
for feed in feed_list_items:
if not os.path.exists(feed.feed_file_path):
feed.load_new_feed()
page = '''Content-Type: text/html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>FeedIndexSeite</title>
</head>
<body>
<h1>FeedIndexSeite</h1>
<h2>FeedListe</h2>
<ul>
{FeedListItems}
</ul>
<h2>EpisodeListe (neuste 50)</h2>
<ul>
{EpisodeListItems}
</ul>
</body>
</html>'''.format(FeedListItems=create_feed_list(feed_list_items), EpisodeListItems= create_episode_list(feed_list_items))
print(page)