add new feeds
This commit is contained in:
@@ -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()
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user