From 0f4e6756046f8662db3027a523332ee796e3afee Mon Sep 17 00:00:00 2001 From: Castro0o Date: Sun, 31 May 2015 18:35:08 +0200 Subject: [PATCH] just working --- .gitignore | 3 +- mmdc_modules.py | 17 +++++ mmdc_x.py | 172 +++++++++++++++++++++++++++++++++++++++++++++ page-template.html | 2 +- 4 files changed, 192 insertions(+), 2 deletions(-) create mode 100755 mmdc_x.py diff --git a/.gitignore b/.gitignore index 61afa13..cc95fa7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ *.pyc web/20*.html *.json -\#*\# \ No newline at end of file +\#*\# +web/* \ No newline at end of file diff --git a/mmdc_modules.py b/mmdc_modules.py index 2602eaf..efe280e 100644 --- a/mmdc_modules.py +++ b/mmdc_modules.py @@ -161,3 +161,20 @@ def replace_img_a_tag(img_anchor): + + +# Index Creation +def index_addwork(parent, workid, href, thumbnail, title, creator, date): + child_div = ET.SubElement(parent, 'div', attrib={'class':'item', + 'id':workid, + 'data-title':title, + 'data-creator':creator, + 'data-date':date}) + + grandchild_a = ET.SubElement(child_div, 'a', attrib={'href':href, 'class':'work'}) + if thumbnail is '': + grandgrandchild_h3 = ET.SubElement(grandchild_a, 'h3', attrib={'class':'work', 'id':'thumbnail_replacement'}) + grandgrandchild_h3.text=title + else: + grandgrandchild_img = ET.SubElement(grandchild_a, 'img', attrib={'class':'work', 'src':thumbnail}) + # need to add css width to div.item diff --git a/mmdc_x.py b/mmdc_x.py new file mode 100755 index 0000000..f27ee89 --- /dev/null +++ b/mmdc_x.py @@ -0,0 +1,172 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- + +import xml.etree.ElementTree as ET +import html5lib, urllib, pprint +from mmdc_modules import pandoc2html, parse_work, write_html_file, mw_cats, mw_page_imgsurl, mw_img_url, mw_page_text, mwsite, mw_page_cats, mw_page, remove_cats, find_authors, replace_video, replace_img_a_tag, index_addwork +# unsued from bs_modules: replace_gallery, replace_video, index_addwork, +from argparse import ArgumentParser +from random import shuffle as shuffle + + +##### +# Args +#### +p = ArgumentParser() +p.add_argument("--host", default="pzwiki.wdka.nl") +p.add_argument("--path", default="/mw-mediadesign/", help="nb: should end with /") +p.add_argument("--category", "-c", nargs="*", default=[["2015", "Graduation_work"]], action="append", help="category to query, use -c foo -c bar to intersect multiple categories") +p.add_argument("--preview", help='Preview page. Will override category querying. Use: --page "Name Of Wiki Page"') + +args = p.parse_args() + +print 'args', args + +###### +# DEFS: create_page create_index +###### +def create_page(memberpages, mode): + page_template = open("page-template.html", "r") + indexdict = {} #parent dict: contains articledict instances + for member in memberpages: + print member + page = mw_page(site, member) + page_text = mw_page_text(site, page) + articledict = parse_work(site, member, page_text) # create dictionary w/ page co + if len(articledict['Creator'])>0 and len(articledict['Title'])>0 and len(articledict['Thumbnail'])>0: + for key in articledict.keys():# convert Extra, Description, Bio to HTML + if key in ['Extra', 'Description', 'Bio']: + articledict[key] = pandoc2html(articledict[key]) + elif key in ['Creator']: + articledict[key] = articledict[key].replace(',','' ) + elif key in ['Content']: + articledict[key] = remove_cats(articledict['Content']) + articledict[key] = replace_video(articledict['Content']) + + +# page_imgs = mw_page_imgsurl(site, page) + # page_imgs = { key.capitalize():value for key, value in page_imgs.items()} # capatalize keys, so can be called later + # #articledict = {'Title': member, 'Content': page_text, 'Categories':page_cats, 'Images': page_imgs} + + + page_tree = html5lib.parse(page_template, namespaceHTMLElements=False) + page_title = page_tree.find('.//title') + page_title.text=articledict['Title']#.decode('utf-8') + page_creator = page_tree.find('.//h2[@id="creator"]') + page_creator.text=(articledict['Creator']) + page_title_date = page_tree.find('.//p[@id="title"]') + page_title_date.text=u"{} {}".format(articledict['Title'], articledict['Date']) + page_description = page_tree.find('.//div[@id="description"]') + page_description_el = ET.fromstring('
'+articledict['Description'].encode('utf-8')+'
') + page_description.extend(page_description_el) + page_bio = page_tree.find('.//div[@id="bio"]') + page_bio_el = ET.fromstring('
'+articledict['Bio'].encode('utf-8')+'
') + page_bio.extend(page_bio_el) + page_sortArea_title = page_tree.find('.//div[@id="sortArea"]/p') + page_sortArea_title.text =articledict['Title'] + page_extra = page_tree.find('.//div[@id="extra"]') + page_extra_el = ET.fromstring('
'+articledict['Extra'].encode('utf-8')+'
') + page_extra.extend(page_extra_el) + page_website = page_tree.find('.//p[@class="hightlightSidebar"]/a') + page_website.set('href', articledict['Website']) + page_website.text=articledict['Website'] + page_thumb = page_tree.find('.//img[@id="thumbnail"]') + page_thumb.set('src', articledict['Thumbnail']) + + # give work page's imgs full url + imgs = page_tree.findall('.//img') + # for img in imgs: + # img_class = img.get('class') + # if img_class != 'template': + # src =unicode(img.get('src')) + # for pair in workpage_imgs: + # if src.replace("_", " ") in pair[0]:#if img in html matchs img in workpage_imgs + # img.set('src', pair[1]) + + # save work page + creator = articledict['Creator'].encode('ascii', 'ignore') + creator = creator.replace(' ','_') + work_filename = 'web/works/{}-{}.html'.format(articledict['Date'], creator) + write_html_file(page_tree, work_filename) + articledict['Path'] = work_filename[4:] + indexdict[articledict['Title']] = articledict + return indexdict + + +def create_index(indexdict): + index_template = open("index-template.html", "r") + index_tree = html5lib.parse(index_template, namespaceHTMLElements=False) + index_container = index_tree.find(".//div[@class='isotope']") #maybe id is imp + for key in indexdict.keys(): + print 'key', key + index_addwork( parent=index_container, + workid=key, + href=indexdict[key]['Path'], + title=indexdict[key]['Title'],#.decode('utf-8'), + creator=indexdict[key]['Creator'], + date=indexdict[key]['Date'], + thumbnail=indexdict[key]['Thumbnail'] + ) + print '----', indexdict[key]['Title'],indexdict[key]['Path'] + # print ET.tostring(tree) + +#print index_tree, type(index_tree) + write_html_file(index_tree, 'web/index.html') + + + # authors = indexdict[article]['Authors'] + # path = indexdict[article]['Path'] + # issue = indexdict[article]['Category Issue'] + # section = indexdict[article]['Category Section'] + # topics = indexdict[article]['Category Topics'] + # images = indexdict[article]['Images'] + # index_section = index_tree.find('.//ul[@id="section_{}"]'.format(section.encode('utf-8'))) + # index_item = ET.SubElement(index_section, 'li', + # attrib={'class': " ".join(topics)+" "+section, + # 'data-name': article, + # 'data-section':section, + # 'data-categories': " ".join(topics)+" "+section + # }) + # article_link = ET.SubElement(index_item, 'a', attrib={'href':urllib.quote(path)}) + # article_link.text = article + # article_author = ET.SubElement(index_item, 'p', attrib={'class':'authorTitle'}) + # article_author.text = authors + + # for imgurl in images.values(): + # print 'imgurl', imgurl + # index_img_item = ET.SubElement(index_imgs_section, 'li', + # attrib={'class': " ".join(topics)+" "+section, + # 'data-name': article, + # 'data-section':section, + # 'data-categories': " ".join(topics)+" "+section, + # 'style':'position: absolute; left: 0px; top: 0px;' + # }) + # article_img_link = ET.SubElement(index_img_item, 'a', attrib={'href':urllib.quote(path)}) + # article_img_img = ET.SubElement(article_img_link, 'img', attrib={'src':imgurl}) + # title=index_tree.find('.//title') + # title.text = 'Beyond Social: ' + issue_current + # index_filename = 'index.html' + # write_html_file(index_tree, index_filename) + + +##### +# ACTION +##### +site = mwsite(args.host, args.path) + +if args.preview is not None: + print "** Page Preview Mode**" + memberpages = [args.preview.encode('utf-8')] + print 'memberpages:', memberpages + create_page(memberpages, 'preview') + +else: + print "** New Index Mode **" + memberpages=mw_cats(site, args) + shuffle(memberpages) + print 'memberpages:', memberpages + indexdict = create_page(memberpages, 'index') +# pprint.pprint(indexdict) + create_index(indexdict) + + diff --git a/page-template.html b/page-template.html index ea2ea10..6db16bc 100644 --- a/page-template.html +++ b/page-template.html @@ -17,7 +17,7 @@
-

Tempted by Tomorrow

+

Tempted by Tomorrow