Browse Source

Merge branch 'master' of https://github.com/asciimoo/searx into filtron

Markus Heiser 5 years ago
parent
commit
26b85659c0

+ 24 - 0
searx/templates/__common__/opensearch_response_rss.xml

@@ -25,5 +25,29 @@
       {% if r.pubdate %}<pubDate>{{ r.pubdate }}</pubDate>{% endif %}
     </item>
     {% endfor %}
+    {% if answers %}
+      {% for a in answers %}
+      <item>
+        <title>{{ a }}</title>
+        <type>answer</type>
+      </item>
+      {% endfor %}
+    {% endif %}
+    {% if corrections %}
+      {% for a in corrections %}
+      <item>
+        <title>{{ a }}</title>
+        <type>correction</type>
+      </item>
+      {% endfor %}
+    {% endif %}
+    {% if suggestions %}
+      {% for a in suggestions %}
+      <item>
+        <title>{{ a }}</title>
+        <type>suggestion</type>
+      </item>
+      {% endfor %}
+    {% endif %}
   </channel>
 </rss>

+ 16 - 2
searx/webapp.py

@@ -626,20 +626,34 @@ def index():
                         mimetype='application/json')
     elif output_format == 'csv':
         csv = UnicodeWriter(StringIO())
-        keys = ('title', 'url', 'content', 'host', 'engine', 'score')
+        keys = ('title', 'url', 'content', 'host', 'engine', 'score', 'type')
         csv.writerow(keys)
         for row in results:
             row['host'] = row['parsed_url'].netloc
+            row['type'] = 'result'
+            csv.writerow([row.get(key, '') for key in keys])
+        for a in result_container.answers:
+            row = {'title': a, 'type': 'answer'}
+            csv.writerow([row.get(key, '') for key in keys])
+        for a in result_container.suggestions:
+            row = {'title': a, 'type': 'suggestion'}
+            csv.writerow([row.get(key, '') for key in keys])
+        for a in result_container.corrections:
+            row = {'title': a, 'type': 'correction'}
             csv.writerow([row.get(key, '') for key in keys])
         csv.stream.seek(0)
         response = Response(csv.stream.read(), mimetype='application/csv')
-        cont_disp = 'attachment;Filename=searx_-_{0}.csv'.format(search_query.query)
+        cont_disp = 'attachment;Filename=searx_-_{0}.csv'.format(search_query.query.decode('utf-8'))
         response.headers.add('Content-Disposition', cont_disp)
         return response
     elif output_format == 'rss':
+        print(results)
         response_rss = render(
             'opensearch_response_rss.xml',
             results=results,
+            answers=result_container.answers,
+            corrections=result_container.corrections,
+            suggestions=result_container.suggestions,
             q=request.form['q'],
             number_of_results=number_of_results,
             base_url=get_base_url(),

+ 3 - 3
tests/unit/test_webapp.py

@@ -99,9 +99,9 @@ class ViewsTestCase(SearxTestCase):
         result = self.app.post('/', data={'q': 'test', 'format': 'csv'})
 
         self.assertEqual(
-            b'title,url,content,host,engine,score\r\n'
-            b'First Test,http://first.test.xyz,first test content,first.test.xyz,startpage,\r\n'  # noqa
-            b'Second Test,http://second.test.xyz,second test content,second.test.xyz,youtube,\r\n',  # noqa
+            b'title,url,content,host,engine,score,type\r\n'
+            b'First Test,http://first.test.xyz,first test content,first.test.xyz,startpage,,result\r\n'  # noqa
+            b'Second Test,http://second.test.xyz,second test content,second.test.xyz,youtube,,result\r\n',  # noqa
             result.data
         )