ollama_chat 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/.all_images.yml +17 -0
  3. data/.gitignore +9 -0
  4. data/Gemfile +5 -0
  5. data/README.md +159 -0
  6. data/Rakefile +58 -0
  7. data/VERSION +1 -0
  8. data/bin/ollama_chat +5 -0
  9. data/lib/ollama_chat/chat.rb +398 -0
  10. data/lib/ollama_chat/clipboard.rb +23 -0
  11. data/lib/ollama_chat/dialog.rb +94 -0
  12. data/lib/ollama_chat/document_cache.rb +16 -0
  13. data/lib/ollama_chat/follow_chat.rb +60 -0
  14. data/lib/ollama_chat/information.rb +113 -0
  15. data/lib/ollama_chat/message_list.rb +216 -0
  16. data/lib/ollama_chat/message_type.rb +5 -0
  17. data/lib/ollama_chat/model_handling.rb +29 -0
  18. data/lib/ollama_chat/ollama_chat_config.rb +103 -0
  19. data/lib/ollama_chat/parsing.rb +159 -0
  20. data/lib/ollama_chat/source_fetching.rb +173 -0
  21. data/lib/ollama_chat/switches.rb +119 -0
  22. data/lib/ollama_chat/utils/cache_fetcher.rb +38 -0
  23. data/lib/ollama_chat/utils/chooser.rb +53 -0
  24. data/lib/ollama_chat/utils/fetcher.rb +175 -0
  25. data/lib/ollama_chat/utils/file_argument.rb +34 -0
  26. data/lib/ollama_chat/utils.rb +7 -0
  27. data/lib/ollama_chat/version.rb +8 -0
  28. data/lib/ollama_chat.rb +20 -0
  29. data/ollama_chat.gemspec +50 -0
  30. data/spec/assets/api_show.json +63 -0
  31. data/spec/assets/api_tags.json +21 -0
  32. data/spec/assets/conversation.json +14 -0
  33. data/spec/assets/duckduckgo.html +757 -0
  34. data/spec/assets/example.atom +26 -0
  35. data/spec/assets/example.csv +5 -0
  36. data/spec/assets/example.html +10 -0
  37. data/spec/assets/example.pdf +139 -0
  38. data/spec/assets/example.ps +4 -0
  39. data/spec/assets/example.rb +1 -0
  40. data/spec/assets/example.rss +25 -0
  41. data/spec/assets/example.xml +7 -0
  42. data/spec/assets/kitten.jpg +0 -0
  43. data/spec/assets/prompt.txt +1 -0
  44. data/spec/ollama_chat/chat_spec.rb +105 -0
  45. data/spec/ollama_chat/clipboard_spec.rb +29 -0
  46. data/spec/ollama_chat/follow_chat_spec.rb +46 -0
  47. data/spec/ollama_chat/information_spec.rb +50 -0
  48. data/spec/ollama_chat/message_list_spec.rb +132 -0
  49. data/spec/ollama_chat/model_handling_spec.rb +35 -0
  50. data/spec/ollama_chat/parsing_spec.rb +240 -0
  51. data/spec/ollama_chat/source_fetching_spec.rb +54 -0
  52. data/spec/ollama_chat/switches_spec.rb +167 -0
  53. data/spec/ollama_chat/utils/cache_fetcher_spec.rb +43 -0
  54. data/spec/ollama_chat/utils/fetcher_spec.rb +137 -0
  55. data/spec/ollama_chat/utils/file_argument_spec.rb +17 -0
  56. data/spec/spec_helper.rb +46 -0
  57. data/tmp/.keep +0 -0
  58. metadata +476 -0
@@ -0,0 +1,757 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+
3
+ <!--[if IE 6]><html class="ie6" xmlns="http://www.w3.org/1999/xhtml"><![endif]-->
4
+ <!--[if IE 7]><html class="lt-ie8 lt-ie9" xmlns="http://www.w3.org/1999/xhtml"><![endif]-->
5
+ <!--[if IE 8]><html class="lt-ie9" xmlns="http://www.w3.org/1999/xhtml"><![endif]-->
6
+ <!--[if gt IE 8]><!--><html xmlns="http://www.w3.org/1999/xhtml"><!--<![endif]-->
7
+ <head>
8
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
9
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=3.0, user-scalable=1" />
10
+ <meta name="referrer" content="origin" />
11
+ <meta name="HandheldFriendly" content="true" />
12
+ <meta name="robots" content="noindex, nofollow" />
13
+ <title>foo at DuckDuckGo</title>
14
+ <link title="DuckDuckGo (HTML)" type="application/opensearchdescription+xml" rel="search" href="//duckduckgo.com/opensearch_html_v2.xml" />
15
+ <link href="//duckduckgo.com/favicon.ico" rel="shortcut icon" />
16
+ <link rel="icon" href="//duckduckgo.com/favicon.ico" type="image/x-icon" />
17
+ <link id="icon60" rel="apple-touch-icon" href="//duckduckgo.com/assets/icons/meta/DDG-iOS-icon_60x60.png?v=2"/>
18
+ <link id="icon76" rel="apple-touch-icon" sizes="76x76" href="//duckduckgo.com/assets/icons/meta/DDG-iOS-icon_76x76.png?v=2"/>
19
+ <link id="icon120" rel="apple-touch-icon" sizes="120x120" href="//duckduckgo.com/assets/icons/meta/DDG-iOS-icon_120x120.png?v=2"/>
20
+ <link id="icon152" rel="apple-touch-icon" sizes="152x152" href="//duckduckgo.com/assets/icons/meta/DDG-iOS-icon_152x152.png?v=2"/>
21
+ <link rel="image_src" href="//duckduckgo.com/assets/icons/meta/DDG-icon_256x256.png">
22
+ <link rel="stylesheet" media="handheld, all" href="//duckduckgo.com/dist/h.ee6cc9a1c405a17341b6.css" type="text/css"/>
23
+ </head>
24
+
25
+ <body class="body--html">
26
+ <a name="top" id="top"></a>
27
+
28
+ <form action="/html/" method="post">
29
+ <input type="text" name="state_hidden" id="state_hidden" />
30
+ </form>
31
+
32
+ <div>
33
+ <div class="site-wrapper-border"></div>
34
+
35
+ <div id="header" class="header cw header--html">
36
+ <a title="DuckDuckGo" href="/html/" class="header__logo-wrap"></a>
37
+
38
+
39
+ <form name="x" class="header__form" action="/html/" method="post">
40
+
41
+ <div class="search search--header">
42
+ <input name="q" autocomplete="off" class="search__input" id="search_form_input_homepage" type="text" value="foo" />
43
+ <input name="b" id="search_button_homepage" class="search__button search__button--html" value="" title="Search" alt="Search" type="submit" />
44
+ </div>
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+ <div class="frm__select">
53
+ <select name="kl">
54
+
55
+ <option value="" >All Regions</option>
56
+
57
+ <option value="ar-es" >Argentina</option>
58
+
59
+ <option value="au-en" >Australia</option>
60
+
61
+ <option value="at-de" >Austria</option>
62
+
63
+ <option value="be-fr" >Belgium (fr)</option>
64
+
65
+ <option value="be-nl" >Belgium (nl)</option>
66
+
67
+ <option value="br-pt" >Brazil</option>
68
+
69
+ <option value="bg-bg" >Bulgaria</option>
70
+
71
+ <option value="ca-en" >Canada (en)</option>
72
+
73
+ <option value="ca-fr" >Canada (fr)</option>
74
+
75
+ <option value="ct-ca" >Catalonia</option>
76
+
77
+ <option value="cl-es" >Chile</option>
78
+
79
+ <option value="cn-zh" >China</option>
80
+
81
+ <option value="co-es" >Colombia</option>
82
+
83
+ <option value="hr-hr" >Croatia</option>
84
+
85
+ <option value="cz-cs" >Czech Republic</option>
86
+
87
+ <option value="dk-da" >Denmark</option>
88
+
89
+ <option value="ee-et" >Estonia</option>
90
+
91
+ <option value="fi-fi" >Finland</option>
92
+
93
+ <option value="fr-fr" >France</option>
94
+
95
+ <option value="de-de" >Germany</option>
96
+
97
+ <option value="gr-el" >Greece</option>
98
+
99
+ <option value="hk-tzh" >Hong Kong</option>
100
+
101
+ <option value="hu-hu" >Hungary</option>
102
+
103
+ <option value="is-is" >Iceland</option>
104
+
105
+ <option value="in-en" >India (en)</option>
106
+
107
+ <option value="id-en" >Indonesia (en)</option>
108
+
109
+ <option value="ie-en" >Ireland</option>
110
+
111
+ <option value="il-en" >Israel (en)</option>
112
+
113
+ <option value="it-it" >Italy</option>
114
+
115
+ <option value="jp-jp" >Japan</option>
116
+
117
+ <option value="kr-kr" >Korea</option>
118
+
119
+ <option value="lv-lv" >Latvia</option>
120
+
121
+ <option value="lt-lt" >Lithuania</option>
122
+
123
+ <option value="my-en" >Malaysia (en)</option>
124
+
125
+ <option value="mx-es" >Mexico</option>
126
+
127
+ <option value="nl-nl" >Netherlands</option>
128
+
129
+ <option value="nz-en" >New Zealand</option>
130
+
131
+ <option value="no-no" >Norway</option>
132
+
133
+ <option value="pk-en" >Pakistan (en)</option>
134
+
135
+ <option value="pe-es" >Peru</option>
136
+
137
+ <option value="ph-en" >Philippines (en)</option>
138
+
139
+ <option value="pl-pl" >Poland</option>
140
+
141
+ <option value="pt-pt" >Portugal</option>
142
+
143
+ <option value="ro-ro" >Romania</option>
144
+
145
+ <option value="ru-ru" >Russia</option>
146
+
147
+ <option value="xa-ar" >Saudi Arabia</option>
148
+
149
+ <option value="sg-en" >Singapore</option>
150
+
151
+ <option value="sk-sk" >Slovakia</option>
152
+
153
+ <option value="sl-sl" >Slovenia</option>
154
+
155
+ <option value="za-en" >South Africa</option>
156
+
157
+ <option value="es-ca" >Spain (ca)</option>
158
+
159
+ <option value="es-es" >Spain (es)</option>
160
+
161
+ <option value="se-sv" >Sweden</option>
162
+
163
+ <option value="ch-de" >Switzerland (de)</option>
164
+
165
+ <option value="ch-fr" >Switzerland (fr)</option>
166
+
167
+ <option value="tw-tzh" >Taiwan</option>
168
+
169
+ <option value="th-en" >Thailand (en)</option>
170
+
171
+ <option value="tr-tr" >Turkey</option>
172
+
173
+ <option value="us-en" >US (English)</option>
174
+
175
+ <option value="us-es" >US (Spanish)</option>
176
+
177
+ <option value="ua-uk" >Ukraine</option>
178
+
179
+ <option value="uk-en" >United Kingdom</option>
180
+
181
+ <option value="vn-en" >Vietnam (en)</option>
182
+
183
+ </select>
184
+ </div>
185
+
186
+ <div class="frm__select frm__select--last">
187
+ <select class="" name="df">
188
+
189
+ <option value="" selected>Any Time</option>
190
+
191
+ <option value="d" >Past Day</option>
192
+
193
+ <option value="w" >Past Week</option>
194
+
195
+ <option value="m" >Past Month</option>
196
+
197
+ <option value="y" >Past Year</option>
198
+
199
+ </select>
200
+ </div>
201
+
202
+ </form>
203
+
204
+ </div>
205
+
206
+
207
+
208
+
209
+
210
+ <!-- Web results are present -->
211
+
212
+ <div>
213
+ <div class="serp__results">
214
+ <div id="links" class="results">
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+ <div class="result results_links results_links_deep web-result ">
224
+
225
+
226
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
227
+
228
+ <h2 class="result__title">
229
+
230
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FFoo_Fighters&amp;rut=2d2e7de62e56717b766a17831a6bb52711c72c340611e70d4c9d0eff4506443e">Foo Fighters - Wikipedia</a>
231
+
232
+ </h2>
233
+
234
+
235
+
236
+ <div class="result__extras">
237
+ <div class="result__extras__url">
238
+ <span class="result__icon">
239
+
240
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FFoo_Fighters&amp;rut=2d2e7de62e56717b766a17831a6bb52711c72c340611e70d4c9d0eff4506443e">
241
+ <img class="result__icon__img" width="16" height="16" alt=""
242
+ src="//external-content.duckduckgo.com/ip3/en.wikipedia.org.ico" name="i15" />
243
+ </a>
244
+
245
+ </span>
246
+
247
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FFoo_Fighters&amp;rut=2d2e7de62e56717b766a17831a6bb52711c72c340611e70d4c9d0eff4506443e">
248
+ en.wikipedia.org/wiki/Foo_Fighters
249
+ </a>
250
+
251
+
252
+
253
+ </div>
254
+ </div>
255
+
256
+
257
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FFoo_Fighters&amp;rut=2d2e7de62e56717b766a17831a6bb52711c72c340611e70d4c9d0eff4506443e">The <b>Foo</b> Fighters are an American rock band formed in Seattle in 1994. Founded as a one-man project by former Nirvana drummer Dave Grohl, the lineup currently consists of Grohl (lead vocals, guitar), Nate Mendel (bass), Chris Shiflett (guitar) Pat Smear (guitar), Rami Jaffee (keyboards), and Josh Freese (drums). Drummers William Goldsmith and Taylor Hawkins, along with guitarist Franz Stahl ...</a>
258
+
259
+
260
+ <div class="clear"></div>
261
+ </div>
262
+
263
+ </div>
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+ <div class="result results_links results_links_deep web-result ">
273
+
274
+
275
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
276
+
277
+ <h2 class="result__title">
278
+
279
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.dictionary.com%2Fe%2Ftech%2Dscience%2Ffoo%2F&amp;rut=3feb4148e25f286e0e7792abb72bc39b41f39ca92bcea2b2d2ed79fd64472cd0">foo | Meaning &amp; Origin - Dictionary.com</a>
280
+
281
+ </h2>
282
+
283
+
284
+
285
+ <div class="result__extras">
286
+ <div class="result__extras__url">
287
+ <span class="result__icon">
288
+
289
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.dictionary.com%2Fe%2Ftech%2Dscience%2Ffoo%2F&amp;rut=3feb4148e25f286e0e7792abb72bc39b41f39ca92bcea2b2d2ed79fd64472cd0">
290
+ <img class="result__icon__img" width="16" height="16" alt=""
291
+ src="//external-content.duckduckgo.com/ip3/www.dictionary.com.ico" name="i15" />
292
+ </a>
293
+
294
+ </span>
295
+
296
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.dictionary.com%2Fe%2Ftech%2Dscience%2Ffoo%2F&amp;rut=3feb4148e25f286e0e7792abb72bc39b41f39ca92bcea2b2d2ed79fd64472cd0">
297
+ www.dictionary.com/e/tech-science/foo/
298
+ </a>
299
+
300
+
301
+
302
+ </div>
303
+ </div>
304
+
305
+
306
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.dictionary.com%2Fe%2Ftech%2Dscience%2Ffoo%2F&amp;rut=3feb4148e25f286e0e7792abb72bc39b41f39ca92bcea2b2d2ed79fd64472cd0">&quot;<b>Foo</b> was here&quot; was a popular piece of graffiti drawn by Australian soldiers in WWII, and possibly even WWI, that depicts a little man poking his head and large nose over the wall à la Kilroy. While the origins of this <b>foo</b> are unclear, it appears to be unrelated to Holman&#x27;s <b>foo</b>.</a>
307
+
308
+
309
+ <div class="clear"></div>
310
+ </div>
311
+
312
+ </div>
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+
321
+ <div class="result results_links results_links_deep web-result ">
322
+
323
+
324
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
325
+
326
+ <h2 class="result__title">
327
+
328
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Ffoofighters.com%2F&amp;rut=5fb69d48a10b05a4499c00c8881110304490454f45906ccf505486f6936caa02">Foo Fighters</a>
329
+
330
+ </h2>
331
+
332
+
333
+
334
+ <div class="result__extras">
335
+ <div class="result__extras__url">
336
+ <span class="result__icon">
337
+
338
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Ffoofighters.com%2F&amp;rut=5fb69d48a10b05a4499c00c8881110304490454f45906ccf505486f6936caa02">
339
+ <img class="result__icon__img" width="16" height="16" alt=""
340
+ src="//external-content.duckduckgo.com/ip3/foofighters.com.ico" name="i15" />
341
+ </a>
342
+
343
+ </span>
344
+
345
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Ffoofighters.com%2F&amp;rut=5fb69d48a10b05a4499c00c8881110304490454f45906ccf505486f6936caa02">
346
+ foofighters.com
347
+ </a>
348
+
349
+
350
+
351
+ </div>
352
+ </div>
353
+
354
+
355
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Ffoofighters.com%2F&amp;rut=5fb69d48a10b05a4499c00c8881110304490454f45906ccf505486f6936caa02">Official website of <b>Foo</b> Fighters. THIS SITE USES COOKIES. BY CONTINUING TO BROWSE THE SITE, YOU ARE AGREEING TO OUR USE OF COOKIES.</a>
356
+
357
+
358
+ <div class="clear"></div>
359
+ </div>
360
+
361
+ </div>
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+ <div class="result results_links results_links_deep web-result ">
371
+
372
+
373
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
374
+
375
+ <h2 class="result__title">
376
+
377
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fen.wiktionary.org%2Fwiki%2Ffoo&amp;rut=8bfbcc60027cc44a0f59d4ad984df0a18b74e7e05512fe1d27a451307ccf4c65">foo - Wiktionary, the free dictionary</a>
378
+
379
+ </h2>
380
+
381
+
382
+
383
+ <div class="result__extras">
384
+ <div class="result__extras__url">
385
+ <span class="result__icon">
386
+
387
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fen.wiktionary.org%2Fwiki%2Ffoo&amp;rut=8bfbcc60027cc44a0f59d4ad984df0a18b74e7e05512fe1d27a451307ccf4c65">
388
+ <img class="result__icon__img" width="16" height="16" alt=""
389
+ src="//external-content.duckduckgo.com/ip3/en.wiktionary.org.ico" name="i15" />
390
+ </a>
391
+
392
+ </span>
393
+
394
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fen.wiktionary.org%2Fwiki%2Ffoo&amp;rut=8bfbcc60027cc44a0f59d4ad984df0a18b74e7e05512fe1d27a451307ccf4c65">
395
+ en.wiktionary.org/wiki/foo
396
+ </a>
397
+
398
+
399
+
400
+ </div>
401
+ </div>
402
+
403
+
404
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fen.wiktionary.org%2Fwiki%2Ffoo&amp;rut=8bfbcc60027cc44a0f59d4ad984df0a18b74e7e05512fe1d27a451307ccf4c65"><b>foo</b> (uncountable) ( programming ) A metasyntactic variable used to represent an unspecified entity. If part of a series of such entities, it is often the first in the series, and followed immediately by bar .</a>
405
+
406
+
407
+ <div class="clear"></div>
408
+ </div>
409
+
410
+ </div>
411
+
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+ <div class="result results_links results_links_deep web-result ">
420
+
421
+
422
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
423
+
424
+ <h2 class="result__title">
425
+
426
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fmusic.youtube.com%2Fplaylist%3Flist%3DPLP02sRgldWRbiM2EdYJV1xssh_2%2DfLlYa&amp;rut=368222197f35dd23694de1423647e1fe338d50ac06a9e223fc1ceaf8978222c5">FOO FIGHTERS GREATEST HITS - YouTube Music</a>
427
+
428
+ </h2>
429
+
430
+
431
+
432
+ <div class="result__extras">
433
+ <div class="result__extras__url">
434
+ <span class="result__icon">
435
+
436
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fmusic.youtube.com%2Fplaylist%3Flist%3DPLP02sRgldWRbiM2EdYJV1xssh_2%2DfLlYa&amp;rut=368222197f35dd23694de1423647e1fe338d50ac06a9e223fc1ceaf8978222c5">
437
+ <img class="result__icon__img" width="16" height="16" alt=""
438
+ src="//external-content.duckduckgo.com/ip3/music.youtube.com.ico" name="i15" />
439
+ </a>
440
+
441
+ </span>
442
+
443
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fmusic.youtube.com%2Fplaylist%3Flist%3DPLP02sRgldWRbiM2EdYJV1xssh_2%2DfLlYa&amp;rut=368222197f35dd23694de1423647e1fe338d50ac06a9e223fc1ceaf8978222c5">
444
+ music.youtube.com/playlist?list=PLP02sRgldWRbiM2EdYJV1xssh_2-fLlYa
445
+ </a>
446
+
447
+
448
+
449
+ </div>
450
+ </div>
451
+
452
+
453
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fmusic.youtube.com%2Fplaylist%3Flist%3DPLP02sRgldWRbiM2EdYJV1xssh_2%2DfLlYa&amp;rut=368222197f35dd23694de1423647e1fe338d50ac06a9e223fc1ceaf8978222c5">Listen to <b>Foo</b> Fighters&#x27; greatest hits on YouTube Music, featuring official albums, singles, videos, remixes, and live performances.</a>
454
+
455
+
456
+ <div class="clear"></div>
457
+ </div>
458
+
459
+ </div>
460
+
461
+
462
+
463
+
464
+
465
+
466
+
467
+
468
+ <div class="result results_links results_links_deep web-result ">
469
+
470
+
471
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
472
+
473
+ <h2 class="result__title">
474
+
475
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dh_L4Rixya64&amp;rut=c22649d9dc404058986915d5f49cc08031904b63cb6683de42db4aad8da05965">Foo Fighters - Best Of You (Official Music Video) - YouTube</a>
476
+
477
+ </h2>
478
+
479
+
480
+
481
+ <div class="result__extras">
482
+ <div class="result__extras__url">
483
+ <span class="result__icon">
484
+
485
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dh_L4Rixya64&amp;rut=c22649d9dc404058986915d5f49cc08031904b63cb6683de42db4aad8da05965">
486
+ <img class="result__icon__img" width="16" height="16" alt=""
487
+ src="//external-content.duckduckgo.com/ip3/www.youtube.com.ico" name="i15" />
488
+ </a>
489
+
490
+ </span>
491
+
492
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dh_L4Rixya64&amp;rut=c22649d9dc404058986915d5f49cc08031904b63cb6683de42db4aad8da05965">
493
+ www.youtube.com/watch?v=h_L4Rixya64
494
+ </a>
495
+
496
+
497
+
498
+ </div>
499
+ </div>
500
+
501
+
502
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dh_L4Rixya64&amp;rut=c22649d9dc404058986915d5f49cc08031904b63cb6683de42db4aad8da05965">Watch the official music video for &quot;Best Of You&quot; by <b>Foo</b> FightersListen to <b>Foo</b> Fighters: https://FooFighters.lnk.to/listen_YDSubscribe to the official <b>Foo</b> Fig...</a>
503
+
504
+
505
+ <div class="clear"></div>
506
+ </div>
507
+
508
+ </div>
509
+
510
+
511
+
512
+
513
+
514
+
515
+
516
+
517
+ <div class="result results_links results_links_deep web-result ">
518
+
519
+
520
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
521
+
522
+ <h2 class="result__title">
523
+
524
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DeBG7P%2DK%2Dr1Y&amp;rut=abb4039b074ac90cdf3db9b407e235a271873fee78526cef55dc200e565cee4d">Foo Fighters - Everlong (Official HD Video) - YouTube</a>
525
+
526
+ </h2>
527
+
528
+
529
+
530
+ <div class="result__extras">
531
+ <div class="result__extras__url">
532
+ <span class="result__icon">
533
+
534
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DeBG7P%2DK%2Dr1Y&amp;rut=abb4039b074ac90cdf3db9b407e235a271873fee78526cef55dc200e565cee4d">
535
+ <img class="result__icon__img" width="16" height="16" alt=""
536
+ src="//external-content.duckduckgo.com/ip3/www.youtube.com.ico" name="i15" />
537
+ </a>
538
+
539
+ </span>
540
+
541
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DeBG7P%2DK%2Dr1Y&amp;rut=abb4039b074ac90cdf3db9b407e235a271873fee78526cef55dc200e565cee4d">
542
+ www.youtube.com/watch?v=eBG7P-K-r1Y
543
+ </a>
544
+
545
+
546
+
547
+ </div>
548
+ </div>
549
+
550
+
551
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DeBG7P%2DK%2Dr1Y&amp;rut=abb4039b074ac90cdf3db9b407e235a271873fee78526cef55dc200e565cee4d">&quot;Everlong&quot; by <b>Foo</b> Fighters Listen to <b>Foo</b> Fighters: https://FooFighters.lnk.to/listen_YDWatch more <b>Foo</b> Fighter videos: https://FooFighters.lnk.to/listen_YC/yo...</a>
552
+
553
+
554
+ <div class="clear"></div>
555
+ </div>
556
+
557
+ </div>
558
+
559
+
560
+
561
+
562
+
563
+
564
+
565
+
566
+ <div class="result results_links results_links_deep web-result ">
567
+
568
+
569
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
570
+
571
+ <h2 class="result__title">
572
+
573
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fplaylist%3Flist%3DPL83F62FF359785F29&amp;rut=dc7f3cb6402ef7ab8e4751b1f83464c725e29e64a07e68fe7e2be13dfee79128">Foo Fighters Music: Greatest Hits - YouTube</a>
574
+
575
+ </h2>
576
+
577
+
578
+
579
+ <div class="result__extras">
580
+ <div class="result__extras__url">
581
+ <span class="result__icon">
582
+
583
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fplaylist%3Flist%3DPL83F62FF359785F29&amp;rut=dc7f3cb6402ef7ab8e4751b1f83464c725e29e64a07e68fe7e2be13dfee79128">
584
+ <img class="result__icon__img" width="16" height="16" alt=""
585
+ src="//external-content.duckduckgo.com/ip3/www.youtube.com.ico" name="i15" />
586
+ </a>
587
+
588
+ </span>
589
+
590
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fplaylist%3Flist%3DPL83F62FF359785F29&amp;rut=dc7f3cb6402ef7ab8e4751b1f83464c725e29e64a07e68fe7e2be13dfee79128">
591
+ www.youtube.com/playlist?list=PL83F62FF359785F29
592
+ </a>
593
+
594
+
595
+
596
+ </div>
597
+ </div>
598
+
599
+
600
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.youtube.com%2Fplaylist%3Flist%3DPL83F62FF359785F29&amp;rut=dc7f3cb6402ef7ab8e4751b1f83464c725e29e64a07e68fe7e2be13dfee79128">This playlist contains all the songs from the album &quot;Greatest Hits&quot; released by <b>Foo</b> Fighters.</a>
601
+
602
+
603
+ <div class="clear"></div>
604
+ </div>
605
+
606
+ </div>
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+ <div class="result results_links results_links_deep web-result ">
616
+
617
+
618
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
619
+
620
+ <h2 class="result__title">
621
+
622
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fmusic.youtube.com%2Fchannel%2FUCwDw2KaS8jRUxAPScL2U8og&amp;rut=ecf0a4b7b58a1261d31813d6888594ff55cb1cf54bcc3f9144ff98b9bceabe14">Foo Fighters - YouTube Music</a>
623
+
624
+ </h2>
625
+
626
+
627
+
628
+ <div class="result__extras">
629
+ <div class="result__extras__url">
630
+ <span class="result__icon">
631
+
632
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fmusic.youtube.com%2Fchannel%2FUCwDw2KaS8jRUxAPScL2U8og&amp;rut=ecf0a4b7b58a1261d31813d6888594ff55cb1cf54bcc3f9144ff98b9bceabe14">
633
+ <img class="result__icon__img" width="16" height="16" alt=""
634
+ src="//external-content.duckduckgo.com/ip3/music.youtube.com.ico" name="i15" />
635
+ </a>
636
+
637
+ </span>
638
+
639
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fmusic.youtube.com%2Fchannel%2FUCwDw2KaS8jRUxAPScL2U8og&amp;rut=ecf0a4b7b58a1261d31813d6888594ff55cb1cf54bcc3f9144ff98b9bceabe14">
640
+ music.youtube.com/channel/UCwDw2KaS8jRUxAPScL2U8og
641
+ </a>
642
+
643
+
644
+
645
+ </div>
646
+ </div>
647
+
648
+
649
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fmusic.youtube.com%2Fchannel%2FUCwDw2KaS8jRUxAPScL2U8og&amp;rut=ecf0a4b7b58a1261d31813d6888594ff55cb1cf54bcc3f9144ff98b9bceabe14"><b>Foo</b> Fighters - YouTube Music ... Rock Band</a>
650
+
651
+
652
+ <div class="clear"></div>
653
+ </div>
654
+
655
+ </div>
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+ <div class="result results_links results_links_deep web-result ">
665
+
666
+
667
+ <div class="links_main links_deep result__body"> <!-- This is the visible part -->
668
+
669
+ <h2 class="result__title">
670
+
671
+ <a rel="nofollow" class="result__a" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.britannica.com%2Ftopic%2FFoo%2DFighters&amp;rut=eeef088c7ec8d016638d8a2617bacf1a00fa2cfd5e92d6f0c4ed753a148623e7">Foo Fighters | Band, Members, Albums, &amp; Facts | Britannica</a>
672
+
673
+ </h2>
674
+
675
+
676
+
677
+ <div class="result__extras">
678
+ <div class="result__extras__url">
679
+ <span class="result__icon">
680
+
681
+ <a rel="nofollow" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.britannica.com%2Ftopic%2FFoo%2DFighters&amp;rut=eeef088c7ec8d016638d8a2617bacf1a00fa2cfd5e92d6f0c4ed753a148623e7">
682
+ <img class="result__icon__img" width="16" height="16" alt=""
683
+ src="//external-content.duckduckgo.com/ip3/www.britannica.com.ico" name="i15" />
684
+ </a>
685
+
686
+ </span>
687
+
688
+ <a class="result__url" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.britannica.com%2Ftopic%2FFoo%2DFighters&amp;rut=eeef088c7ec8d016638d8a2617bacf1a00fa2cfd5e92d6f0c4ed753a148623e7">
689
+ www.britannica.com/topic/Foo-Fighters
690
+ </a>
691
+
692
+
693
+
694
+ </div>
695
+ </div>
696
+
697
+
698
+ <a class="result__snippet" href="//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.britannica.com%2Ftopic%2FFoo%2DFighters&amp;rut=eeef088c7ec8d016638d8a2617bacf1a00fa2cfd5e92d6f0c4ed753a148623e7"><b>Foo</b> Fighters, American alternative rock band, one of the world&#x27;s most popular rock bands of the 21st century. <b>Foo</b> Fighters appeal to a wide audience, owing to their likable blend of heavy guitars and arena-ready anthems, which make for exciting live performances. By the early 2020s, the band had sold more than 30 million records worldwide.</a>
699
+
700
+
701
+ <div class="clear"></div>
702
+ </div>
703
+
704
+ </div>
705
+
706
+
707
+
708
+
709
+
710
+
711
+
712
+
713
+ <div class="nav-link">
714
+ <form action="/html/" method="post">
715
+ <input type="submit" class='btn btn--alt' value="Next" />
716
+ <input type="hidden" name="q" value="foo" />
717
+ <input type="hidden" name="s" value="10" />
718
+ <input type="hidden" name="nextParams" value="" />
719
+ <input type="hidden" name="v" value="l" />
720
+ <input type="hidden" name="o" value="json" />
721
+ <input type="hidden" name="dc" value="11" />
722
+ <input type="hidden" name="api" value="d.js" />
723
+ <input type="hidden" name="vqd" value="4-147952856996157918820153826655300912381" />
724
+
725
+
726
+
727
+
728
+ <input name="kl" value="wt-wt" type="hidden" />
729
+
730
+
731
+
732
+
733
+ </form>
734
+ </div>
735
+
736
+
737
+
738
+
739
+ <div class=" feedback-btn">
740
+ <a rel="nofollow" href="//duckduckgo.com/feedback.html" target="_new">Feedback</a>
741
+ </div>
742
+ <div class="clear"></div>
743
+ </div>
744
+ </div> <!-- links wrapper //-->
745
+
746
+
747
+
748
+ </div>
749
+ </div>
750
+
751
+ <div id="bottom_spacing2"></div>
752
+
753
+
754
+ <img src="//duckduckgo.com/t/sl_h"/>
755
+
756
+ </body>
757
+ </html>