on master help sign in
[ehn] Add a 'featured result feature'm putting on top of the reasults ddg definitions and wikipedia (ugly html / css)

[ehn] Add a templates for videos, so the thumbnails all have the same side

commitcf8f444e8597bf527ef4bfc691b6d45d5704f77f authorpw3t <romain@berthor.fr> dateSun 12 Jan 2014, 18:31 (13 years ago) parentad72c16
6 files changed+53−6
searx/engines/vimeo.py+7−3 searx/engines/youtube.py+9−2 searx/static/css/style.css+8 searx/templates/result_templates/videos.html+7 searx/templates/results.html+15 searx/webapp.py+7−1
searx/engines/vimeo.py+7−3
@@ -35,7 +35,11 @@ def response(resp):
3535 for result in dom.xpath(results_xpath):
3636 url = base_url + result.xpath(url_xpath)[0]
3737 title = p.unescape(extract_text(result.xpath(title_xpath)))
38− content = '<a href="{0}"> <img src="{2}"/> </a>'.format(url, title, extract_text(result.xpath(content_xpath)[0]))
39− results.append({'url': url, 'title': title, 'content': content})
40−
38+ thumbnail = extract_text(result.xpath(content_xpath)[0])
39+ content = '<a href="{0}"> <img src="{2}"/> </a>'.format(url, title, thumbnail)
40+ results.append({'url': url
41+ , 'title': title
42+ , 'content': content
43+ , 'template':'videos.html'
44+ , 'thumbnail': thumbnail})
4145 return results
searx/engines/youtube.py+9−2
@@ -26,14 +26,21 @@ def response(resp):
2626 url = url[:-1]
2727 title = result['title']['$t']
2828 content = ''
29+
30+ thumbnail = ''
2931 if len(result['media$group']['media$thumbnail']):
30− content += '<a href="{0}" title="{0}" ><img src="{1}" /></a>'.format(url, result['media$group']['media$thumbnail'][0]['url'])
32+ thumbnail = result['media$group']['media$thumbnail'][0]['url']
33+ content += '<a href="{0}" title="{0}" ><img src="{1}" /></a>'.format(url, thumbnail)
3134 if len(content):
3235 content += '<br />' + result['content']['$t']
3336 else:
3437 content = result['content']['$t']
3538
36− results.append({'url': url, 'title': title, 'content': content})
39+ results.append({'url': url
40+ , 'title': title
41+ , 'content': content
42+ , 'template':'videos.html'
43+ , 'thumbnail':thumbnail})
3744
3845 return results
3946
searx/static/css/style.css+8
@@ -70,6 +70,7 @@ a { text-decoration: none; color: #1a11be; }
7070a:visited { color: #7b11be; }
7171
7272.result { margin: 19px 0 18px 0; padding: 0; max-width: 55em; clear: both; }
73+.result:hover { background: #e8e7e6; }
7374.result_title { margin-bottom: 0; }
7475.result h3 { font-size: 1em; word-wrap:break-word; margin: 5px 0 1px 0; padding: 0 }
7576.result .content { font-size: 0.8em; margin: 0; padding: 0; max-width: 54em; word-wrap:break-word; line-height: 1.24; }
@@ -143,6 +144,13 @@ tr:hover td { background: #DDDDDD; }
143144
144145#result_count { font-size: 0.8em; margin: 2px 0 2px 0; padding: 0 }
145146
147+#fr { padding: 2px 6px;
148+display: inline-block;
149+background: #ECF0F1;
150+border-radius: 4px;
151+border: 1px solid #3498DB;;
152+width:55em;}
153+
146154#suggestions { position: absolute; left: 54em; width: 12em; margin: 0 2px 5px 5px; padding: 0 2px 2px 2px; }
147155#suggestions span { display: block; font-size: 0.8em; margin: 0 2px 10px 2px; padding: 0; }
148156#suggestions form { display: block; }
searx/templates/result_templates/videos.htmlnew file+7
@@ -0,0 +1,7 @@
1+<div class="result">
2+ <p>
3+ <h3 class="result_title"><a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
4+ <a href="{{ result.url }}"><img width="300" height="170" src="{{ result.thumbnail }}" title={{ result.title }} alt=" {{ result.title }}"/></a>
5+ <p class="url">{{ result.url }}</p>
6+ </p>
7+</div>
searx/templates/results.html+15
@@ -9,9 +9,24 @@
99 {% if suggestions %}
1010 <div id="suggestions"><span>Suggestions: </span>{% for suggestion in suggestions %}<form method="post" action="/"><input type="hidden" name="q" value="{{suggestion}}"><input type="submit" value="{{ suggestion }}" /></form>{% endfor %}</div>
1111 {% endif %}
12+
13+
1214 <div id ="result_count">
1315 Number of results: {{ number_of_results }}
1416 </div>
17+ {% if featured_results %}
18+ <div id="fr">
19+
20+ {% for result in featured_results %}
21+ {% if result['template'] %}
22+ {% include 'result_templates/'+result['template'] %}
23+ {% else %}
24+ {% include 'result_templates/default.html' %}
25+ {% endif %}
26+ {% endfor %}
27+ </div>
28+ {% endif %}
29+
1530 {% for result in results %}
1631 {% if result['template'] %}
1732 {% include 'result_templates/'+result['template'] %}
searx/webapp.py+7−1
@@ -125,6 +125,7 @@ def index():
125125
126126 results, suggestions = search(query, request, selected_engines)
127127
128+ featured_results = []
128129 for result in results:
129130 if request_data.get('format', 'html') == 'html':
130131 if 'content' in result:
@@ -139,6 +140,10 @@ def index():
139140 else:
140141 result['pretty_url'] = result['url']
141142
143+ if 'wikipedia' in result['engines'] or 'ddg definitions' in result['engines']:
144+ featured_results.append(result)
145+ results.remove(result)
146+
142147 if request_data.get('format') == 'json':
143148 return Response(json.dumps({'query': query, 'results': results}), mimetype='application/json')
144149 elif request_data.get('format') == 'csv':
@@ -167,7 +172,8 @@ def index():
167172 ,results=results
168173 ,q=request_data['q']
169174 ,selected_categories=selected_categories
170− ,number_of_results=len(results)
175+ ,number_of_results=len(results)+len(featured_results)
176+ ,featured_results=featured_results
171177 ,suggestions=suggestions
172178 )
173179