Browse Source

[feat] engine: implementation of findthatmeme

Austin-Olacsi 11 months ago
parent
commit
9bb75a6644
2 changed files with 59 additions and 0 deletions
  1. 54 0
      searx/engines/findthatmeme.py
  2. 5 0
      searx/settings.yml

+ 54 - 0
searx/engines/findthatmeme.py

@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""FindThatMeme (Images)"""
+
+from json import dumps
+from datetime import datetime
+from searx.utils import humanize_bytes
+
+about = {
+    "website": 'https://findthatmeme.com',
+    "official_api_documentation": None,
+    "use_official_api": False,
+    "require_api_key": False,
+    "results": "JSON",
+}
+
+base_url = "https://findthatmeme.com/api/v1/search"
+categories = ['images']
+paging = True
+
+
+def request(query, params):
+
+    start_index = (params["pageno"] - 1) * 50
+    data = {"search": query, "offset": start_index}
+    params["url"] = base_url
+    params["method"] = 'POST'
+    params['headers']['content-type'] = "application/json"
+    params['data'] = dumps(data)
+
+    return params
+
+
+def response(resp):
+    search_res = resp.json()
+    results = []
+
+    for item in search_res:
+        img = 'https://findthatmeme.us-southeast-1.linodeobjects.com/' + item['image_path']
+        thumb = 'https://findthatmeme.us-southeast-1.linodeobjects.com/thumb/' + item.get('thumbnail', '')
+        date = datetime.strptime(item["updated_at"].split("T")[0], "%Y-%m-%d")
+        formatted_date = datetime.utcfromtimestamp(date.timestamp())
+
+        results.append(
+            {
+                'url': item['source_page_url'],
+                'title': item['source_site'],
+                'img_src': img if item['type'] == 'IMAGE' else thumb,
+                'filesize': humanize_bytes(item['meme_file_size']),
+                'publishedDate': formatted_date,
+                'template': 'images.html',
+            }
+        )
+
+    return results

+ 5 - 0
searx/settings.yml

@@ -727,6 +727,11 @@ engines:
     shortcut: fd
     disabled: true
 
+  - name: findthatmeme
+    engine: findthatmeme
+    shortcut: ftm
+    disabled: true
+
   - name: flickr
     categories: images
     shortcut: fl