From 44b331893fdd0f3ed7ad81de3e5a0db7f512d5fc Mon Sep 17 00:00:00 2001 From: Meshall <36359399+Meshall@users.noreply.github.com> Date: Sun, 15 Mar 2026 13:12:25 +0300 Subject: [PATCH] Rebuild voSINT as token-free v2 CLI with Playwright adapters --- .env.example | 5 + README.md | 93 ++++++++++------- config.ini | 4 - modules/.html_generator.py.swo | Bin 16384 -> 0 bytes modules/.html_generator.py.swp | Bin 16384 -> 0 bytes modules/__init__.py | 1 - modules/html_generator.py | 137 -------------------------- modules/upload.py | 7 -- modules/video_search.py | 39 -------- pyproject.toml | 26 +++++ requirements.txt | 13 +-- tests/test_normalize.py | 13 +++ tests/test_timeline.py | 10 ++ voSINT.py | 125 +---------------------- vosint/__init__.py | 4 + vosint/cli.py | 80 +++++++++++++++ vosint/core/__init__.py | 0 vosint/core/diffing.py | 15 +++ vosint/core/dna.py | 22 +++++ vosint/core/frame_extractor.py | 100 +++++++++++++++++++ vosint/core/normalize.py | 47 +++++++++ vosint/core/orchestrator.py | 115 +++++++++++++++++++++ vosint/core/pivots.py | 38 +++++++ vosint/core/timeline.py | 11 +++ vosint/models/__init__.py | 6 ++ vosint/models/case.py | 29 ++++++ vosint/models/frame_pivot.py | 17 ++++ vosint/models/hit.py | 44 +++++++++ vosint/models/video_dna.py | 23 +++++ vosint/output/__init__.py | 0 vosint/output/renderers.py | 64 ++++++++++++ vosint/output/terminal.py | 14 +++ vosint/providers/__init__.py | 15 +++ vosint/providers/_playwright_utils.py | 16 +++ vosint/providers/base.py | 20 ++++ vosint/providers/bing_visual.py | 32 ++++++ vosint/providers/google_lens.py | 33 +++++++ vosint/providers/pinterest.py | 53 ++++++++++ vosint/providers/tineye.py | 32 ++++++ vosint/providers/yandex.py | 32 ++++++ vosint/utils/__init__.py | 0 vosint/utils/fs.py | 22 +++++ vosint/utils/logging.py | 3 + vosint/utils/scoring.py | 34 +++++++ vosint/utils/url.py | 11 +++ 45 files changed, 1051 insertions(+), 354 deletions(-) create mode 100644 .env.example delete mode 100755 config.ini delete mode 100644 modules/.html_generator.py.swo delete mode 100644 modules/.html_generator.py.swp delete mode 100644 modules/__init__.py delete mode 100644 modules/html_generator.py delete mode 100644 modules/upload.py delete mode 100644 modules/video_search.py create mode 100644 pyproject.toml create mode 100644 tests/test_normalize.py create mode 100644 tests/test_timeline.py create mode 100644 vosint/__init__.py create mode 100644 vosint/cli.py create mode 100644 vosint/core/__init__.py create mode 100644 vosint/core/diffing.py create mode 100644 vosint/core/dna.py create mode 100644 vosint/core/frame_extractor.py create mode 100644 vosint/core/normalize.py create mode 100644 vosint/core/orchestrator.py create mode 100644 vosint/core/pivots.py create mode 100644 vosint/core/timeline.py create mode 100644 vosint/models/__init__.py create mode 100644 vosint/models/case.py create mode 100644 vosint/models/frame_pivot.py create mode 100644 vosint/models/hit.py create mode 100644 vosint/models/video_dna.py create mode 100644 vosint/output/__init__.py create mode 100644 vosint/output/renderers.py create mode 100644 vosint/output/terminal.py create mode 100644 vosint/providers/__init__.py create mode 100644 vosint/providers/_playwright_utils.py create mode 100644 vosint/providers/base.py create mode 100644 vosint/providers/bing_visual.py create mode 100644 vosint/providers/google_lens.py create mode 100644 vosint/providers/pinterest.py create mode 100644 vosint/providers/tineye.py create mode 100644 vosint/providers/yandex.py create mode 100644 vosint/utils/__init__.py create mode 100644 vosint/utils/fs.py create mode 100644 vosint/utils/logging.py create mode 100644 vosint/utils/scoring.py create mode 100644 vosint/utils/url.py diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..5649bfb --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +# voSINT v2 is token-free by default. +# Optional flags only. +VOSINT_MODE=deep +VOSINT_HEADFUL=false +VOSINT_CASES_DIR=cases diff --git a/README.md b/README.md index 537edb6..81ca35f 100755 --- a/README.md +++ b/README.md @@ -1,55 +1,74 @@ -
-
-
- Source: {image['source']}
-Source: {image['source']}
-Position: {image['position']}
-Title: {image['title']}
-Link: {image['link']}
-Displayed link: {image['displayed_link']}
-Date: {image.get('date', 'N/A')}
-Snippet: {image['snippet']}
-Image resolution: {image.get('image_resolution', 'N/A')}
-Case: {html.escape(case.case_id)} | Mode: {html.escape(case.mode)}
+{html.escape(case.hits[0].url if case.hits else 'No results')}
+{html.escape(', '.join(sorted({e for h in case.hits for e in h.support_engines})) or 'No providers')}
+| Date | URL | Domain | Title | Confidence | Support |
|---|