update
authorMart Lubbers <mart@martlubbers.net>
Thu, 2 Oct 2014 09:57:30 +0000 (11:57 +0200)
committerMart Lubbers <mart@martlubbers.net>
Thu, 2 Oct 2014 09:57:30 +0000 (11:57 +0200)
program/everything/contextmenu_o.js
program/everything/crawler.py
program/everything/index.py
program/everything/input_app.py
program/everything/main.html.t
program/everything/new.html.t

index b04c2b2..b7b6d1f 100644 (file)
@@ -87,13 +87,24 @@ function f_clear() {
     }
 }
 
-function post_all() {
+function post_all(num) {
     var xmlhttp = new XMLHttpRequest();
-    xmlhttp.onreadystatechange=function()
-    {
-        if (xmlhttp.readyState==4)
+    if(num == 1){
+        xmlhttp.onreadystatechange=function()
         {
-            document.write(xmlhttp.responseText);
+            if (xmlhttp.readyState==4)
+            {
+                document.write(xmlhttp.responseText);
+            }
+        }
+    } else {
+        xmlhttp.onreadystatechange=function()
+        {
+            if (xmlhttp.readyState==4)
+            {
+                field = document.getElementById("preview_field");
+                field.innerHTML = xmlhttp.responseText;
+            }
         }
     }
     var params = "content="+encodeURIComponent(document.getElementById("content-table").innerHTML);
@@ -102,7 +113,7 @@ function post_all() {
     for (var i = 0; i<indatarray.length; i++) {
         params += "&" + indatarray[i].name + "=" + indatarray[i].value;
     }
-    xmlhttp.open("POST", "hyper.py", true);
+    xmlhttp.open("POST", num == 1 ? "hyper.py" : "preview.py", true);
     xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     xmlhttp.setRequestHeader("Content-length", params.length); 
     xmlhttp.send(params);
index 52c3f2c..39f2e9b 100644 (file)
@@ -48,7 +48,7 @@ class Crawler():
         return self.entries.keys()
 
     def add_entry(self, d):
-        if d['name'] in self.entries:
+        if d['name'] in self.entries and False:
             raise Exception('That name is already present')
         else:
             self.entries[d['name']] = d
@@ -66,8 +66,6 @@ class Crawler():
                 f.write(pickle.dumps(entries2))
             status += 'Crawler written succesfully<br />'
         except Exception, e:
-            #  print 'something went wrong writing: {}'.format(e)
-            #  print 'restoring backup'
             status += 'Something went wrong: {}<br />'.format(e)
             os.rename('{}.bak'.format(path), path)
             status += 'Writing failed, restored backup<br />'
@@ -178,6 +176,17 @@ class Crawler():
             raise Exception('interval is either 0 or unparsable')
         return now - last_run >= time_wait
 
+    def full_run(self, name):
+        if name not in self.entries:
+            return []
+        results = []
+        entry = self.entries[name]
+        feed = feedparser.parse('http://' + entry['url'])
+        for i in feed.entries:
+            results.append(
+                (i, self.test_entry(name, i['title'], i['summary'])))
+        return results
+
     def run_entry(self, name):
         edict = self.entries[name]
         if 'db' not in edict:
index 62bb377..146fa67 100644 (file)
@@ -73,15 +73,12 @@ def crawler_test(req, args, apok):
     if 'name' not in args or str(args['name']) not in cr.entries:
         req.write('Name not in the crawler...<br/>')
     else:
-        args['summary'] = args.get('summary', '')
-        args['title'] = args.get('title', '')
-        respons = cr.test_entry(str(args['name']), str(args['title']),
-                                str(args['summary']))
-        req.write('<b>Title:</b> {}<br/><b>Summary: </b>{}<br/>'.format(
-            str(args['title']), str(args['summary'])))
-        req.write('<br/><b>Results:</b><br/>')
-        req.write('<br/>'.join('{}: {}'.format(k, v)
-                  for k, v in sorted(respons.iteritems())))
+        data = cr.full_run(args['name'])
+        for entry, dc in data:
+            req.write(u'<br/><b>entry</b>: {title}, {summary}<br/>'.
+                      format(**entry).encode('utf-8'))
+            for k, v in dc.iteritems():
+                req.write(u'<b>{}</b>: {}<br/>'.format(k, v).encode('utf-8'))
     req.write('<br/><br/><a href="index.py">Go back</a>')
     return apok
 
@@ -98,7 +95,7 @@ def feed2html(url, name):
                    'cel--></tr><!--line-->').format(
             i['title'].encode('ascii', 'xmlcharrefreplace'),
             i['summary'].encode('ascii', 'xmlcharrefreplace'))
-    return result
+    return result + '</table>'
 
 
 def input_data(dictio):
@@ -142,3 +139,8 @@ def crawler_new(req, args, apok):
             'feed_html': feed2html(args['url'], args['name'])}
         req.write(data.format(**params))
     return apok
+
+def crawler_preview(req, args, apok):
+    req.log_error('handler')
+    req.content_type = 'text/html'
+    req.send_http_header()
index 107cd69..dc57287 100644 (file)
@@ -14,7 +14,7 @@ def req_pre_pos(req):
     req.content_type = 'text/html'
     req.send_http_header()
     args = util.FieldStorage(req)
-    listing = data_main(args)
+    listing, crawl = data_main(args)
     req.write(
         '<html>\n<head>\n'
         '\t<title>VER: 0.01 - HyperFrontend RSS feed POSTREQUEST</title>'
@@ -152,8 +152,8 @@ def data_main(d, force=False):
     del(d['matchdata'])
     crawl = crawler.Crawler()
     crawl.add_entry(d)
-    status = crawl.write()
-    return crawl.list_names()
+    crawl.write()
+    return crawl.list_names(), crawl
 
 
 def feed2html(req, url, name):
@@ -183,7 +183,13 @@ def handler(req):
         return index.crawler_new(req, util.FieldStorage(req), apache.OK)
     else:
         if req.method == "POST":
-            req_pre_pos(req)
+            if req.uri.split('/')[-1] == 'hyper.py':
+                req_pre_pos(req)
+            elif req.uri.split('/')[-1] == 'preview.py':
+                args = util.FieldStorage(req)
+                listing, crawl = data_main(args)
+                return index.crawler_test(req, {'name': args['name']},
+                                          apache.OK)
         else:
             req.write('Unknown case')
         return apache.OK
index b7c571b..87c0fba 100644 (file)
@@ -44,8 +44,6 @@
                                                                {active_crawlers_dropdown}
                                                        </select>
                                                </td></tr>
-                                               <tr><td>Title:</td><td><input type="text" name="title"></td></tr>
-                                               <tr><td>Summary:</td><td><input type="text" name="summary"></td></tr>
                                                <tr><td><input type="submit" value="Submit"></td></tr>
                                        </table>
                                </form>
index 1ecfbbd..7ba7602 100644 (file)
        <button onclick="javascript:f_clear()">Clear selection</button>
        <br/>Loading "{url}" as <b><p id="rssname">{rssname}</p></b><br/>
 {feed_html}
-       <button onclick="javascript:post_all()" method="post" target="_blank">Submit</button>
+       <button onclick="javascript:post_all(1)" method="post" target="_blank">Submit</button>
+       <button onclick="javascript:post_all(0)" method="post" target="_blank">Preview</button>
+       <br />
+       <p>Preview:<p>
+       <p id="preview_field"><p>
 </body>
 </html>