From d28ce93e702a01800d3ea783528ebd2cd86430d9 Mon Sep 17 00:00:00 2001 From: Kennedy Omondi Date: Wed, 20 May 2026 17:54:03 +0300 Subject: [PATCH 1/9] feat(extractor): implement Ruby parser Parse the bundled SERP HTML into a SerpApi-shaped array of `{name, extensions, link, image}` without making HTTP requests. - Detect carousel tiles by structural signal (`/search?...&stick=...` siblinggroups), not volatile Google CSS classes, so the parser works across Van Gogh and variant fixtures. - Resolve thumbnails by parsing `_setImagesSrc(ii, s, r)` blocks into an `id -> image` map,including unescaping `\x3d` and `\/` values emitted in inline JS. - Extract `extensions` from leaf text nodes under each anchor to avoid container-text noise (for example, concatenated `name+year`). - Resolve `image` from values already present in the page file: inline JS mapping, inline non-placeholder data URIs, and in-file `data-src`/ `src` URLs. - Add comprehensive RSpec coverage for golden output, cross-layout fixtures, item parsing, thumbnail indexing, and carousel selection behavior. --- .gitignore | 1 + .rspec | 3 + Gemfile | 8 ++ Gemfile.lock | 109 ++++++++++++++++++++ README.md | 3 +- RUN.md | 68 +++++++++++++ bin/extract | 11 ++ bin/lint | 23 +++++ lib/extractor.rb | 38 +++++++ lib/extractor/carousel.rb | 105 +++++++++++++++++++ lib/extractor/item.rb | 123 +++++++++++++++++++++++ lib/extractor/thumbnail_index.rb | 61 +++++++++++ spec/carousel_spec.rb | 49 +++++++++ spec/cross_page_spec.rb | 65 ++++++++++++ spec/extractor_spec.rb | 47 +++++++++ spec/fixtures/frida-kahlo-paintings.html | 65 ++++++++++++ spec/fixtures/nolan-films.html | 51 ++++++++++ spec/item_spec.rb | 95 +++++++++++++++++ spec/spec_helper.rb | 12 +++ spec/thumbnail_index_spec.rb | 32 ++++++ 20 files changed, 968 insertions(+), 1 deletion(-) create mode 100644 .rspec create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 RUN.md create mode 100755 bin/extract create mode 100755 bin/lint create mode 100644 lib/extractor.rb create mode 100644 lib/extractor/carousel.rb create mode 100644 lib/extractor/item.rb create mode 100644 lib/extractor/thumbnail_index.rb create mode 100644 spec/carousel_spec.rb create mode 100644 spec/cross_page_spec.rb create mode 100644 spec/extractor_spec.rb create mode 100644 spec/fixtures/frida-kahlo-paintings.html create mode 100644 spec/fixtures/nolan-films.html create mode 100644 spec/item_spec.rb create mode 100644 spec/spec_helper.rb create mode 100644 spec/thumbnail_index_spec.rb diff --git a/.gitignore b/.gitignore index fb7a88e1..2e728eb8 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ build-iPhoneSimulator/ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: .rvmrc .DS_Store +.vscode/ diff --git a/.rspec b/.rspec new file mode 100644 index 00000000..7a2cc1a6 --- /dev/null +++ b/.rspec @@ -0,0 +1,3 @@ +--require spec_helper +--format documentation +--color diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..e64df799 --- /dev/null +++ b/Gemfile @@ -0,0 +1,8 @@ +source "https://rubygems.org" + +gem "nokogiri", "~> 1.16" + +group :development, :test do + gem "rspec", "~> 3.13" + gem "debug" +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..25e6818b --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,109 @@ +GEM + remote: https://rubygems.org/ + specs: + date (3.5.1) + debug (1.11.1) + irb (~> 1.10) + reline (>= 0.3.8) + diff-lcs (1.6.2) + erb (6.0.4) + io-console (0.8.2) + irb (1.18.0) + pp (>= 0.6.0) + prism (>= 1.3.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + nokogiri (1.19.3-aarch64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.3-aarch64-linux-musl) + racc (~> 1.4) + nokogiri (1.19.3-arm-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.3-arm-linux-musl) + racc (~> 1.4) + nokogiri (1.19.3-arm64-darwin) + racc (~> 1.4) + nokogiri (1.19.3-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.19.3-x86_64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.3-x86_64-linux-musl) + racc (~> 1.4) + pp (0.6.3) + prettyprint + prettyprint (0.2.0) + prism (1.9.0) + psych (5.3.1) + date + stringio + racc (1.8.1) + rdoc (7.2.0) + erb + psych (>= 4.0.0) + tsort + reline (0.6.3) + io-console (~> 0.5) + rspec (3.13.2) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.6) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.5) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.8) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.7) + stringio (3.2.0) + tsort (0.2.0) + +PLATFORMS + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + debug + nokogiri (~> 1.16) + rspec (~> 3.13) + +CHECKSUMS + bundler (4.0.12) sha256=7f8b757d28dfb636e7b24fba2344ac6dd13b5b24f4b46d62573d483f211825ac + date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0 + debug (1.11.1) sha256=2e0b0ac6119f2207a6f8ac7d4a73ca8eb4e440f64da0a3136c30343146e952b6 + diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 + erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9 + io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc + irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3 + nokogiri (1.19.3-aarch64-linux-gnu) sha256=46b89e5d7b9e844c2ee360794240c6ea2a4e6fa0c5892a4ed487db621224b639 + nokogiri (1.19.3-aarch64-linux-musl) sha256=8392dfdcd21be7a94dbbe9ccc138dea01b97b24cb2dc02a114ca98bfb1d9a0b7 + nokogiri (1.19.3-arm-linux-gnu) sha256=3919d5ffc334ad778a4a9eb88fda7dcb8b1fb58c8a52ac640c6dcd2f038e774f + nokogiri (1.19.3-arm-linux-musl) sha256=9ce1cb6346bb9c67b1550eb537aa183ead91e4b6eadb2f36ade02d8dd2a79fb6 + nokogiri (1.19.3-arm64-darwin) sha256=71b9bd424b1b7abc18b05052a1a3cfd3627abdca62be280854cc411791357e42 + nokogiri (1.19.3-x86_64-darwin) sha256=77f3fba57d46c53ab31e62fc6c28f705109d1bf6264356c76f132b2be5728d4d + nokogiri (1.19.3-x86_64-linux-gnu) sha256=2f5078620fe12e83669b5b17311b32532a8153d02eee7ad06948b926d6080976 + nokogiri (1.19.3-x86_64-linux-musl) sha256=248c906d2166eca5efb56d52fdee5f9a1f51d69a72e2b64fdac647b4ce39ea3f + pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6 + prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193 + prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 + psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974 + racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f + rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192 + reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 + rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 + rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d + rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 + rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47 + rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c + stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1 + tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f + +BUNDLED WITH + 4.0.12 diff --git a/README.md b/README.md index 4d5a093f..64ef4681 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ + # Extract Van Gogh Paintings Code Challenge Goal is to extract a list of Van Gogh paintings from the attached Google search results page. @@ -23,6 +24,6 @@ Parse directly the HTML result page ([html file]) in this repository. No extra H Add also to your array the painting thumbnails present in the result page file (not the ones where extra requests are needed). -Test against 2 other similar result pages to make sure it works against different layouts. (Pages that contain the same kind of carrousel. Don't necessarily have to be paintings.) +Test against 2 other similar result pages to make sure it works against different layouts. (Pages that contain the same kind of carrousel. Don't necessarily have to be paintings.) The suggested time for this challenge is 4 hours. But, you can take your time and work more on it if you want. diff --git a/RUN.md b/RUN.md new file mode 100644 index 00000000..2d381b69 --- /dev/null +++ b/RUN.md @@ -0,0 +1,68 @@ +# Run Guide + +This file contains setup, run, lint, and test commands for this script. + +## Prerequisites + +- Ruby +- Bundler + +## Setup + +Install dependencies: + +```bash +bundle install +``` + +## Run Extractor + +Run extractor on the provided fixture: + +```bash +bin/extract files/van-gogh-paintings.html +``` + +Save output: + +```bash +bin/extract files/van-gogh-paintings.html > /tmp/artworks.json +``` + +Programmatic use: + +```ruby +require_relative "lib/extractor" + +result = Extractor.call("files/van-gogh-paintings.html") +puts result.first +``` + +## Run Tests + +Run all specs: + +```bash +bundle exec rspec +``` + +Run one spec file: + +```bash +bundle exec rspec spec/extractor_spec.rb +``` + +## Lint + +Run syntax lint checks: + +```bash +bundle exec bin/lint +``` + +`bin/lint` runs `ruby -wc` across `lib/`, `spec/`, and `bin/`. + +## Local Quality Checks + +1. `bundle exec bin/lint` +2. `bundle exec rspec` diff --git a/bin/extract b/bin/extract new file mode 100755 index 00000000..3fd7c06a --- /dev/null +++ b/bin/extract @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby +$LOAD_PATH.unshift File.expand_path("../lib", __dir__) +require "extractor" +require "json" + +if ARGV.empty? + warn "Usage: bin/extract " + exit 64 +end + +puts JSON.pretty_generate("artworks" => Extractor.call(ARGV[0])) diff --git a/bin/lint b/bin/lint new file mode 100755 index 00000000..c0c577bc --- /dev/null +++ b/bin/lint @@ -0,0 +1,23 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require "rbconfig" + +files = Dir["lib/**/*.rb", "spec/**/*.rb", "bin/*"] +files.select! { |path| File.file?(path) } +files.sort! + +failed = [] + +files.each do |path| + ok = system(RbConfig.ruby, "-wc", path) + failed << path unless ok +end + +if failed.any? + warn "\nLint failed for #{failed.size} file(s):" + failed.each { |path| warn "- #{path}" } + exit 1 +end + +puts "\nLint passed for #{files.size} file(s)." diff --git a/lib/extractor.rb b/lib/extractor.rb new file mode 100644 index 00000000..31fbc4a0 --- /dev/null +++ b/lib/extractor.rb @@ -0,0 +1,38 @@ +require "nokogiri" + +require_relative "extractor/thumbnail_index" +require_relative "extractor/carousel" +require_relative "extractor/item" + +module Extractor + # Public facade. Returns an Array of carousel items. + # + # Why this shape: + # - Callers only need one method (`Extractor.call`) and don't manage objects. + # - Internally we still use small classes for focused responsibilities. + # + # Extractor.call("files/van-gogh-paintings.html") + # # => [{ "name" => "The Starry Night", "extensions" => ["1889"], ... }, ...] + # Accepts either a file path string or raw HTML string. + def self.call(html_or_path) + # Support both CLI/file use and test/raw-html use with one entrypoint. + html = if File.file?(html_or_path.to_s) + File.read(html_or_path) + else + html_or_path + end + + # Parse once into DOM, then build the thumbnail map once. + # This avoids repeatedly scanning + + diff --git a/spec/fixtures/nolan-films.html b/spec/fixtures/nolan-films.html new file mode 100644 index 00000000..d4b9a6e4 --- /dev/null +++ b/spec/fixtures/nolan-films.html @@ -0,0 +1,51 @@ + +christopher nolan movies - Google Search + + +
+
+ + + +
+ + + + diff --git a/spec/item_spec.rb b/spec/item_spec.rb new file mode 100644 index 00000000..0f09e9b6 --- /dev/null +++ b/spec/item_spec.rb @@ -0,0 +1,95 @@ +require "nokogiri" + +RSpec.describe Extractor::Item do + def tile_from(html) + Nokogiri::HTML.fragment(html).at_css("div") + end + + it "extracts name from img alt and absolutizes the link" do + node = tile_from(<<~HTML) +
+ + Foo +
1889
+
+
+ HTML + out = described_class.parse(node, thumbnails: { "img1" => "data:image/jpeg;base64,AA" }) + expect(out["name"]).to eq("Foo") + expect(out["link"]).to eq("https://www.google.com/search?q=Foo&stick=abc") + expect(out["extensions"]).to eq(["1889"]) + expect(out["image"]).to eq("data:image/jpeg;base64,AA") + end + + it "drops the placeholder 1x1 GIF in favor of the index" do + placeholder = "data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" + node = tile_from(<<~HTML) +
+ + Bar + +
+ HTML + out = described_class.parse(node, thumbnails: { "img2" => "data:image/jpeg;base64,REAL" }) + expect(out["image"]).to eq("data:image/jpeg;base64,REAL") + end + + it "skips container text so extensions aren't polluted by name+ext concatenation" do + node = tile_from(<<~HTML) +
+ + Starry +
+
Starry
+
1889
+
+
+
+ HTML + out = described_class.parse(node, thumbnails: {}) + expect(out["extensions"]).to eq(["1889"]) + end + + it "returns nil when there is no anchor (malformed tile)" do + node = tile_from("
just text
") + expect(described_class.parse(node, thumbnails: {})).to be_nil + end + + it "falls back to aria-label when img alt is missing" do + node = tile_from(<<~HTML) +
+ + +
1901
+
+
+ HTML + out = described_class.parse(node, thumbnails: {}) + expect(out["name"]).to eq("Fallback Name") + expect(out["extensions"]).to eq(["1901"]) + end + + it "returns in-file thumbnail URL from data-src when present" do + node = tile_from(<<~HTML) +
+ + Remote + +
+ HTML + out = described_class.parse(node, thumbnails: {}) + expect(out["image"]).to eq("https://example.com/remote.jpg") + end + + it "returns in-file thumbnail URL from src when it is already non-placeholder http(s)" do + node = tile_from(<<~HTML) +
+ + RemoteSrc + +
+ HTML + out = described_class.parse(node, thumbnails: {}) + expect(out["image"]).to eq("https://example.com/src.jpg") + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 00000000..cafea167 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,12 @@ +$LOAD_PATH.unshift File.expand_path("../lib", __dir__) +require "extractor" + +RSpec.configure do |config| + config.expect_with :rspec do |c| + c.syntax = :expect + end + config.order = :random + Kernel.srand config.seed +end + +FIXTURES_DIR = File.expand_path("../files", __dir__) diff --git a/spec/thumbnail_index_spec.rb b/spec/thumbnail_index_spec.rb new file mode 100644 index 00000000..aee80b39 --- /dev/null +++ b/spec/thumbnail_index_spec.rb @@ -0,0 +1,32 @@ +require "nokogiri" + +RSpec.describe Extractor::ThumbnailIndex do + def doc_for(script_body) + Nokogiri::HTML("") + end + + it "maps a single id to its data URI" do + body = "(function(){var s='data:image/jpeg;base64,ABC';" \ + "var ii=['img_1'];var r='';_setImagesSrc(ii,s,r);})();" + expect(described_class.build(doc_for(body))).to eq("img_1" => "data:image/jpeg;base64,ABC") + end + + it "maps multiple ids in the same call to the same URI" do + body = "(function(){var s='data:image/jpeg;base64,XYZ';" \ + "var ii=['a','b','c'];var r='';_setImagesSrc(ii,s,r);})();" + out = described_class.build(doc_for(body)) + expect(out).to eq("a" => "data:image/jpeg;base64,XYZ", + "b" => "data:image/jpeg;base64,XYZ", + "c" => "data:image/jpeg;base64,XYZ") + end + + it "decodes the \\x3d base64 padding escape Google emits" do + body = "(function(){var s='data:image/jpeg;base64,QUJDRA\\x3d\\x3d';" \ + "var ii=['x'];var r='';_setImagesSrc(ii,s,r);})();" + expect(described_class.build(doc_for(body))["x"]).to eq("data:image/jpeg;base64,QUJDRA==") + end + + it "ignores scripts that don't contain _setImagesSrc" do + expect(described_class.build(doc_for("var unrelated = 1;"))).to eq({}) + end +end From 6896c2af6e91aa0b57723ad114306b06fffa3b64 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Mon, 1 Jun 2026 13:35:27 -0500 Subject: [PATCH 2/9] switch nokolexbor for nokogiri --- Gemfile | 5 +-- Gemfile.lock | 83 ++++++------------------------------ lib/extractor.rb | 4 +- spec/carousel_spec.rb | 4 +- spec/item_spec.rb | 5 ++- spec/thumbnail_index_spec.rb | 4 +- 6 files changed, 24 insertions(+), 81 deletions(-) diff --git a/Gemfile b/Gemfile index e64df799..c2273ebf 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,7 @@ source "https://rubygems.org" -gem "nokogiri", "~> 1.16" +gem "nokolexbor" group :development, :test do - gem "rspec", "~> 3.13" - gem "debug" + gem "rspec", "~> 3.12" end diff --git a/Gemfile.lock b/Gemfile.lock index 25e6818b..559b90a8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,48 +1,12 @@ GEM remote: https://rubygems.org/ specs: - date (3.5.1) - debug (1.11.1) - irb (~> 1.10) - reline (>= 0.3.8) diff-lcs (1.6.2) - erb (6.0.4) - io-console (0.8.2) - irb (1.18.0) - pp (>= 0.6.0) - prism (>= 1.3.0) - rdoc (>= 4.0.0) - reline (>= 0.4.2) - nokogiri (1.19.3-aarch64-linux-gnu) - racc (~> 1.4) - nokogiri (1.19.3-aarch64-linux-musl) - racc (~> 1.4) - nokogiri (1.19.3-arm-linux-gnu) - racc (~> 1.4) - nokogiri (1.19.3-arm-linux-musl) - racc (~> 1.4) - nokogiri (1.19.3-arm64-darwin) - racc (~> 1.4) - nokogiri (1.19.3-x86_64-darwin) - racc (~> 1.4) - nokogiri (1.19.3-x86_64-linux-gnu) - racc (~> 1.4) - nokogiri (1.19.3-x86_64-linux-musl) - racc (~> 1.4) - pp (0.6.3) - prettyprint - prettyprint (0.2.0) - prism (1.9.0) - psych (5.3.1) - date - stringio - racc (1.8.1) - rdoc (7.2.0) - erb - psych (>= 4.0.0) - tsort - reline (0.6.3) - io-console (~> 0.5) + nokolexbor (0.7.0) + nokolexbor (0.7.0-aarch64-linux) + nokolexbor (0.7.0-arm64-darwin) + nokolexbor (0.7.0-x86_64-darwin) + nokolexbor (0.7.0-x86_64-linux) rspec (3.13.2) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) @@ -56,8 +20,6 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.7) - stringio (3.2.0) - tsort (0.2.0) PLATFORMS aarch64-linux-gnu @@ -70,40 +32,21 @@ PLATFORMS x86_64-linux-musl DEPENDENCIES - debug - nokogiri (~> 1.16) - rspec (~> 3.13) + nokolexbor + rspec (~> 3.12) CHECKSUMS - bundler (4.0.12) sha256=7f8b757d28dfb636e7b24fba2344ac6dd13b5b24f4b46d62573d483f211825ac - date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0 - debug (1.11.1) sha256=2e0b0ac6119f2207a6f8ac7d4a73ca8eb4e440f64da0a3136c30343146e952b6 diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 - erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9 - io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc - irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3 - nokogiri (1.19.3-aarch64-linux-gnu) sha256=46b89e5d7b9e844c2ee360794240c6ea2a4e6fa0c5892a4ed487db621224b639 - nokogiri (1.19.3-aarch64-linux-musl) sha256=8392dfdcd21be7a94dbbe9ccc138dea01b97b24cb2dc02a114ca98bfb1d9a0b7 - nokogiri (1.19.3-arm-linux-gnu) sha256=3919d5ffc334ad778a4a9eb88fda7dcb8b1fb58c8a52ac640c6dcd2f038e774f - nokogiri (1.19.3-arm-linux-musl) sha256=9ce1cb6346bb9c67b1550eb537aa183ead91e4b6eadb2f36ade02d8dd2a79fb6 - nokogiri (1.19.3-arm64-darwin) sha256=71b9bd424b1b7abc18b05052a1a3cfd3627abdca62be280854cc411791357e42 - nokogiri (1.19.3-x86_64-darwin) sha256=77f3fba57d46c53ab31e62fc6c28f705109d1bf6264356c76f132b2be5728d4d - nokogiri (1.19.3-x86_64-linux-gnu) sha256=2f5078620fe12e83669b5b17311b32532a8153d02eee7ad06948b926d6080976 - nokogiri (1.19.3-x86_64-linux-musl) sha256=248c906d2166eca5efb56d52fdee5f9a1f51d69a72e2b64fdac647b4ce39ea3f - pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6 - prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193 - prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 - psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974 - racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f - rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192 - reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 + nokolexbor (0.7.0) sha256=a6df669d9280bfe7f5f334a1734c96b80d8d54ff9b18cea807dbe5651be45dd7 + nokolexbor (0.7.0-aarch64-linux) sha256=1729e1d5e5fb3a5f1328453f4ee884a8c53de3a94ff315cacf518acf8b4e059f + nokolexbor (0.7.0-arm64-darwin) sha256=874c1cae2c2658d0cc4018f6569540753ff03b79bacb1b0d1380a8230a0a14ea + nokolexbor (0.7.0-x86_64-darwin) sha256=5de1b440996839cf82f2f35c79b4e1eee28100a263cdb9e67fa28c016c0526fe + nokolexbor (0.7.0-x86_64-linux) sha256=6348178e41233e67e0f533f84b0b1974b187fe137616541f1453bb7c0c16baf6 rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47 rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c - stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1 - tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f BUNDLED WITH - 4.0.12 + 4.0.10 diff --git a/lib/extractor.rb b/lib/extractor.rb index 31fbc4a0..78ef0a13 100644 --- a/lib/extractor.rb +++ b/lib/extractor.rb @@ -1,4 +1,4 @@ -require "nokogiri" +require "nokolexbor" require_relative "extractor/thumbnail_index" require_relative "extractor/carousel" @@ -24,7 +24,7 @@ def self.call(html_or_path) # Parse once into DOM, then build the thumbnail map once. # This avoids repeatedly scanning ") + Nokolexbor::HTML("") end it "maps a single id to its data URI" do From 0810878d26b1e8043b3e2362ad6ee5dbc5ae2696 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Mon, 1 Jun 2026 15:41:02 -0500 Subject: [PATCH 3/9] fix for nokolexbor/nokogiri discrepancy --- lib/extractor/carousel.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/extractor/carousel.rb b/lib/extractor/carousel.rb index b0946b59..cabeb36e 100644 --- a/lib/extractor/carousel.rb +++ b/lib/extractor/carousel.rb @@ -58,7 +58,7 @@ def candidate_groups tile_roots = anchors.map { |a| tile_root_for(a) }.compact.uniq # Sibling tile roots under the same parent form one carousel candidate. - grouped = tile_roots.group_by(&:parent) + grouped = tile_roots.group_by { |root| root.parent.to_s.hash + root.parent.element_children.size } grouped.delete(nil) # Drop weak candidates early. From a40de5aadce982cd621d6a214af1601866d26052 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Mon, 1 Jun 2026 03:35:42 -0500 Subject: [PATCH 4/9] replace anchors with name elements as targets of initial tile search This is because I discovered that interactive search results, such as the results for "Tom Cruise Movies", do not contain anchors in the initial HTML CI fix fix for missed @anchor reference --- lib/extractor/carousel.rb | 25 +++++++------ lib/extractor/item.rb | 16 +++++---- spec/fixtures/tom_cruise_movies.html | 52 ++++++++++++++++++++++++++++ spec/item_spec.rb | 3 +- 4 files changed, 77 insertions(+), 19 deletions(-) create mode 100644 spec/fixtures/tom_cruise_movies.html diff --git a/lib/extractor/carousel.rb b/lib/extractor/carousel.rb index cabeb36e..928683f5 100644 --- a/lib/extractor/carousel.rb +++ b/lib/extractor/carousel.rb @@ -47,15 +47,18 @@ def tiles # MIN_TILES+ siblings is a carousel candidate. def candidate_groups # Structural fingerprint that avoids volatile CSS class names. - anchors = @document.css('a[href*="stick="]').select do |a| - href = a["href"].to_s - # Relative and absolute google-search links are both accepted. - href.start_with?("/search") || href.include?("google.com/search") - end + target_section = @document.at_css('#search') || @document + target_section = target_section.css('div').find { |d| d['data-attrid'] } || target_section + name_element, name_elements = { + 'img[alt]': target_section.css('img[alt]'), + 'a[aria-label]': target_section.css('a[aria-label]'), + 'div[aria-label]': target_section.css('div[aria-label]'), + 'a[title]': target_section.css('a[title]'), + }.max_by { |key, value| value.size } # Convert each anchor to the smallest "tile root" node that represents # one tile (not a nested sub-node, not the whole carousel container). - tile_roots = anchors.map { |a| tile_root_for(a) }.compact.uniq + tile_roots = name_elements.map { |a| tile_root_for(a, name_element) }.compact.uniq # Sibling tile roots under the same parent form one carousel candidate. grouped = tile_roots.group_by { |root| root.parent.to_s.hash + root.parent.element_children.size } @@ -85,18 +88,18 @@ def document_position(node) @document.css("*").index(node) || Float::INFINITY end - # Walk up from `anchor` while the current node's parent still contains - # only one stick anchor. The last such node is the tile root — adding + # Walk up from the current root while the current node's parent still contains + # only one specific element. The last such node is the tile root — adding # one more level would absorb sibling tiles. - def tile_root_for(anchor) - node = anchor + def tile_root_for(current_root, name_element) + node = current_root loop do parent = node.parent return node unless parent # As soon as parent contains multiple stick anchors, walking higher # would merge sibling tiles. Current node is the tile root boundary. - stick_count = parent.css('a[href*="stick="]').size + stick_count = parent.css(name_element).size return node if stick_count != 1 node = parent end diff --git a/lib/extractor/item.rb b/lib/extractor/item.rb index a4ef2b09..57744dc4 100644 --- a/lib/extractor/item.rb +++ b/lib/extractor/item.rb @@ -23,8 +23,8 @@ def initialize(node, thumbnails) end def to_h - # Minimum contract: without anchor or name, tile isn't usable. - return nil unless @anchor && name + # Minimum contract: without name, tile isn't usable. + return nil unless name { "name" => name, @@ -44,8 +44,10 @@ def name # 3) first text block is a final rescue for unusual markup. candidates = [ @img && @img["alt"], - @anchor["aria-label"], - @anchor["title"], + @anchor && @anchor["aria-label"], + @anchor && @anchor["title"], + @node["aria-label"], + @node.at_css("div[aria-label]"), first_text_block, ] candidates.map { |c| c && c.strip }.find { |c| c && !c.empty? } @@ -59,7 +61,7 @@ def name # Google adds extra chips (e.g., medium, location). def extensions # Leaf-only text prevents container text like "Name1889" from leaking in. - leaves = @anchor.css("div, span").reject { |n| n.element_children.any? } + leaves = @node.css("div, span").reject { |n| n.element_children.any? } texts = leaves.map { |n| n.text.strip }.reject(&:empty?).uniq # Remove duplicated title if it appears as a chip. texts.delete(name) @@ -69,8 +71,8 @@ def extensions end def link + return nil unless @anchor href = @anchor["href"].to_s - return nil if href.empty? # Keep existing absolute URLs unchanged. return href if href.start_with?("http") # Normalize relative Google paths so consumers get absolute links. @@ -117,7 +119,7 @@ def placeholder?(src) def first_text_block # Fallback used only when stronger name signals are missing. - @anchor.xpath(".//text()").map(&:to_s).map(&:strip).find { |t| !t.empty? } + @node.xpath(".//text()").map(&:to_s).map(&:strip).find { |t| !t.empty? } end end end diff --git a/spec/fixtures/tom_cruise_movies.html b/spec/fixtures/tom_cruise_movies.html new file mode 100644 index 00000000..8b0c0de7 --- /dev/null +++ b/spec/fixtures/tom_cruise_movies.html @@ -0,0 +1,52 @@ + +tom cruise movies - Google Search

Search Results

What to watch
Edit your servicesAdd your services
Show more filtersHide filters
Release date
Starring Tom Cruise
Movies
Select services
Thriller
Romance
Comedy
Paramount Pictures
War
Sci-fi
Free
Crime
Academy Award
Spy
Teen
History of Warner Bros. Pictures
Sport
Horror
Nicole Kidman
Skydance Media
Comedy drama
Steven Spielberg
Clear all
More
Feedback
Google apps
Search Labs
Google Account
Judah Meek
judah.meek@gmail.com
diff --git a/spec/item_spec.rb b/spec/item_spec.rb index c3adb860..6340e73c 100644 --- a/spec/item_spec.rb +++ b/spec/item_spec.rb @@ -53,7 +53,8 @@ def tile_from(html) it "returns nil when there is no anchor (malformed tile)" do node = tile_from("
just text
") - expect(described_class.parse(node, thumbnails: {})).to be_nil + expected = {"extensions" => nil, "image" => nil, "link" => nil, "name" => "just text"} + expect(described_class.parse(node, thumbnails: {})).to eq(expected) end it "falls back to aria-label when img alt is missing" do From 3246d07de1d8c398f14f6648916c470f594bcf20 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Tue, 2 Jun 2026 00:14:47 -0500 Subject: [PATCH 5/9] Add fixtures Adding Tom cruise filmography results to contrast with the Tom Cruise movies results. Adding the U.S. Presidents results because its parent data-attrid doesn't start with 'kc:' like most grid results --- spec/fixtures/tom_cruise_filmography.html | 52 +++++++++++++++++++++++ spec/fixtures/u.s._presidents.html | 40 +++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 spec/fixtures/tom_cruise_filmography.html create mode 100644 spec/fixtures/u.s._presidents.html diff --git a/spec/fixtures/tom_cruise_filmography.html b/spec/fixtures/tom_cruise_filmography.html new file mode 100644 index 00000000..cce5186d --- /dev/null +++ b/spec/fixtures/tom_cruise_filmography.html @@ -0,0 +1,52 @@ + +tom cruise filmography - Google Search

Search Results

Tom Cruise
American actor and film producer
Google apps
Search Labs
Google Account
Judah Meek
judah.meek@gmail.com
diff --git a/spec/fixtures/u.s._presidents.html b/spec/fixtures/u.s._presidents.html new file mode 100644 index 00000000..e0bbd615 --- /dev/null +++ b/spec/fixtures/u.s._presidents.html @@ -0,0 +1,40 @@ + +u.s. presidents - Google Search

Search Results

United States/Presidents
Feedback
Google apps
Search Labs
Google Account
Judah Meek
judah.meek@gmail.com
From 81a2bb2c044f7c42f32d992563a69edc5cfbf46b Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Tue, 2 Jun 2026 00:18:32 -0500 Subject: [PATCH 6/9] Enhanced carousel & item logic & tests The changes to the group score method are what I'm most proud of. The original method returned an array, which when run through the max function (in the tiles method ~ line 36), acts like a series of tiebreakers This gives an overwhelming amount of weight to whatever quality proxy is measured first. The other aspect of my changes that I would like to draw your attention to is the use of environment variables. It's a basic feature, but one I don't recall seeing in my competitors PRs. --- lib/extractor/carousel.rb | 43 +++++++---- lib/extractor/item.rb | 20 +++-- spec/carousel_spec.rb | 151 ++++++++++++++++++++++++++++++-------- spec/item_spec.rb | 13 ++++ 4 files changed, 177 insertions(+), 50 deletions(-) diff --git a/lib/extractor/carousel.rb b/lib/extractor/carousel.rb index 928683f5..ff7fd062 100644 --- a/lib/extractor/carousel.rb +++ b/lib/extractor/carousel.rb @@ -21,6 +21,7 @@ def self.tiles(document) # it without threading it through every method call. def initialize(document) @document = document + @root_selector = nil end def tiles @@ -49,16 +50,17 @@ def candidate_groups # Structural fingerprint that avoids volatile CSS class names. target_section = @document.at_css('#search') || @document target_section = target_section.css('div').find { |d| d['data-attrid'] } || target_section - name_element, name_elements = { - 'img[alt]': target_section.css('img[alt]'), - 'a[aria-label]': target_section.css('a[aria-label]'), - 'div[aria-label]': target_section.css('div[aria-label]'), - 'a[title]': target_section.css('a[title]'), - }.max_by { |key, value| value.size } + best_root_candidate = [ + { elements: target_section.css('img[alt]'), priority: 0, selector: 'img[alt]' }, + { elements: target_section.css('[title]'), priority: 1, selector: '[title]' }, + { elements: target_section.css('[aria-label]'), priority: 2, selector: '[aria-label]' }, + { elements: target_section.css('a[href*="stick="]'), priority: 3, selector: 'a[href*="stick="]' }, + ].max_by { |entry| [ entry[:elements].size, -entry[:priority] ] } + @root_selector = best_root_candidate[:selector] # Convert each anchor to the smallest "tile root" node that represents # one tile (not a nested sub-node, not the whole carousel container). - tile_roots = name_elements.map { |a| tile_root_for(a, name_element) }.compact.uniq + tile_roots = best_root_candidate[:elements].map { |a| tile_root_for(a) }.compact.uniq # Sibling tile roots under the same parent form one carousel candidate. grouped = tile_roots.group_by { |root| root.parent.to_s.hash + root.parent.element_children.size } @@ -70,16 +72,27 @@ def candidate_groups # Score shape: # 1) tiles with an image element - # 2) tiles with a likely name signal - # 3) group size + # 2) tiles with a properly formatted anchor links + # 3) tiles with a likely name signal + # 4) group size # # This keeps us anchored on structural evidence instead of class names. def group_score(group) + default_weight = ENV.fetch('DEFAULT_TILE_WEIGHT', 1.1).to_f + acceptable_number_of_misformed_tiles = ENV.fetch('ACCEPTABLE_NUMBER_OF_MISFORMED_TILES', 0).to_i + tile_img_weight = ENV.fetch('TILE_IMG_WEIGHT', default_weight).to_f + tile_anchor_weight = ENV.fetch('TILE_ANCHOR_WEIGHT', default_weight).to_f + tile_name_weight = ENV.fetch('TILE_NAME_WEIGHT', default_weight).to_f # Prefer groups that look like media cards. - with_image = group.count { |tile| tile.at_css("img") } - # Name-like signals provide a second quality axis. - with_name = group.count { |tile| tile.at_css('img[alt], a[aria-label], a[title]') } - [with_image, with_name, group.size] + almost_all_tiles_have_images = @root_selector == 'img[alt]' || group.count { |tile| tile.at_css("img") } >= group.size - acceptable_number_of_misformed_tiles + img_score = almost_all_tiles_have_images ? tile_img_weight : 1 + # properly formatted anchor links provide a second quality axis. + almost_all_tiles_have_anchors = @root_selector == 'a[href*="stick="]' || group.count { |tile| tile.at_css('a[href*="stick="]') } >= group.size - acceptable_number_of_misformed_tiles + anchor_score = almost_all_tiles_have_anchors ? tile_anchor_weight : 1 + # Name-like signals provide a third quality axis. + almost_all_tiles_have_names = ['[title]', '[aria-label]', 'img[alt]'].include?(@root_selector) || group.count { |tile| tile.at_css('[title], [aria-label], img[alt]') } >= group.size - acceptable_number_of_misformed_tiles + name_score = almost_all_tiles_have_names ? tile_name_weight : 1 + group.size * img_score * anchor_score * name_score end def document_position(node) @@ -91,7 +104,7 @@ def document_position(node) # Walk up from the current root while the current node's parent still contains # only one specific element. The last such node is the tile root — adding # one more level would absorb sibling tiles. - def tile_root_for(current_root, name_element) + def tile_root_for(current_root) node = current_root loop do parent = node.parent @@ -99,7 +112,7 @@ def tile_root_for(current_root, name_element) # As soon as parent contains multiple stick anchors, walking higher # would merge sibling tiles. Current node is the tile root boundary. - stick_count = parent.css(name_element).size + stick_count = parent.css(@root_selector).size return node if stick_count != 1 node = parent end diff --git a/lib/extractor/item.rb b/lib/extractor/item.rb index 57744dc4..1bec0118 100644 --- a/lib/extractor/item.rb +++ b/lib/extractor/item.rb @@ -18,7 +18,7 @@ def self.parse(node, thumbnails:) def initialize(node, thumbnails) @node = node @thumbnails = thumbnails - @anchor = node.at_css("a[href]") + @anchor = node.matches?("a[href]") ? node : node.at_css("a[href]") @img = node.at_css("img") end @@ -44,13 +44,21 @@ def name # 3) first text block is a final rescue for unusual markup. candidates = [ @img && @img["alt"], - @anchor && @anchor["aria-label"], - @anchor && @anchor["title"], + @node["title"], @node["aria-label"], - @node.at_css("div[aria-label]"), - first_text_block, ] - candidates.map { |c| c && c.strip }.find { |c| c && !c.empty? } + result = candidates.map { |c| c && c.strip }.find { |c| c && !c.empty? } + if result.nil? + title = @node.at_css("[title]") + aria = @node.at_css("[aria-label]") + candidates = [ + title && title["title"], + aria && aria["aria-label"], + first_text_block, + ] + result = candidates.map { |c| c && c.strip }.find { |c| c && !c.empty? } + end + result end end diff --git a/spec/carousel_spec.rb b/spec/carousel_spec.rb index 757838e9..c26aee43 100644 --- a/spec/carousel_spec.rb +++ b/spec/carousel_spec.rb @@ -5,45 +5,138 @@ def doc_for(html) Nokolexbor::HTML(html) end - it "prefers the candidate group with stronger tile signals when sizes tie" do - doc = doc_for(<<~HTML) - -
- - - -
-
- - - -
- - HTML + context "when sizes tie" do + it "prioritizes image elements with alt attributes over elements with title attributes" do + doc = doc_for(<<~HTML) + +
+
+
+
+
+
+
S1
+
S2
+
S3
+
+ + HTML - tiles = described_class.tiles(doc) - expect(tiles.size).to eq(3) - expect(tiles.first.parent["id"]).to eq("strong") + tiles = described_class.tiles(doc) + expect(tiles.size).to eq(3) + expect(tiles.first.parent["id"]).to eq("alt") + end + + it "prioritizes elements with title attributes over aria-labels" do + doc = doc_for(<<~HTML) + +
+
+
+
+
+
+
+
+
+
+ + HTML + + tiles = described_class.tiles(doc) + expect(tiles.size).to eq(3) + expect(tiles.first.parent["id"]).to eq("title") + end + + it "is deterministic on exact ties by picking the first group in DOM order" do + doc = doc_for(<<~HTML) + +
+
F1
+
F2
+
F3
+
+
+
S1
+
S2
+
S3
+
+ + HTML + + tiles = described_class.tiles(doc) + expect(tiles.size).to eq(3) + expect(tiles.first.parent["id"]).to eq("first") + end end - it "is deterministic on exact ties by picking the first group in DOM order" do + describe "group score & quality weights" do + it "prefers the candidate group with stronger tile signals when sizes are close" do + doc = doc_for(<<~HTML) +
+
+
+
+
+
+
+
+
+
S1
+
S2
+
S3
+
S4
+
S5
+
+ + HTML + + tiles = described_class.tiles(doc) + expect(tiles.size).to eq(5) + expect(tiles.first.parent["id"]).to eq("quality") + end + + it "the ACCEPTABLE_NUMBER_OF_MISFORMED_TILES environment variable can soften the uniformity requirement" do + allow(ENV).to receive(:fetch).and_call_original # Preserves unmocked keys + allow(ENV).to receive(:fetch).with("ACCEPTABLE_NUMBER_OF_MISFORMED_TILES", 0).and_return("2") + doc = doc_for(<<~HTML) +
+
+
+
+
+
+
+
+
+
S1
+
S2
+
S3
+
+
+
+ + HTML + + tiles = described_class.tiles(doc) + expect(tiles.size).to eq(5) + expect(tiles.first.parent["id"]).to eq("quality") + end + end + + it "selects anchor elements if easily detectable name candidates can't be found" do doc = doc_for(<<~HTML) -
-
F1
-
F2
-
F3
-
-
-
S1
-
S2
-
S3
+
+
+
+
HTML tiles = described_class.tiles(doc) expect(tiles.size).to eq(3) - expect(tiles.first.parent["id"]).to eq("first") + expect(tiles.first.parent["id"]).to eq("stick") end end diff --git a/spec/item_spec.rb b/spec/item_spec.rb index 6340e73c..715c590a 100644 --- a/spec/item_spec.rb +++ b/spec/item_spec.rb @@ -71,6 +71,19 @@ def tile_from(html) expect(out["extensions"]).to eq(["1901"]) end + it "prioritizes title over aria-label" do + node = tile_from(<<~HTML) + + HTML + out = described_class.parse(node, thumbnails: {}) + expect(out["name"]).to eq("The Better Choice") + end + it "returns in-file thumbnail URL from data-src when present" do node = tile_from(<<~HTML)
From 82bb73a4b35b7488a56135ed535446adbaae96f5 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Tue, 2 Jun 2026 01:44:20 -0500 Subject: [PATCH 7/9] Improve robustness of image map creation One flaw I noticed in nearly all competitors was relying on Google's image lazy-load script not to change in any way. A more robust solution than mine would account for the _setImagesSrc function name to also possibly change & probably try only relying on the data:image structure as the initial clue. It would make scanning the first script more computationally expensive, but detected variables could then be used to speed up processing of subsequent scripts. Hopefully, Google never decides to combine all their lazy-loading scripts together. I'm not sure how that could be detected performantly, but I'm sure I could find a way, given enough time. --- lib/extractor/thumbnail_index.rb | 32 ++++++++++++++++---------------- spec/thumbnail_index_spec.rb | 6 ++++++ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/lib/extractor/thumbnail_index.rb b/lib/extractor/thumbnail_index.rb index 95fcf4cf..e68ae1ef 100644 --- a/lib/extractor/thumbnail_index.rb +++ b/lib/extractor/thumbnail_index.rb @@ -10,12 +10,9 @@ module Extractor class ThumbnailIndex # Greedy on the data URI body, anchored on the trailing `_setImagesSrc(ii,s,r)` # to avoid mis-pairing s/ii from adjacent script blocks. - BLOCK_REGEX = / - var\s+s\s*=\s*'(?data:image\/[^']+)'\s*;\s* - var\s+ii\s*=\s*\[(?[^\]]*)\]\s*;\s* - var\s+r\s*=\s*'[^']*'\s*;\s* - _setImagesSrc\(ii,\s*s,\s*r\) - /xm.freeze + + + IMAGE_SETTER_REGEX = /_setImagesSrc\((?[a-z]*),\s*(?[a-z]*)/.freeze ID_REGEX = /'([^']+)'/.freeze @@ -32,16 +29,19 @@ def build mapping = {} @document.css("script").each do |script| body = script.content - # Cheap pre-filter avoids regex scanning unrelated scripts. - next unless body.include?("_setImagesSrc") - - body.scan(BLOCK_REGEX) do - match = Regexp.last_match - # Decode JS escapes so the resulting data URI matches browser output. - data_uri = unescape_js(match[:data]) - # One data URI can map to multiple image ids. - match[:ids].scan(ID_REGEX) { |(id)| mapping[id] = data_uri } - end + desired_variables = body.match(IMAGE_SETTER_REGEX) + next if desired_variables.nil? + + source_regex = /var\s+#{desired_variables[:source]}\s*=\s*'(?data:image\/[^']+)'\s*;/.freeze + ids_regex = /var\s+#{desired_variables[:id]}\s*=\s*\[(?[^\]]*)\]\s*;/.freeze + + source_result = body.match(source_regex) + ids_result = body.match(ids_regex) + + # Decode JS escapes so the resulting data URI matches browser output. + data_uri = unescape_js(source_result[:data]) + # One data URI can map to multiple image ids. + ids_result[:ids].scan(ID_REGEX) { |(id)| mapping[id] = data_uri } end mapping end diff --git a/spec/thumbnail_index_spec.rb b/spec/thumbnail_index_spec.rb index 4ccc8ecb..30b896c9 100644 --- a/spec/thumbnail_index_spec.rb +++ b/spec/thumbnail_index_spec.rb @@ -11,6 +11,12 @@ def doc_for(script_body) expect(described_class.build(doc_for(body))).to eq("img_1" => "data:image/jpeg;base64,ABC") end + it "can handle different variable names with different script structure" do + body = "(function(){var ids=['img_1'];var source='data:image/jpeg;base64,ABC';" \ + "_setImagesSrc(ids,source);})();" + expect(described_class.build(doc_for(body))).to eq("img_1" => "data:image/jpeg;base64,ABC") + end + it "maps multiple ids in the same call to the same URI" do body = "(function(){var s='data:image/jpeg;base64,XYZ';" \ "var ii=['a','b','c'];var r='';_setImagesSrc(ii,s,r);})();" From fcd228c06aca6922775295b357fd258517768c13 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Tue, 2 Jun 2026 19:17:44 -0500 Subject: [PATCH 8/9] performance improvements & scrapeMemo index explanation --- lib/extractor.rb | 1 + lib/extractor/carousel.rb | 76 +++++++++++------------------- lib/extractor/item.rb | 1 + lib/extractor/thumbnail_index.rb | 17 +++---- spec/carousel_spec.rb | 80 +++++++------------------------- 5 files changed, 56 insertions(+), 119 deletions(-) diff --git a/lib/extractor.rb b/lib/extractor.rb index 78ef0a13..c9af5c22 100644 --- a/lib/extractor.rb +++ b/lib/extractor.rb @@ -4,6 +4,7 @@ require_relative "extractor/carousel" require_relative "extractor/item" +# scrapeMemo psuedocode: enabling the Item class to detect whether a relevant scrapeMemo record has been found by the Carousel class would probably require changing the Extractor from a module into a class module Extractor # Public facade. Returns an Array of carousel items. # diff --git a/lib/extractor/carousel.rb b/lib/extractor/carousel.rb index ff7fd062..c995f4e5 100644 --- a/lib/extractor/carousel.rb +++ b/lib/extractor/carousel.rb @@ -21,11 +21,19 @@ def self.tiles(document) # it without threading it through every method call. def initialize(document) @document = document - @root_selector = nil end def tiles - groups = candidate_groups + # scrapeMemo psuedocode: create empty scrapeMemo hash, which will serve as an index for future parsing of the same search result structure (data-attrid, tile grid container class, tile root class, tile count, name_attribute, image_script_variable_names) + target_section = @document.at_css('#search') || @document + # scrapeMemo psuedocode: if '#search' can't be found, add that to scrapeMemo hash + target_section = target_section.css('div').find { |d| d['data-attrid'] } || target_section + # scrapeMemo psuedocode: if div['data-attrid'] can't be found, add that to scrapeMemo hash + # scrapeMemo psuedocode: check database for any records containing the same ['data-attrid'] value + # scrapeMemo psuedocode: if one or more record(s) exist, scan for the tile grid container class, prioritizing the record most recently created + # scrapeMemo psuedocode: if the tile grid container exists & has the expected number of children with the expected tile root class, set them as the tile roots & skip the rest of this function + + groups = candidate_groups(target_section) return [] if groups.empty? # Multiple stick-link groups can exist on one page. We prefer the group @@ -36,38 +44,23 @@ def tiles best_score = scored.map(&:first).max best_groups = scored.select { |score, _| score == best_score }.map(&:last) best_groups.min_by { |g| document_position(g.first) } || [] + # scrapeMemo psuedocode: just like with the div['data-attrid'] value before, we can now check the tile grid container class, tile root class, tile count, as well as the div['data-attrid'] value against recorded indexes to check for search result structure drift end private - # Build candidate groups by: - # 1. Finding every `/search?…&stick=…` anchor. - # 2. Walking each anchor up to its *tile root* — the highest ancestor - # that still contains exactly one stick anchor. - # 3. Grouping tile roots by their common parent. A group with - # MIN_TILES+ siblings is a carousel candidate. - def candidate_groups - # Structural fingerprint that avoids volatile CSS class names. - target_section = @document.at_css('#search') || @document - target_section = target_section.css('div').find { |d| d['data-attrid'] } || target_section - best_root_candidate = [ - { elements: target_section.css('img[alt]'), priority: 0, selector: 'img[alt]' }, - { elements: target_section.css('[title]'), priority: 1, selector: '[title]' }, - { elements: target_section.css('[aria-label]'), priority: 2, selector: '[aria-label]' }, - { elements: target_section.css('a[href*="stick="]'), priority: 3, selector: 'a[href*="stick="]' }, - ].max_by { |entry| [ entry[:elements].size, -entry[:priority] ] } - @root_selector = best_root_candidate[:selector] - - # Convert each anchor to the smallest "tile root" node that represents - # one tile (not a nested sub-node, not the whole carousel container). - tile_roots = best_root_candidate[:elements].map { |a| tile_root_for(a) }.compact.uniq - - # Sibling tile roots under the same parent form one carousel candidate. - grouped = tile_roots.group_by { |root| root.parent.to_s.hash + root.parent.element_children.size } - grouped.delete(nil) + # before = Time.now + # for i in 1..1000 + # candidate_groups(target_section) + # end + # after = Time.now + # puts "new version benchmarked at #{after - before}" - # Drop weak candidates early. - grouped.values.select { |g| g.size >= MIN_TILES } + # Build candidate groups by finding the three biggest sibling groups within the target section + # I tested this versus the previous implementation with the quick & dirty benchmark commented out above + # against the van-gogh-paintings.html results and found this to be about x10 faster. + def candidate_groups(target_section) + target_section.css('div', 'section', 'main').max_by(3) { |element| element.element_children.count }.map { |e| e.element_children } end # Score shape: @@ -84,13 +77,15 @@ def group_score(group) tile_anchor_weight = ENV.fetch('TILE_ANCHOR_WEIGHT', default_weight).to_f tile_name_weight = ENV.fetch('TILE_NAME_WEIGHT', default_weight).to_f # Prefer groups that look like media cards. - almost_all_tiles_have_images = @root_selector == 'img[alt]' || group.count { |tile| tile.at_css("img") } >= group.size - acceptable_number_of_misformed_tiles + almost_all_tiles_have_images = group.count { |tile| tile.at_css("img") } >= group.size - acceptable_number_of_misformed_tiles img_score = almost_all_tiles_have_images ? tile_img_weight : 1 # properly formatted anchor links provide a second quality axis. - almost_all_tiles_have_anchors = @root_selector == 'a[href*="stick="]' || group.count { |tile| tile.at_css('a[href*="stick="]') } >= group.size - acceptable_number_of_misformed_tiles + almost_all_tiles_have_anchors = group.count { |tile| tile.at_css('a[href*="stick="]') } >= group.size - acceptable_number_of_misformed_tiles anchor_score = almost_all_tiles_have_anchors ? tile_anchor_weight : 1 # Name-like signals provide a third quality axis. - almost_all_tiles_have_names = ['[title]', '[aria-label]', 'img[alt]'].include?(@root_selector) || group.count { |tile| tile.at_css('[title], [aria-label], img[alt]') } >= group.size - acceptable_number_of_misformed_tiles + # I didn't think that searching for each name candidate individually to enforce uniformity + # was worth the performance cost, but it is a tradeoff worth discussing in a code review + almost_all_tiles_have_names = group.count { |tile| tile.at_css('[title], [aria-label], img[alt]') } >= group.size - acceptable_number_of_misformed_tiles name_score = almost_all_tiles_have_names ? tile_name_weight : 1 group.size * img_score * anchor_score * name_score end @@ -100,22 +95,5 @@ def document_position(node) # DOM-order fallback is stable and explainable. @document.css("*").index(node) || Float::INFINITY end - - # Walk up from the current root while the current node's parent still contains - # only one specific element. The last such node is the tile root — adding - # one more level would absorb sibling tiles. - def tile_root_for(current_root) - node = current_root - loop do - parent = node.parent - return node unless parent - - # As soon as parent contains multiple stick anchors, walking higher - # would merge sibling tiles. Current node is the tile root boundary. - stick_count = parent.css(@root_selector).size - return node if stick_count != 1 - node = parent - end - end end end diff --git a/lib/extractor/item.rb b/lib/extractor/item.rb index 1bec0118..c35296d9 100644 --- a/lib/extractor/item.rb +++ b/lib/extractor/item.rb @@ -37,6 +37,7 @@ def to_h private def name + # scrapeMemo psuedocode: if the Carousel class detected a relevant scrapeMemo index, then the recorded name candidate can be checked for first @name ||= begin # Ordered fallback chain: # 1) is usually canonical title on Google tiles. diff --git a/lib/extractor/thumbnail_index.rb b/lib/extractor/thumbnail_index.rb index e68ae1ef..b3f0ad35 100644 --- a/lib/extractor/thumbnail_index.rb +++ b/lib/extractor/thumbnail_index.rb @@ -8,12 +8,6 @@ module Extractor # thumbnail is injected at runtime against the image id(s) listed in `ii`. # We replicate that mapping at parse time so no JS execution is required. class ThumbnailIndex - # Greedy on the data URI body, anchored on the trailing `_setImagesSrc(ii,s,r)` - # to avoid mis-pairing s/ii from adjacent script blocks. - - - IMAGE_SETTER_REGEX = /_setImagesSrc\((?[a-z]*),\s*(?[a-z]*)/.freeze - ID_REGEX = /'([^']+)'/.freeze # Public convenience API. @@ -26,15 +20,22 @@ def initialize(document) end def build + # scrapeMemo psuedocode: if the Carousel class detected a relevant scrapeMemo index, then the recorded function name, variable names, and variable order (maybe?) could be used to construct a single regex instead of the three different regexes I'm using + image_setter_regex = /_setImagesSrc\((?[a-z]*),\s*(?[a-z]*)/.freeze mapping = {} @document.css("script").each do |script| body = script.content - desired_variables = body.match(IMAGE_SETTER_REGEX) + desired_variables = body.match(image_setter_regex) + # instead of skipping if the image_setter_regex fails to match because the image_setter function has been renamed, we could modify the source & ids regexes to look for properly formatted variable assignments & then look for a function taking those variables as parameters near the very end of the script + # Something like... + # source_regex = /var\s+(?\w+)\s*=\s*'(?data:image\/[^']+)'\s*;/.freeze + # ids_regex = /var\s+(?\w+)\s*=\s*\[(?[^\]]*)\]\s*;/.freeze + # image_setter_regex = /(?\w+)\((#{source_variable}|#{ids_variable}),\s*(#{source_variable}|#{ids_variable}).{,12}\z/.freeze next if desired_variables.nil? source_regex = /var\s+#{desired_variables[:source]}\s*=\s*'(?data:image\/[^']+)'\s*;/.freeze ids_regex = /var\s+#{desired_variables[:id]}\s*=\s*\[(?[^\]]*)\]\s*;/.freeze - + source_result = body.match(source_regex) ids_result = body.match(ids_regex) diff --git a/spec/carousel_spec.rb b/spec/carousel_spec.rb index c26aee43..fb51e4bd 100644 --- a/spec/carousel_spec.rb +++ b/spec/carousel_spec.rb @@ -5,69 +5,25 @@ def doc_for(html) Nokolexbor::HTML(html) end - context "when sizes tie" do - it "prioritizes image elements with alt attributes over elements with title attributes" do - doc = doc_for(<<~HTML) - -
-
-
-
-
-
-
S1
-
S2
-
S3
-
- - HTML - - tiles = described_class.tiles(doc) - expect(tiles.size).to eq(3) - expect(tiles.first.parent["id"]).to eq("alt") - end - - it "prioritizes elements with title attributes over aria-labels" do - doc = doc_for(<<~HTML) - -
-
-
-
-
-
-
-
-
-
- - HTML - - tiles = described_class.tiles(doc) - expect(tiles.size).to eq(3) - expect(tiles.first.parent["id"]).to eq("title") - end - - it "is deterministic on exact ties by picking the first group in DOM order" do - doc = doc_for(<<~HTML) - -
-
F1
-
F2
-
F3
-
-
-
S1
-
S2
-
S3
-
- - HTML + it "is deterministic on exact ties by picking the first group in DOM order when sizes tie" do + doc = doc_for(<<~HTML) + +
+
F1
+
F2
+
F3
+
+
+
S1
+
S2
+
S3
+
+ + HTML - tiles = described_class.tiles(doc) - expect(tiles.size).to eq(3) - expect(tiles.first.parent["id"]).to eq("first") - end + tiles = described_class.tiles(doc) + expect(tiles.size).to eq(3) + expect(tiles.first.parent["id"]).to eq("first") end describe "group score & quality weights" do From e38aca0abe04a1e1c0d066c49cb25c12bddb79c7 Mon Sep 17 00:00:00 2001 From: Judah Meek Date: Wed, 3 Jun 2026 00:08:18 -0500 Subject: [PATCH 9/9] final tests & changes --- lib/extractor/carousel.rb | 4 +- lib/extractor/item.rb | 2 +- spec/extractor_spec.rb | 45 ++--- spec/fixtures/tom_cruise_movies.json | 60 +++++++ spec/fixtures/u.s._presidents.json | 254 +++++++++++++++++++++++++++ spec/item_spec.rb | 2 +- 6 files changed, 335 insertions(+), 32 deletions(-) create mode 100644 spec/fixtures/tom_cruise_movies.json create mode 100644 spec/fixtures/u.s._presidents.json diff --git a/lib/extractor/carousel.rb b/lib/extractor/carousel.rb index c995f4e5..e3a3633e 100644 --- a/lib/extractor/carousel.rb +++ b/lib/extractor/carousel.rb @@ -24,10 +24,10 @@ def initialize(document) end def tiles - # scrapeMemo psuedocode: create empty scrapeMemo hash, which will serve as an index for future parsing of the same search result structure (data-attrid, tile grid container class, tile root class, tile count, name_attribute, image_script_variable_names) + # scrapeMemo psuedocode: create empty scrapeMemo hash, which will serve as an index for future parsing of the same search result structure (data-attrid, whether target grid is inside div#search or not, tile grid container class, tile root class, tile count, name_attribute, image_script_variable_names) target_section = @document.at_css('#search') || @document # scrapeMemo psuedocode: if '#search' can't be found, add that to scrapeMemo hash - target_section = target_section.css('div').find { |d| d['data-attrid'] } || target_section + target_section = target_section.css('div').find { |d| d['data-attrid'] } || @document.css('div').find { |d| d['data-attrid'] } || target_section # scrapeMemo psuedocode: if div['data-attrid'] can't be found, add that to scrapeMemo hash # scrapeMemo psuedocode: check database for any records containing the same ['data-attrid'] value # scrapeMemo psuedocode: if one or more record(s) exist, scan for the tile grid container class, prioritizing the record most recently created diff --git a/lib/extractor/item.rb b/lib/extractor/item.rb index c35296d9..c4ac1115 100644 --- a/lib/extractor/item.rb +++ b/lib/extractor/item.rb @@ -31,7 +31,7 @@ def to_h "extensions" => extensions, "link" => link, "image" => image, - } + }.compact end private diff --git a/spec/extractor_spec.rb b/spec/extractor_spec.rb index 9b1e467c..074b8f18 100644 --- a/spec/extractor_spec.rb +++ b/spec/extractor_spec.rb @@ -7,41 +7,30 @@ end let(:result) { Extractor.call(File.join(FIXTURES_DIR, "van-gogh-paintings.html")) } - it "returns the same number of items as the SerpApi reference output" do - expect(result.size).to eq(expected.size) + it "matches SerpApi reference output" do + expect(result).to eq(expected) end + end - it "matches name, extensions and link byte-for-byte across all items" do - mismatches = result.each_with_index.reject do |item, i| - %w[name extensions link].all? { |f| item[f] == expected[i][f] } - end - expect(mismatches).to be_empty, -> { - mismatches.first(3).map { |it, i| - "row #{i}: got=#{it.reject { |k,_| k == 'image' }.inspect} " \ - "exp=#{expected[i].reject { |k,_| k == 'image' }.inspect}" - }.join("\n") - } + describe ".call with U.S. Presidents fixture" do + let(:expected) do + JSON.parse(File.read((File.expand_path("fixtures/u.s._presidents.json", __dir__))))["artworks"] end + let(:result) { Extractor.call(File.expand_path("fixtures/u.s._presidents.html", __dir__)) } - it "extracts every inline thumbnail present in the HTML exactly" do - # The page only ships the first N base64 thumbnails inline. The rest - # are URL thumbnails in in-file attributes (e.g. data-src). Those are - # still part of the page snapshot and should be surfaced as-is. - inline_expected = expected.each_with_index.select { |e, _| e["image"].to_s.start_with?("data:") } + it "matches U.S. Presidents reference output" do + expect(result).to eq(expected) + end + end - inline_expected.each do |e, i| - expect(result[i]["image"]).to eq(e["image"]), - "mismatch on row #{i} (#{e['name']})" - end + describe ".call with Tom Cruise movies fixture" do + let(:expected) do + JSON.parse(File.read((File.expand_path("fixtures/tom_cruise_movies.json", __dir__))))["artworks"] end + let(:result) { Extractor.call(File.expand_path("fixtures/tom_cruise_movies.html", __dir__)) } - it "matches image output byte-for-byte against expected array" do - mismatches = result.each_with_index.reject { |item, i| item["image"] == expected[i]["image"] } - expect(mismatches).to be_empty, -> { - mismatches.first(3).map { |(item, i)| - "row #{i}: got=#{item['image'].inspect} exp=#{expected[i]['image'].inspect}" - }.join("\n") - } + it "matches Tom Cruise movies reference output" do + expect(result).to eq(expected) end end end diff --git a/spec/fixtures/tom_cruise_movies.json b/spec/fixtures/tom_cruise_movies.json new file mode 100644 index 00000000..f443bcf8 --- /dev/null +++ b/spec/fixtures/tom_cruise_movies.json @@ -0,0 +1,60 @@ +{ + "artworks": [ + { + "name": "Mission: Impossible – The Final Reckoning", + "extensions": [ + "2025" + ], + "image": "data:image/png;base64,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" + }, + { + "name": "Mission: Impossible – Dead Reckoning Part One", + "extensions": [ + "2023" + ], + "image": "data:image/jpeg;base64,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" + }, + { + "name": "Top Gun: Maverick", + "extensions": [ + "2022" + ], + "image": "data:image/jpeg;base64,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" + }, + { + "name": "Mission: Impossible - Fallout", + "extensions": [ + "2018" + ], + "image": "data:image/jpeg;base64,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" + }, + { + "name": "American Made", + "extensions": [ + "2017" + ], + "image": "data:image/jpeg;base64,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" + }, + { + "name": "The Mummy", + "extensions": [ + "2017" + ], + "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5OjcBCgoKDQwNGg8PGjclHyU3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3N//AABEIAKIAegMBIgACEQEDEQH/xAAcAAACAwEBAQEAAAAAAAAAAAAEBgMFBwACAQj/xABAEAACAQMCBAQDBQUGBQUAAAABAgMABBEFIQYSMUETIlFhBxRxMoGRobEVQlLB8CMkU2KS0TM0c4LhCBZys/H/xAAaAQACAwEBAAAAAAAAAAAAAAACAwABBAUG/8QAIhEAAgICAwACAwEAAAAAAAAAAAECEQMhBBIxE0EiMlEz/9oADAMBAAIRAxEAPwB24y5ok+ZVgOUHyHvWRavqBIdCwaVjliOi1ovHNzh2BbyNlvoorHbtg7FR0LFmJrHalNmr9YFbeSmW4J/AVBP5IgvrRyRcxMpHlA/P0oG+OAG960IzsdOCLuSwtA8GGmB5vBfpMudwPRh2rSdP4p0a6VQ0ht5e8c45SPv6Uj6Zw7Jd8LwzwDzFOYGlu/h1Jieblm5Qd3U/cOb/AHx+G9Jik22PlaSo3WW6tmspZBOBEEJ54znAx2xS9PbQ36Rf3yT+1tySY0C8+xHN7Hfp9Ky/Q9ZvLO7SNXZT/hhsqe38q1Kwnlm0pLmOPCKucAYxTqoVtlXcNaWOnxs0/NhcB5Rhmx3PvWf63rlu0ri3y5PcV54t1Nr27LO7kZ5Qq96XjHNjIYr6BYzk/j9341fVekt+HXEs0p55fKD0XuaGG0golInLHnB69znFDP8A8cgdqhTLGGVlHMpOR1pi4dkLXMsWRiWIrg9Obt/tSvExAyOuKtrCZYpopJAeTPK4HX7velTWg4ypmv8ACtvDqSRrOkal4uYDlA9O1M/7Ck/duAB2Hh9KzvQtZliflK5e3AYyqOvp+Oc/934O8WpXLxIwugAVBxttWVOK/ZD5dn4xQ4zuxLb3BUgBlHl/r76zeRRIxGftHoO29OnFknkkiUDcdf6+lJCLhTzHJO21Fiemysv0j1cuiRKibL0UevqfxqlvfMrVYTOXJY9Og+n9fpQE2+RWmGjPLZuXwpu47zhO1RiCUXkYH2r5rWk6dPqNxFBBMJ1HM4h6H074BO+3saTfhNqZtY3hY+UsdvetRmupi80sMkZAtjyqxUHn7H2Gx69c+2w6tobbSTE7SeF4ZCt40ZjQ74k+3nPQjtuKc9Gs0GkTwqvl3GPuqCPUfmJ4LRY8zyDzZ7YG+cVe6bCYdPmDAA5NHHYMro/PN9a+Hqc0WOkhGPvr3PDEkZVmYsoyVAJwKJ1vI1u6IUkCXrUV7MPEZRDzMqbkjvt77/T2q5MpIrLqJYVOKX85uGPvVzqE5KebAYjoO1UsW7Z9d6uC0DN7DVIGBR1uvNCSf4tjVcavtDgF3GbfZpCcqO+9DPSskduhz4YtnuLlYWl5UktlGDvvkY+mCa06PRwkaqIsgAAVmOjyPFeCOESKYGKBeXJCE5Hud/5fQaTHxZAI1DKvNgZ3NZV1vZod1oQuL7aKCLnXYupBB3223HvsfuIrN5m80oUbHZRWl8fFcLCrZ5cqAOuM5/mKy+SQqSW648tMxx9F5JeEcz4G30BoOTYnPTaiCQ2T3WvgCyoR+8O3rTkqFFjwfqAstT8FjhZTlSf4hWjRzxXl1MBdmK4mtCpDrzDk7kfzrGpeeJxglWU5B9DTZo/ETyQKCIzOAUYNt1Hb2NBkjvshsJa6s2bSLSGOxjuLa6WWZ4/+ZQA8+3Ue1Vl9xhqGnwtaXtsgmJIVowcOPWlXQ9S1g2aNBqUcSrt4LoAABtgHtVbresast0fmYvFdchSJucL/AKhUi/4E1/SuurmWa4lZk5ed+Y+tBX8mZizORmPGMn8fzqC5vJJHz4YRvds0LdXGFy2CwXGaYkLk9AV9L+6DnbANQW/WoZXLuSakhptaEsJb7JPpUlpcPCQyOVdTlG9KidsjH415bypQ0Q1LhPW49VeOzvGVJmUCOfA5ge2T6ZpjkttXEjBdOhlGTiQYHN747ZrIOHrkxTLKGOI3AODg8p2P6/nWsx61iNRktgDfHWs0oUzRGVoouKLnxjIQ3UBM9t+tZ3fZjlK5ydhmrvVNZt5ZZvmpXQLExh5f3pP3Qdjt+H1pbS5t7m9t1uZTDbtIomkQcxRM+YgdyBk0+MaFSdkSOytt0qaJ1we1C3jQx3dwlpK0tusjCGR1wXQHykjtkY2qfUGs4Zo10+4eeIwxs7OCCJCvnXGBsDt3+tE0CiKZsnB3HvUUbPBKJIzuPzr6ZAwzXjxB0qghx0e4t7q2/wCK6E9QT0r5eQIj4S9ypGOXJ/L8qVILoxNlTymijfFty2SKX0aehndUEyYQEluZu5qtuHLk+lepLwHvULTA0cUwG0Q4OamjOAa8gg1xYKMZpliyUN+dc7EioRIO9fTIKogbprFJdzgNsfpTSuqSIoXPQY9aToZ1VhmrVbteUb9qFqwk6HX4Bxx3nHN4t1CkqjTZCFkUMM+JF606/Gjhay1vhOTVdHhhF1pEjmQRIF5owcSKem64Db9gcdaV/gTb/L8fXYxjOmS//bFV5wzxYumfFviLh+/YfIaneER8/wBlZ+UAD/uGF+oWiTtFNUwv4KcK2ejcMQ6nq8MJvNZkXwFmUEiPBKAZ7kBn27Y9Kh12ztV/9QPDkC20IhbTnLRiMcpPJcdR+FdqXFSan8aNB0SydV07SXlRuUgK03guD/pHl9jzUJx7rNtovxw4f1O45nt4rFUkMQ5ioczITgdcc2dvSrKFL4+QxW/HSJBFHEnyMZ5UUKM8z+lNvC1pbN8AL+dreEzC2u8SFBzfabvUfxU4c0vi7WYNW03ibTIXECxSJcMeXAJPMGUH16e3Wi9auNL4P+EX/ty11ODUr28ieOPwWHm52JdsDOFUE9epAHeoWWHwXj02H4aR3uow2wjilmaSaWNTyqG3JJ7Ckf4vcA3EPHFm2iWw8HXJAqIq4WOfOGzgbAg82f8A5dhTPwaRF8BdXjdgr/L3o5Sd+jVZ/DLjWy1Dgpp9fZTd8PJzSSSDmfkCMqyLnfmKlk9Sc/xVCUOPD+gaLpGnwaLa29vK1lAgdmiUsc58zbdWIY1lvwGtbe44g4rE9vFIqyJyh0Bx55OmaYPgrrk+vS8TarqDKk11eo3IW+wvJhVHsBgfdVH8AnRNf4rLsq5ePGT188lQqj38c+GLS/0K24o0SKP+6/2Vz4KgBoy2MkDurZB+p9KaPhZwnZcN8MWUOqW8LapqRM8iyoGYbZC7jblXGfcn1pc+FXFEcnEmvcJapyy29xeXEtmJBlT52549+uR5gPZvWidB4tXiX41SrDMDp2n2U0Fuc+VjzLzuPqR+CioQUeM+IBwh8Z767itYpbLlhS4tfDXlkjMSZwOgYdQfX2Jpi+IHw8t+NX0niLg5oRHfciXHIAq+GekuNt1GzDrsO4NIfxnAl+JmrlSCOWDcf9FK0r/05yytw1qcLyM0cV55FJyFygJx6VVl06so/inrOk8H6BBwVw3DAbsQhLu4KKXjQjfJx9t85PoD7jGMiRgKuJYJ9Q1K6ubp3llmmdndjksSTvRo0MY6UqWaKdDFik0MNnfX+hXtxdaTKIria3e2aUAEoGZSeX0byDf3PfFUXyDmUTIXM3Nz+JzHm5s55s9c53zTlLp5mUF1Ksex/SvcWkZwCCOxFYvnaRs+FCd+yjcM7SqJHYlnZtye5JP1qNPlbHMdvGmced+n037Dam3VtONjp13dEYSKMswwfN7VmrPJ4Tu7bk5Pr/XWtXGl3TZmzx6NJFt4hWMyI7tGqthR9odun3ke3WjLXWIbe0htpIJJpSAGidQpHv8A+a9/D7TLjW9fs4YIC1tA6yTM3QgHIB+prTuP+G7TUInf+w8ZOnTK/eOlOnNLQEINq0ZksdhfOWjjUTDcocEr9D3q0PC18jQxRmBvnsIiRXKHxV5s74P2Q0fU7ZX1qx0/hyy05RNHFhnjByHLDcdvwotmu47m1e3JMtsOWHyA8o5ix7b7s3X1rFPNHtrw2wwycd+i0eEJ7i5tYo47a4Nzz+CYZkcMVGWGQcDG340Pc8LywW0E91beHHNzeFzgZPLgHbqOop4gttQcQ7W8YiDrGkMUaKOcYbZQBuKNu9Jv9QVROHnZWLczNk5IUHfr+6v4UD5EV4wvh3sz1OG76CKHULZo4SqmWNluVSXlDFSyrnm6g9PSgr3g7ULLTTfzQRfLBElOJVZlVwChK5yM5HbvWtwaPepaxwNGhRUMY5oULKhJYgNjmxknvR8nDl3qVj8rPIz2/lxERkLyryjHptgbde+atcn+APErttGHvwtqME8kL24V4rtbNwHXaZs4Xr/lO/Sr/gyw4r0W+n1LQikXy8rQXCSTKElKbsjKSOYb9ffYitI1XR50kBmKFzOLlikKKWkGcMxA3O56+tVsdlqGnTTNaun9rKZWcwozcx6kEjao+VFPdlrDcdUKelcOTHTo9UkEa28pJUtIozvjYdeoNWv7MPZNvpVhaQXUditg5T5ePPJzRKSoJJOGIz1J70alu/IN4zt3FZJZFLaY3q16TtYAyAhVBOMDOKKh05Wb7Iz3B3otFOQMA+tWMMathxnpjeraB7FPrelG50PUYzGsjG2flXsTykj+VY3w7pWh61p0aXHjxalFN4TKh2ueYjlIJOFK+g6+m+36HL29pby3F0yRwwoWkkc4CqNyTWe6PpmmaNoy3GiL48F1dm6tnmjKsEJynXfYDY9+tbeN+MGZZrtNF1Z6XpvCOhGwVGWIpyy3MeBIx7mlGy4T0bXNe8W3uJo7eNOZxI+PKD652+tEx6u2vaoYL0mFYc865/l3NVWqOt5d22kfJ2rR3l2p5cSeIqqe7cmOnvjf76bbsJpUMFvaR6dz2NpJ8zbiRzFJI3P5SxIAPoM0dHCvhAlFyD0Hf+t6JawhtUVII1SNRgADAX2od5fl05h5yf3f9650km22bIvSSC9OjYHnKLkbnbrVzDKqfZjC+2KB028hnjjblCM3UHuRRspXm8tB1QErb2WVvdZK+UEdKLXVrWBjEWXm78vakfX9e/ZsZtLQhruUbn/CHr9fT8aX7e6uid3JJ7mmRyShtEjxVkVs0q7mgvH51Iz6Gg7nwg65xhfakqxvrhLvw5ZivP8AZP8AmpqtJ/mYeWUYkH50qU3J0/QpYPjWjpjAThRGT0+zU6BQoGIth/DQTL4bk4wa8eM1AopAtg/7RhiLeGpIJyT70De8e6XpqlQ5nm/w4yCfxrOeLNZna9lt4ZGEEPlwp2Zh1z9+33UrXF2ZyCxIkzuT3rt4eDFpSyMwZeVT6wQ08XcZX/EUvhMzQWS8vLao+VJ68zHbJ/IY2p20vXodU4MWeQr4tvGIZFXorKMD6ZGD99Y6VWWJ8SENtt60ZoeqzadNJBJvbXS+HMOwHZseoz+tasmKPTrFeCMU32tv0sNfvMzc8KeE69JVYgk0dwLxZOvFsC6rfSS2JR4VeeTAjzuGPbqoG/r7UXxvp2kWOkW/94xMyYVV3aRj1OP4R61nzyIq8sCcp/jJ3NIhBSi7HTm1LR+kNQnjCkofMegHT60q3FxNE2efmJNZxofFF9pgSNZC1uBjwZMlVHoPT7qdoOIrLU1WSLmibHnj5S2PpjrWLLxZx36jXhzxevsvdDu/F8aJHPlbnA/X+VWWtcQHT7JUiCteSDC/5B/ER+lL2m3cMDNcwM0jdFXBUnbHegWs7+6uJbm5RmkbcnGw9AMdsVnUEns032R5txzOzy8zMxJZmO5PrVjDIOUAZB679RUEFncliWQhcdDt+tfJILmMkhDg++cVUqbGqVIsceKgDDft61dWLM1src3nGxPvSrHdyA5xgqe1W2nagsSMzPEebsebb8qXLG2A5jRbyrOPDlx4gHX1qfwE/gFLMupxmRTHcRxsNyT/APu1exrxwP77F/qX/ajitbRnlG3oxCa4YF3Y8zNnrUC80pDOc/cK+XB5oix6k19iO1ei7HI6nspjcV8GOjHYjGalByPavhA3qWXRNrN5Lq16bmVRsiRRr2VVGPzOT99AmALuw8x7VLJcII1VB5gd6+A4XJAqUl4XbI+QD7t6u+DpRFxDZo+DHKxiYHvzDb88VRvL5Rtgk+tF6fN4F1bXHeGVJPrysD/Kl5Pyi0HF9ZJm0QaXBz5eMKM9FFTzRRJ5UG/vRNtMlwvMjZBwQR0oO+YczfpXmHKTdM7aaZFJGHAwpyDndqqdZ1Wws762srmCRnumA8i7ICcAn139KtopdsYH1zWUapcNdavdTmQyB5W5Wz+7k4x7YxWnjY+7/L6F5snRaNNj0G1Em4cD0U0JrUVrploJppH8EuqYCg9fqRR3Cl5PdaFbS3PKZCpXmB+0AcA/XakXj++GoauttFzGO0BQ77Fz1x+Q+403FGUp9W/BWSdRtDU+kpOFeK8DKRseXIP514/Ysg2+Zi/0ml74fw3CXFwoZhbFCSuPKXBH54NOvIfWrnKUJdbLhUo2zEpCzrhQTjJOOw7muU1baCqPbXhYjz4jGfTBz+tUXiAbOMkehrrqVto5dUgoTfTavjSnkJHXt9aFLjtXpZe1XZRyjB33xX1pT614Z81GTUsh7LE49KIgkx9xqXTLUTxTsy58hVNv3uuf0/Gg4zVJ7os2Tgu++Z4fgkz50BjbHXy9PyxV3cxrIhcPuR0rKuCNfl0vUEtpRm1uXC7n7DHYEfz/APFadKeXcZ27ZrjcrD0yN/TOlx8vaKKzVYVn064ilmkhUISWQ9h2PqPakb5HAywIIHT1rQxhiwYZB2IPeqO+sMyNEicoJARvQf0TUwz66GzSk7D+DZXGkCJ4uRInZUYNnnyck+3Wh+JtGjuWW6hgjj5cmZ12L56fX61a2vkhRFbIUY3x0AwP0r3dXEc8JifdSpBqdmpWgXFPQvcJ2zW9zcMrYUqMrjr6f1700c4qtso44JXCHaTBUewFHeJ7j8ak32dleaMg0o/3KX/q/wAhVHXV1dVes5bOrq6uoijq6urqsgxaF/yqfU/rVZcgC/lAAA5ztXV1Kh/oxkv1R9tGYTZDEHPUH3rZFYmNSSSSozv7CurqTzfIjuL6yNTtnvvUd0xC4ycco/nX2urnm0HiJ5s5NQysw5sMeh7+1fK6mIsELt4ieY/jV8pPKN+1dXVchR//2Q==" + }, + { + "name": "Jack Reacher: Never Go Back", + "extensions": [ + "2016" + ], + "image": "data:image/jpeg;base64,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" + }, + { + "name": "Mission: Impossible – Rogue Nation", + "extensions": [ + "2015" + ], + "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5OjcBCgoKDQwNGg8PGjclHyU3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3N//AABEIAKIAegMBEQACEQEDEQH/xAAcAAABBAMBAAAAAAAAAAAAAAAAAQQFBgIDBwj/xABDEAACAQMDAgMGAwUEBwkAAAABAgMABBEFEiEGMRNBUQcUImFxgTKRoRVCscHRUmKC8CMkM0Ny4fEWF1VWkpSVotL/xAAbAQACAwEBAQAAAAAAAAAAAAAAAQIDBAUGB//EADgRAAEDAwICCAQGAgEFAAAAAAEAAgMEESESMUFRBRMiYXGBofAyscHRFCNSkeHxBkKSFSRTVKL/2gAMAwEAAhEDEQA/AFs5CQDk5rjr3zwp6zkyo9amCsUjVne38NpDLLNJ4ccabpHA/Avb8yeAPMn0BqYyqCDgDc+/7VH0WyuetepGu7qMiziZd0eSQEB4iByDz69+Se5oA1FaZXtpYdIOT8+a6Xr2pXmi9HpPp+mO94qosNps3Fp2wMkKT8K8nGfIdsCtY2AXnXgmRxBv9vTfiqnoUWtdObLaSQ3vV3ULiSQzNuW0hXOXb6ZOAPTA7YKvxUtLfhBwMk/b5D7J/wBexzwXVmusC/vtHsYPeLj3aNTNLyQXZVIAHlkdhntkVVJGXvAOy30VYylpXyRj8w4HIfzxt9ArD011r071CI4NLu0ilChUtJV8N1AHAVexwPTNXLllrtzlWdJCGGTxmpAqtzcJ7D/sx6VYFmduqb171Suk2be7sDcMWjth/fHDSH5L2Hq30rNPNoGF2uiejjUydr4Rk+HAefy8VxVmZmLOSzE5JJySa5i94AALBFCaKEklCEtCFY7GcBQSasXKe1TEF0VAEamSVztjQEAsfqeB2OT2ABJ4FSbk2CyygNBJ2VQ6k1RtTuBYWkviwIxkklAOJXA5bGMhFGQox2ye7Gpk8AlDHp/MfueHIcvE8f4XWel9Gt+m9FtlZvDkZC9wx7biuT3x2wB2zWlrdIC4NRO6okceHBSlxrlja2IvZZwkByAXBQkjyw2MdvP5eoqZcLXVAge52kDKqWodVaTalOp5niW5kt2gttPK7p7pQSyk8ZjXILBu2GGecZTRftq2QGP/ALa1yc3Hv9/NR2g9f6KuoJr2v65Abi5Xb7tbh2EK84UgoMBcn1ySSM8YYY4P1lQknidAKePHjz8e+3d5LnCiyu/aJG3TLkWsupxm0+DZjLg8DyUHOPkBTPJNp7Gonbz9/LyXpxoysm3I4781K2Vj1XbdM9e1uDS7CRnk2bE3SsPxIvYY/vMeF+eT2U0PkDWqylpHzyBrRvt75Dc/yFwnWtUm1jUHvJwEyAkcSn4YkH4VHyH9TXJe8vdcr6FS0zKaIRt8zzPEphUFpRTQihCKSFlTST6CYqQBkknAAGSfp6/SrVz3DiUa5qT2cclhG/8ArbqUunU58JeMxKR/9j/h7AlrPhFlgaOud1h+Ebff7JhpuoSaFKJrdo2uWxu+Hd4a98A9iTx9MUA2U5YhMLHZSl717rV9GYbiVDCwUMvhrnjzB8iee2O9SMjiqGdHwsNwMqcu47a06bttT6ogknnuSBpulJId8zcfG/ng8ZA8iPMqBa1mLuXPlqC2Usg8z9B7+t6ld2d3qGoz2UJ951i751KdWxHboMDwQRwFXgNjjIVR6GZJWdjG5ccg47z4fX1VK1S0jt9WurWKQukMjR79u3JXg8fUf9KvBs1c1zA+YgYCuvsdQQ+0HSAiqxYyA5Gf903Iz2+1VteS5a5oGRQGy9D6ldJaMzthpGO2OPOPEbHA+Q4JJ8gCfKpONiskTC8WG3y9/NcX6y6gfWLv3eKXxLWFy28DAmk7F8eSgcKPID1JrmzS6zYbL3PRdAKZmtw7R9By8eJ7+4BVyqV1UUIRQhFCSKEJaEJ5czvocQ2tt1OVeMfitUI7/KQj7qPmfh0js+K4j3CoNh8A9T9h6nu3To6z0SWe4veorpUtLNVYWwPx3DHOAB3I45x6jsM1KMN3cqK2SYAMhGTx5KK1G5XVdXnltbWKDxpMR20CgBB2VQB54x9TUXZN7K6ECOPSXXI3Uj0xFp1tHPr+uywnTrSTbb2ysrSX0y8hQOfgz3OMH860MhA+Ldcaq6SkkOmHDefP3w4rG61jUNa6jF1JcIdXvAyjHC6bCM5wSfhYLuP90ZYnJ4kbnKoZpaRGMAZPvmVX9c1mG3m9x0AtHaRuHMvZp3HZz8h+6D27nkmptYC3KzzVT2y3bg8O5QUUZXtUybqqKMtV79ldnLc9eaQscbN4TmV8cbVVTyf0/OqmfEt1UdMBBXQPaZ1ARf3Wm20weVh4czp2ij4PhA+rEZY/8K+RrPUy9otC6vQVBdjZnjG47zz8uHmVzusS9OimhLQkkoQihCKSaWhJLpGg6pr/AL3dW6gxQK0lxdTvtReCTlj3Na2sLlwJqqKns07nYBQN347RhLbhmOCx/dFOPQDdyjWde5gbBuePJO9Nv4Om7eTwEtrq9mjKyPIN6wqwIIGD+Mg/4R8ydujtONyFx/yomGNrsD4jzPvgoqGLUtauljtYHnmjj+CNQAsMY8z5KKs7LRkrJ+Y89hueA5d57+QUxpfSWtSW95JLBcSBgVlktSJwpJ/fKFjjIyQMnioOkBPZyAtENLojImOlx2Hvv98FVpoJLWZ1lUkqcbxyp+9XAhwwueYpIXHrGkLNWBwKhZXh4IVz9nutTaTeaje2xAuRYNHE5/dLSRjPzwCTz6CqZHGMEhdOkhbWyMY/a+fILJ2Z2Z3YszHJYnJJ9TXOXsgABYJKSaKEIoSRTQihCKSaWmksz1Lql5pVn0rp0aLFyXSEEGY5LZc55+nHYfLG4XLM4HzXk5Gxx1Vx2nnns0e/YTCWwhim8LU7t4LQpJuuIUBYbVPAQnuTgYz596hHbUtNWX/hyCbYydvuqrLKkbHws7FJEQYYOP7RHrW7TdeYM2kCw22H1Perh7O71tOttSuG8KTxDCxjfJLBX/e4wEJYDJIwdtUzHYDgt3R8e7nn4v59V3vTYI52vdKgufd5FEclz7oADlieNxHBO0g9zjtipsB2WSdwsHkX5X+3y277rjHtt/ZdprtvHpMb+I0O6adJQUck9wRyW75JPPFDWjUbKx88gp2teM8MkED375c3g+M4H4v0qbsLNCNZsN1c9DiNv08WeLD3NyCrnzVF7fm4/KsNS4HAXq+hIHNcXu5fM/wt1ZF6JFCEUIRSQimkikhFCayppKG03U7qy1SWKyXf4qHeAM4wpy32Gc/LNb9F47leSdOG1pY0Xvv5e7LLXxM8EviMskseCQr7gqj057DjiowfGrelDamPNVQkkkmt68lckqY0LqXUdD8VLNo2gnXZPBKu5Jk81YeY5NQLATdam1LhH1ZAI7+HgpNOs73T7S7h0F5LGO+QpcRF95TjGUc/EOCRzkj1J5qLY7O7lOap6yIXy76cFVzK7KFdiwAwATnFWWCy63EWJQjEE7c5PaghDXEbLoiXKS6HpttEpHu4fxD5bztJ/QCuXMF7voxwBcDvgft/a0VQuwlpISU0IpIRTQihJFJNLQkoLpPqCbpjWTqTWdveblMbwSnupPOCOx4/WuxZpsOS+capW6nOOXcOP1/lPOruqdH1OwWz0HpuLR/EYPdSCXxGkxyEBxwueceZC8cVMALPI95w4lU/B9KkqrJQOaEwFtVMioEq9rLhK0HbFAch0Ftk702OGGdZbhTIo5ABxz5faq5HEiwWyjhYx4e9dT0iDpB0tdJvNcljle2SZ7yNjtFwwAKcjsAo7jGCORVZbGQLrbHJWMc4sAPdfPO48ky6j6fuNBuUSSRbi3lXdDdR/gkB7EY4+3/WsUsZYbL0vR9c2rjvs4bjioeqlvRQhFCEU0IoQihJLQhU+4iyvwnb6nNdRrs5XgqiHs9k2TXwhkZYknGOKuusHVi+Tcmy3Sx44OPlVbXXytUsWnBWkxkd6ndZjERus4/h4Xn50irI8bLPaCctlvkaV1PSCe1lXTpz2f6prtrHc74rO1ftJLksw/uqPL6kVVqWt7QBp4p5r/s4u7OVP2ZdeOQoysx2MSPNT2+x7etREgBs5T6hzgHxn7pelb64mmn6c1rejpHsjV/90QxY59QS+e/ln5iL2jT3LTBO/rdd7PHrbn5YWm/tJbK5eGVSCpxzWJzdJsvUQTNmYHBN6SuRSQihJFNNFCSWhCs5Hs7siI4Ld9QuSfggj8SQknyycD071vuN14vq5idI9+PLzV20P2a6E5i1DVNMt/EMY2WaBhHF/wAWeXbnucD5edaWMxcrlTVLrlrf3XMvbZZaJoGq22m6JZx28skXjzlGJxn4VHPYYUn/ABfSnoF0vxL+rIcbk+7rm0AZeD2bkUOSg1DHNPbO0nvbmK3tYmkllcIiKMkk1WStoad1fdC9m0vvcB1y6WKN5NjRQfEc4+EFuw3HjIzzj1qBdfAVgZ1faIXXraOMQiAIEWNQqBVwAPLA+VRHJJ5IOocU1v0VsGTAcdieef6GoOCvhNtlWL/Q7OXVodXmhZbuNSg5wCCCOR59yPvUdRAstLY2OeHcQm+v2a3dtgY8RBhT51W8XC30smiS/NUp0KMVYYI71Qu4CCLhY0k0U0IoSRQhLQhTXs8660jpwLbS6GGdpCz3yEGXB8sH+vNdJjtAu5eJqITVP0RGw5cPE8/muraR17pGqxSywJdRKjBAZ4godj5AgnnzPyqYqGEXWSXoqeNwabG/Irlntn0S71S6h162jaQJD4dwFHKgMcHHp3H5UMkzlKal7IDOH9rlyRlVUnnipF10o4i0AldC9lWq6NYXd7+1riO2lkESwyyBuBk7hkcAZK5J7d+wNV6Qd1ofK7GgLrGrWBSF5VcyWrDImhO74fP/ABKQGHzSouYWm/BOGZso0j4uXvnt5rAXLSIkshXxUYrKqdtw7/Y5yPkag48VYxmNKwupEmhLoWyRSdkK2IFrrFRBv2iZo5gGUDuR3+dVh1sFbeoDhqaoq+u1YsueM5FQcVrijIVX1Jg8u4AZ8zVbl1IRYWTKoK1FCaKEkUIS00KV03pOwgMbSGSaYH4yxwBx5AfP51odIXYXn44GQnVuVYWjit4zDHhUikVkC8Bc8cClwUh2nAkKVubgPFLGGxuVgq/kwqZKzsjsQfD7Kuy6HpWqbRdWyeJu2NJF8DfI5HfgjvSDiCpPiaWm4Ve1boBY7eS40293BVDeHOuOOc/EPTHpVwl5rE+k5d6aaT7R+ptH0xtMhvUmtjEY4xOm8xAjA2nvx5A5HHarwTZc58TNV+K3dK9Za4muLPLDLrAdBEbaVm2ZJAB44B4wCR51CzRurrvkwy48F0Kzv2K7ZhGkjjJSMnarY+JVzzjPb6Vl1C5sut1LtAJ34rRqD7+aTlfCLKvTPgspPHlVS6LRxUTcHk1ErWzZN6SmikmimkikmlppK9awsYC39rzFMcvj91sfL/Oa0PHELg0rify3bj5KJmuxvZs8kDvULrWIrhbRe8qWOeB/Si6XVJvHd+G7DPB7fI/5x+VK6kY7lZ6kRqdnNaNK0aTLg7T68j9R+tTa8g3ColpmvYWuVUh6ShD/AOmvCoPkkf8Azq38QeSxDohoyCrVpUVpplgbe0XYP33PLNnzJ9QRVTnlxuVrjphGNLdluluXLRvgBs7iR61C6vbGACFtnuhIuRx8qkTdQbHYqHumySagVtYo6U5qK0NWqkpJKSaKaSKSaWmkrpZZisprO5IaMsQPkD/Ty+1aRtYrhPy8Pbuq1db4J3ic5Knv6jyNUHBXWjs5oIWtJ1BXxC2wH4tvfGecfOldSLDw3U9rGiwWfVtpotvczss0kCNLIFyDIRyAPQH+NXPjAkDAeS5tNWPkonVLmjGrA7lt6n0aLRNQsraC5lljuF7yABlIcr5U5YwxwAO6jQVbqqJ73NALeXhdSHUfSqaLp2oXnvMrrbXSQwhgPjVlUkn6FiPtUpINDSb7LNRdJmplZHpA1Ak91ifoFFdLWMGrXl0l5O8MEFpJcOyYBIUrxzwBznPyquJgeTfkttfM+njaYxclwGe+/JOdP0yzvep59MS8aezjSV1uISpLhRkc8ipNY10hbfCqmqZYqRsxbZxtg3xf1Wcuiwp1onT/ALxKYHkRfFwN4DRhvpnmjqx1vV3UW1jjQGrsLgHHDBsmmuaJDp+s6XYRzyvHewwSMzYypkcqQOPLFJ8Ya4N52VtLWOmgklIF2lw/YXWNp03Bc9Z3eiNPN4FuZfiUAyOEGQO2Mn6UCIGUsTk6QeygbUgC5t4ZWmPQbCfraPRLW9aayeRVFwhUtym48jjIOR9qQjaZdAOFM1szejzUvbZwG2edvHvUNqsEdrqVzbwrMscUhVRNjfx64qpws4gLdTvMkTXutcjhsmtRVyKEJaaSsDXfmD9fpVt1zhEmGokTASD8S8H5iouytEPZwo0uCpG4fnUbFaNTeatOs65p9z13aatBPvs4pbZmfaQcJt3cHnyNXveDMHDbC49NTSM6OdA74iHcRxvZbettd03U9W06WwufGitwfEfYyjmQt2IB7U53hzgQo9F00sEMjZBYnbI5W4KU6w6u0vVtEvLO1ut8jyo0Y8NhkCWQnuP7JT86smla9pA95WPo3o6anqGSPFhY3yP0j63UF0Vqdhp9/e/tWTw7e5sZLfcULjLFeCBzjANUQua0nVyXU6Up5po2dSLlrgeW1+adaXrmlaf1peahA3u2nlJlt9kZGMrhcADI5qTHtbKXDZUVNLPLQMifl+L3PfnKyn6h0z/vFj1mOUtYiWN2cIQf9mFY47980zIOv18FFlJL/wBLNMfjseI53HosOpNb0+86l0i6tJzJbWcNvHJJ4bLyjksQCM9j6UpJGl7SOFlOhpJo6SVjxZzi4gX5iwSW2saX/wBvL3U7iQ+5SvKYptjZUkfC2ByOfvQHs64uOyH0lR/05kLR2ha4x5jkpBLk3ntEi6gtLS9m0syqwuI7SRg22MISMDP4gane8+sDHgsxZ1XRhpXuAkscahxNxx5Kvaxo+qzardSx2OoXCPKWWU2so3A/UZ+X2ql8by4mxXTpqqnbC1pe0EDa4+hTL9h6v/4Vf/8Atn/pUOrfyKv/ABlN/wCRv7hMnVkdkdSrqcMrDBB9DUVoBBFwkoQnJlNO6q0Jjq98bTT5pAcNt2r9TxVsLdbwFi6Sn/DUr5BvsPE+7qkWUBuruKFf32wfkPOuq92hpcvBUsBqJ2xDif7TvXoba3vBDaptCqN3xE8n6/LFVU7nuZqcVu6Zhp4KnqoG2sM5Jz59y3aPZW72Vzd3ke6NB8I3Ecjv2+1QmlcHtYw5K0dF0MD6aWpqG3a3bcbewolFLuqqMsxwB61qJtkrhNaXENbuVa729l0yO3toYTOyxgMcHy4rmRxNlJcTZe4q66Xo9scETNZAzv4JprMiz6TDcXUOy4c4jAJ+EfT6D9atgGmUtacLD0tIJqBk87LSE43wP6HqFAQxtNMkafidgo+9bSQBcry8UbpXiNu5NlfkXairycDGT51wybm6+psbpaG8ltghkuJ44IVLSyuERfVicCgC5sEPcGNLnbDK9F2lq2i6BFa2EBuXtYAkcQYIZWA9TwMnzrtAaGWHBfMpJBU1BfIbajk72/pRf7b6l/8AKEn/AMjDVfWSfo9Qtf4Si/8AZH/FyZaz1brek6dLd3nTEsESjHim8jcKTwMhecZIqL5nsbct9VfTdGUtRKI2TgnlpI+a4kzM7F3YszHLEnkmuWveAACwRQhLmhCrfVVzmSK2Xso3t9T2/wA/OuhRswXLyH+S1N3sgHDJ89vfetfTMKo097LwkS4B/U/p/GnVuJAYOKr/AMeha0yVT9mj+/T5qIuJWubh5W/E7E4rU1oa0ALgTSunldI7cm6m9Y/1HR7axH435f7cn9T+lZIPzJXSL0nSv/Z9HxUg3OT8z6/JNOnLbx9QEhHwxDd9/L+v2qyqfpjtzWHoGm66rDzs3Pnw+/krDFq1lLKsUU+52OAAjc/pWE08gFyF6uPpejkeI2PuTjY/ZQPU1z418IQfhhGPue/8vyrbSM0svzXl/wDIanrarqxszHmcn6fsjpm38W/MpHwwrn7ngfzoq36WW5p/49TdbVdYdmj1OB9U+uNIvp7iSX3xV3MTgFuPlVLaiNrQNK6U/Q1bNK6TrrXPer17NOn9Su9RibTpYBNYATNLcAshbPAx355/KoMDpZdTcWWiqfFQUAgnJdqwbb95yuxgdX+b6F/6Jv61t/O7vVeXv0dyf/8AP2WcA6p8eP3htG8HcPE8NZd23POMnGcUx1t82UX/AIDSdOu/DZVn2yal4GkWmnI2Gupd7gf2E/5kflVFY+zQ3mur/jdPqndMf9RbzP8AF1yGuavaJaEkU0JlcaTZXEzSzRFnbud5q5tRI0WBXNn6Io55DJI25PefusxY20dm9skZEJySoY8/f7UuteXhxOVaKCnjpzA1vZPC5+e6hYBYq0UsdgwYIsnMrcHftx/OtjutyC7u27rrzcIogWvZBmwd8Rwdem31W67eC8kMk1izvkIh8UgEZb0HHb9aiwOYLB3p4K+qkhqn65ILnYdojF3chjbv3SxXEFnBKtvZMokxuBkOcbN3fHzxScxz3DU7bu77KUdRDSxOEMNtW/aN/g1b2Jxe3jyWdkllBeZitHV1ZlDBix42jOP8X6UpDI5mXe8/ZTo2UcNReOIggkXuT+kbd+rysU1nFiXlkksXLbGkJ8VviO/bj+dWN63ADu7buuscwoi573wm9i74jk69NvPdOba5isWlitrMqC+AfEJ3HKjnjgfFVb4zIAXO9Ftp6uOjL44YbZ5nJuBywM9/Fbxq7EBvdW27NzYbscMcdv7v61D8MP1e8fdaB0y4i/VYtc57nHl3eqltE651np+CcaYog8XLyDYr7toGOSvb4v41NjHMNmO37vFZKuoiqW66iG5aD/seGnu439FKn2s9VqkhNwuUjLEeDHyQ+3H4fvVmqW4Gr07rrKYKINceoy0E/EeDtNtvP6KSX2i9VbRvv4w2OQIEIB/KsxqpeBXYb0FQkDUzPiVB6vq1/rN171qdy0823aCQAFHoAOBVL3uebuK6VNSw0zNETbBMagtCWmkihCKEJG5U49KY3Sd8JVfjsbtU5STJVfP5xk/wat7pWE7+8/wvKR0NU1uWnYfOM/R3qs2hvD4oaNirON6jHPLcgeXG3kUg5mM+8fypOhqzru02JyMc3ZA4Y05FisJba8MWWV2YjBO7OT4WP40B8d/fNQkpqssuQSfHj1duf6t06t4LiG/MwQkHeCC2B3HP5Z/Kq3PY6PTfkt0FPPFVdbb9QycbjP7X/ZNZbK6dTtR/wtjnvzIf5rVrZGA78vosMlFUvGAdj85Pu1ODaS+HPKVfxPHBQbv3MqSQPtVfWC4HC3rlajRyaJJLHVqFs/63be37LRHBfIse1CGWM4OR6NkH1528Gpl8Zvc+8LMyCsaG6W5De7k7B55tg3Qba7aFwI3GVcIM9s7MD5cg0a2ahnl9UGlqnRuAadnW89PfjN7JXtbvw5VWKT4oWVBnt/pMgd/SgSMuDfj9FJ1JVBjmhhy0gd3buOPJTqABFCrtGBhcYwPSsJ3yvURgBg0iw5JaSkikhLQhFNCKEIoQihCgrpBvuGZVAzKd23luRwT9Ofzrcw4HkvL1LBrkJA/3zbJ2uCfDP7rXM1uJLhwkLwnxfDHZW4j4XHn37UwHkAZvj6qqV1OHyOAaW9u3I4j2tx3tZLOysGTcuVabcp52gyLjIoaCM+HyKlO9hBbcXBkv3Xe3dPbrJhszamNiJCy+EMKxCscD64xVMe7tXLj4hdGqzHAYCDZxI04Bs1xsN99k1tCHa3LIWQQrC2R8Iypb/wDNWyYBtve/rZYaUhxjLm3GkMPLLS752SRrEhsjIEWLw4C+4Db2k5NBLjqtvn6JMbE0w6wNOmMm+2z9/NYQq6tC0YzGzwqwHl8WQf5fepOIsQd8/JQia4OY5nwkxg/8rg/TzVgrnL1qKaEUJIoQloQg0ISChCWhCShCXJoQjJoTujJ9aEIoSRmhCAT60J3RmkhJQkloQihCSmhZUIX/2Q==" + } + ] +} diff --git a/spec/fixtures/u.s._presidents.json b/spec/fixtures/u.s._presidents.json new file mode 100644 index 00000000..1c075c5c --- /dev/null +++ b/spec/fixtures/u.s._presidents.json @@ -0,0 +1,254 @@ +{ + "artworks": [ + { + "name": "Donald Trump (2025-)", + "extensions": [ + "Donald Trump", + "2025-" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Donald+Trump&stick=H4sIAAAAAAAAAONgFmJQ4tTP1TdILiyxNNASCEpNTs0rCShKLc5MATKKHzG6cAu8_HFPWMp60pqT1xhNuTCUCElycfjkJyeWZObnCfFKcXOBzbNMNi83sGLSYKpi4mDgWcTK45Kfl5iTohBSVJpbMIGNEQBj4FEPegAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEAY", + "image": "data:image/png;base64,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" + }, + { + "name": "Joe Biden (2021-2025)", + "extensions": [ + "Joe Biden", + "2021-2025" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Joe+Biden&stick=H4sIAAAAAAAAAONgFmJQ4tTP1TcwNEqvMNISCEpNTs0rCShKLc5MATKKHzG6cAu8_HFPWMp60pqT1xhNuTCUCElycfjkJyeWZObnCfFKcXOBzbNMNi83sGLSYKpi4mDgWcTK6ZWfquAE0jGBjREA685CQ3cAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEAs", + "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QF0RXhpZgAASUkqAAgAAAAEAA4BAgAKAQAAPgAAAJiCAgAUAAAASAEAABoBBQABAAAAXAEAABsBBQABAAAAZAEAAAAAAABXQVNISU5HVE9OLCBEQyAtIEpBTlVBUlkgMTA6ICBJbiB0aGlzIGhhbmRvdXQgZnJvbSB0aGUgV2hpdGUgSG91c2UsIFUuUy4gVmljZSBQcmVzaWRlbnQgSm9lIEJpZGVuIHBvc2VzIGZvciBhbiBvZmZpY2lhbCBwb3J0cmFpdCBpbiBoaXMgV2VzdCBXaW5nIE9mZmljZSBhdCB0aGUgV2hpdGUgSG91c2UgSmFudWFyeSAxMCwgMjAxMyBpbiBXYXNoaWd0b24sIERDLiAoUGhvdG8gYnkgRGF2aWQgTGllbmVtYW5uL1RoZSBXaGl0ZSBIb3VzZSB2aWEgR2V0dHkgSW1hZ2VzKTMwMTMgVGhlIFdoaXRlIEhvdXNlLAEAAAEAAAAsAQAAAQAAAP/tAWpQaG90b3Nob3AgMy4wADhCSU0EBAAAAAABTRwCUAAPVGhlIFdoaXRlIEhvdXNlHAJ4AQpXQVNISU5HVE9OLCBEQyAtIEpBTlVBUlkgMTA6ICBJbiB0aGlzIGhhbmRvdXQgZnJvbSB0aGUgV2hpdGUgSG91c2UsIFUuUy4gVmljZSBQcmVzaWRlbnQgSm9lIEJpZGVuIHBvc2VzIGZvciBhbiBvZmZpY2lhbCBwb3J0cmFpdCBpbiBoaXMgV2VzdCBXaW5nIE9mZmljZSBhdCB0aGUgV2hpdGUgSG91c2UgSmFudWFyeSAxMCwgMjAxMyBpbiBXYXNoaWd0b24sIERDLiAoUGhvdG8gYnkgRGF2aWQgTGllbmVtYW5uL1RoZSBXaGl0ZSBIb3VzZSB2aWEgR2V0dHkgSW1hZ2VzKRwCdAAUMzAxMyBUaGUgV2hpdGUgSG91c2UcAm4ADEdldHR5IEltYWdlcwD/4QaDaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj4KCTxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CgkJPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczpJcHRjNHhtcENvcmU9Imh0dHA6Ly9pcHRjLm9yZy9zdGQvSXB0YzR4bXBDb3JlLzEuMC94bWxucy8iICAgeG1sbnM6R2V0dHlJbWFnZXNHSUZUPSJodHRwOi8veG1wLmdldHR5aW1hZ2VzLmNvbS9naWZ0LzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGx1cz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi94bXAvMS4wLyIgIHhtbG5zOmlwdGNFeHQ9Imh0dHA6Ly9pcHRjLm9yZy9zdGQvSXB0YzR4bXBFeHQvMjAwOC0wMi0yOS8iIHhtbG5zOnhtcFJpZ2h0cz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3JpZ2h0cy8iIGRjOlJpZ2h0cz0iMzAxMyBUaGUgV2hpdGUgSG91c2UiIHBob3Rvc2hvcDpDcmVkaXQ9IkdldHR5IEltYWdlcyIgR2V0dHlJbWFnZXNHSUZUOkFzc2V0SUQ9IjQ2NTQ3MDM3NSIgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iaHR0cHM6Ly93d3cuZ2V0dHlpbWFnZXMuY29tL2V1bGE/dXRtX21lZGl1bT1vcmdhbmljJmFtcDt1dG1fc291cmNlPWdvb2dsZSZhbXA7dXRtX2NhbXBhaWduPWlwdGN1cmwiIHBsdXM6RGF0YU1pbmluZz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi92b2NhYi9ETUktUFJPSElCSVRFRC1FWENFUFRTRUFSQ0hFTkdJTkVJTkRFWElORyIgPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48cmRmOmxpPlRoZSBXaGl0ZSBIb3VzZTwvcmRmOmxpPjwvcmRmOlNlcT48L2RjOmNyZWF0b3I+PGRjOmRlc2NyaXB0aW9uPjxyZGY6QWx0PjxyZGY6bGkgeG1s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" + }, + { + "name": "Donald Trump (2017-2021)", + "extensions": [ + "Donald Trump", + "2017-2021" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Donald+Trump&stick=H4sIAAAAAAAAAONgFmJQ4tTP1TdILiyxNNASCEpNTs0rCShKLc5MATKKHzG6cAu8_HFPWMp60pqT1xhNuTCUCElycfjkJyeWZObnCfFKcXOBzbNMNi83sGLSYKpi4mDgWcTK45Kfl5iTohBSVJpbMIGNEQBj4FEPegAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEBA", + "image": "data:image/png;base64,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" + }, + { + "name": "Barack Obama (2009-2017)", + "extensions": [ + "Barack Obama", + "2009-2017" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Barack+Obama&stick=H4sIAAAAAAAAAONgFmJQ4tTP1Tcwys3KLdISCEpNTs0rCShKLc5MATKKHzG6cAu8_HFPWMp60pqT1xhNuTCUCElycfjkJyeWZObnCfFKcXOBzbNMNi83sGLSYKpi4mDgWcTK45RYlJicreCflJibOIGNEQC-CLqCegAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEBU", + "image": "data:image/jpeg;base64,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" + }, + { + "name": "George W. Bush (2001-2009)", + "extensions": [ + "George W. Bush", + "2001-2009" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=George+W.+Bush&stick=H4sIAAAAAAAAAONgFmJQ4tTP1TewTDKrKtISCEpNTs0rCShKLc5MATKKHzG6cAu8_HFPWMp60pqT1xhNuTCUCElycfjkJyeWZObnCfFKcXNBzEs2LzewYtJgqmLiYOBZxMrnnppflJ6qEK6n4FRanDGBjREAtUhAAXwAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEBo", + "image": "data:image/jpeg;base64,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" + }, + { + "name": "Bill Clinton (1993-2001)", + "extensions": [ + "Bill Clinton", + "1993-2001" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Bill+Clinton&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwNDXP1RIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK45SZk6PgnJOZV5KfN4GNEQD0JqSueQAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEB8", + "image": "data:image/jpeg;base64,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" + }, + { + "name": "George H. W. Bush (1989-1993)", + "extensions": [ + "George H. W.", + "Bush", + "1989-1993" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=George+H.+W.+Bush&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwNskp1hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq6J6aX5SequChpxCup-BUWpwxgY0RAIw17ZJ-AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsECQ", + "image": "data:image/jpeg;base64,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" + }, + { + "name": "Ronald Reagan (1981-1989)", + "extensions": [ + "Ronald Reagan", + "1981-1989" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Ronald+Reagan&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwSzbI0hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTKG5Sfl5iTohCUmpiemDeBjREAmvygUnoAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsECk", + "image": "data:image/jpeg;base64,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" + }, + { + "name": "Jimmy Carter (1977-1981)", + "extensions": [ + "Jimmy Carter", + "1977-1981" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Jimmy+Carter&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwMcpO1xIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK45WZm1up4JxYVJJaNIGNEQBvWcFOeQAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEC4", + "image": "data:image/jpeg;base64,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" + }, + { + "name": "Gerald Ford (1974-1977)", + "extensions": [ + "Gerald Ford", + "1974-1977" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Gerald+Ford&stick=H4sIAAAAAAAAAONgFmJQ4tTP1TdIjs9NidcSCEpNTs0rCShKLc5MATKKHzG6cAu8_HFPWMp60pqT1xhNuTCUCElycfjkJyeWZObnCfFKcXOBzbNMNi83sGLSYKpi4mDgWcTK7Z5alJiTouCWX5QygY0RAJ0DYiB5AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEDM", + "image": "data:image/jpeg;base64,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" + }, + { + "name": "Richard Nixon (1969-1974)", + "extensions": [ + "Richard Nixon", + "1969-1974" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Richard+Nixon&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwS7Y01xIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTKG5SZnJFYlKLgl1mRnzeBjREAFa0HLHoAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEDg", + "image": "data:image/jpeg;base64,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" + }, + { + "name": "Lyndon B. Johnson (1963-1969)", + "extensions": [ + "Lyndon B.", + "Johnson", + "1963-1969" + ], + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Lyndon+B.+Johnson&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TdIM0-r1BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq6FOZl5Kfp-Ckp-CVn5FXnJ83gY0RAJke2SZ-AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsED0", + "image": "data:image/jpeg;base64,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" + }, + { + "name": "John F. Kennedy (1961-1963)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=John+F.+Kennedy&stick=H4sIAAAAAAAAAONgFmJQ4tTP1TdIMc42NNESCEpNTs0rCShKLc5MATKKHzG6cAu8_HFPWMp60pqT1xhNuTCUCElycfjkJyeWZObnCfFKcXOBzbNMNi83sGLSYKpi4mDgWcTK75WfkafgpqfgnZqXl5pSOYGNEQAPJ6NvfQAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEEI" + }, + { + "name": "Dwight D. Eisenhower (1953-1961)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Dwight+D.+Eisenhower&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwsijK1hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq4lKemZ5RouCip-CaWZyal5Ffnlo0gY0RABhumTmBAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEEc" + }, + { + "name": "Harry S. Truman (1945-1953)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Harry+S.+Truman&stick=H4sIAAAAAAAAAONgFmJQ4tTP1TewTEo3ydESCEpNTs0rCShKLc5MATKKHzG6cAu8_HFPWMp60pqT1xhNuTCUCElycfjkJyeWZObnCfFKcXNBzEs2LzewYtJgqmLiYOBZxMrvkVhUVKkQrKcQUlSam5g3gY0RADM0a399AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEEw" + }, + { + "name": "Franklin D. Roosevelt (1933-1945)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Franklin+D.+Roosevelt&stick=H4sIAAAAAAAAAONgFmJQ4tDP1Tcwqqy00BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq6laUmJedk5mn4KKnEJSfX5xalppTMoGNEQBfJkDEggAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEFE" + }, + { + "name": "Herbert Hoover (1929-1933)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Herbert+Hoover&stick=H4sIAAAAAAAAAONgFmJQ4tDP1Tcwzk7J0RIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK55FalJRaVKLgkZ9fllo0gY0RAC1MXyJ7AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEFY" + }, + { + "name": "Calvin Coolidge (1923-1929)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Calvin+Coolidge&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwLEvK0RIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK75yYU5aZp-Ccn5-TmZKeOoGNEQC2HhDDfAAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEFs" + }, + { + "name": "Warren G. Harding (1921-1923)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Warren+G.+Harding&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TewMCwx0xIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQqGJ5YVJSap-Cup-CRWJSSmZc-gY0RAERJNiR-AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEGA" + }, + { + "name": "Woodrow Wilson (1913-1921)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Woodrow+Wilson&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TewMC401xIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTKF56fn1KUX64QnplTnJ83gY0RAFom-DJ7AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEGU" + }, + { + "name": "William Howard Taft (1909-1913)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=William+Howard+Taft&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TewMC4o0hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQqHJ6Zk5OZmKvgkV-eWJSiEJKYVjKBjREAkIvOv4AAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEGo" + }, + { + "name": "Theodore Roosevelt (1901-1909)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Theodore+Roosevelt&stick=H4sIAAAAAAAAAONgFmJQ4tDP1Tcwz6jM1hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQqFJKRmp-SX5SqEJSfX5xalppTMoGNEQDeChEkfwAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEG8" + }, + { + "name": "William McKinley (1897-1901)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=William+McKinley&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TewMC4w1xIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQqEJ6Zk5OZmKvgm-ydmZeTWjmBjREAaL9iuH0AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEHQ" + }, + { + "name": "Grover Cleveland (1893-1897)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Grover+Cleveland&stick=H4sIAAAAAAAAAONgFmJQ4tDP1Tcwtii30BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq4F6UX5ZapOCck1qWmpOYlzKBjREAtXW1_30AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEHk" + }, + { + "name": "Benjamin Harrison (1889-1893)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Benjamin+Harrison&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwTDIz1BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq6JSal5WYm5mn4JFYVJRZnJ83gY0RAHDqKFJ-AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BAgsEH4" + }, + { + "name": "Grover Cleveland (1885-1889)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Grover+Cleveland&stick=H4sIAAAAAAAAAONgFmJQ4tDP1Tcwtii30BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq4F6UX5ZapOCck1qWmpOYlzKBjREAtXW1_30AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEIMB" + }, + { + "name": "Chester A. Arthur (1881-1885)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Chester+A.+Arthur&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwLEsy0hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq6JyRWlySWqTgqKfgWFSSUVo0gY0RAKaZ-k1-AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEIgB" + }, + { + "name": "James A. Garfield (1881-1881)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=James+Garfield&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TdIMjIq1xIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK55WYm1qs4J5YlJaZmpMygY0RAL8Wxzt7AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEI0B" + }, + { + "name": "Rutherford B. Hayes (1877-1881)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Rutherford+B.+Hayes&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwSzcx0hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQqHFRakpFalJZflKLgpKfgkViZWjyBjREAiNweBIAAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEJIB" + }, + { + "name": "Ulysses S. Grant (1869-1877)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Ulysses+S.+Grant&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwLzHK1hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQqEJpTWVycWqwQrKfgXpSYVzKBjREAdLmfpH0AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEJcB" + }, + { + "name": "Andrew Johnson (1865-1869)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Andrew+Johnson&stick=H4sIAAAAAAAAAONgFmJQYtfP1Tcoyk3XEghKTU7NKwkoSi3OTAEyih8xunALvPxxT1jKetKak9cYTbkwlAhJcnH45CcnlmTm5wnxSnFzcYJMs0w2LzewYtJgqmLiYOBZxMrnmJdSlFqu4JWfkVecnzeBjREATWcdt3oAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEJwB" + }, + { + "name": "Abraham Lincoln (1861-1865)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Abraham+Lincoln&stick=H4sIAAAAAAAAAONgFmJQYtfP1TdIr8rQEghKTU7NKwkoSi3OTAEyih8xunALvPxxT1jKetKak9cYTbkwlAhJcnH45CcnlmTm5wnxSnFzcYJMs0w2LzewYtJgqmLiYOBZxMrvmFSUmJGYq-CTmZecn5M3gY0RANFe8Hd7AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEKEB" + }, + { + "name": "James Buchanan (1857-1861)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=James+Buchanan&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwMUrL1hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK55WYm1qs4FSanJGYl5g3gY0RAKRVXKN7AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEKYB" + }, + { + "name": "Franklin Pierce (1853-1857)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Franklin+Pierce&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwqjI11BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK71aUmJedk5mnEJCZWpScOoGNEQDPcHUTfAAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEKsB" + }, + { + "name": "Millard Fillmore (1850-1853)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Millard+Fillmore&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwiTc01hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq4JuZk5NYlKLgBqRz84tSJ7AxAgCycLbbfQAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsELAB" + }, + { + "name": "Zachary Taylor (1849-1850)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Zachary+Taylor&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TewsDS11BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTKF5WYnJFYVKkQkliZk180gY0RAH1yI-97AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsELUB" + }, + { + "name": "James K. Polk (1845-1849)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=James+Polk&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwMUoz1BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK5ZWYm1qsEJCfkz2BjREAp7V4vncAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsELoB" + }, + { + "name": "John Tyler (1841-1845)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=John+Tyler&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwMUrJ1hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK5ZWfkacQUpmTWjSBjREA5Y9gOHcAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEL8B" + }, + { + "name": "William Henry Harrison (1841-1841)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=William+Henry+Harrison&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TewMDYt1BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQqFp6Zk5OZmKvgkZpXVKngkVhUlFmcnzeBjREA6_IN4IMAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEMQB" + }, + { + "name": "Martin Van Buren (1837-1841)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Martin+Van+Buren&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwiTfI1RIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq4JtYVJKZpxCWmKfgVFqUmjeBjREAAWQzan0AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEMkB" + }, + { + "name": "Andrew Jackson (1829-1837)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Andrew+Jackson&stick=H4sIAAAAAAAAAONgFmJQYtfP1TcoyqnSEghKTU7NKwkoSi3OTAEyih8xunALvPxxT1jKetKak9cYTbkwlAhJcnH45CcnlmTm5wnxSnFzcYJMs0w2LzewYtJgqmLiYOBZxMrnmJdSlFqu4JWYnF2cnzeBjREA2cDz9noAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEM4B" + }, + { + "name": "John Quincy Adams (1825-1829)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=John+Quincy+Adams&stick=H4sIAAAAAAAAAONgFmJQ4tDP1Tcwjs8r1BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq6JWfkacQWJqZl1yp4JiSmFs8gY0RAAiEax9-AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsENMB" + }, + { + "name": "James Monroe (1817-1825)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=James+Monroe&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwMUox1BIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK45WYm1qs4JufV5SfOoGNEQAZcT7JeQAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsENgB" + }, + { + "name": "James Madison (1809-1817)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=James+Madison&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwMTLJ1RIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK65WYm1qs4JuYklmcnzeBjREADRypCnoAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEN0B" + }, + { + "name": "Thomas Jefferson (1801-1809)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=Thomas+Jefferson&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwT04q1hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQqEJKRn5tYrOCVmpaWWlScnzeBjREAeCSs5X0AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEOIB" + }, + { + "name": "John Adams (1797-1801)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=John+Adams&stick=H4sIAAAAAAAAAONgFmJQ4tDP1Tcwjs8q1hIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcTK5ZWfkafgmJKYWzyBjREAgQh7IXcAAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEOcB" + }, + { + "name": "George Washington (1789-1797)", + "link": "https://www.google.com/search?sca_esv=8e47304d2b7c0f14&rlz=1C5CHFA_enUS939US940&sxsrf=ANbL-n7m-im9f3pNRSgzMGqx9tUoF-iH8g:1780278560707&q=George+Washington&stick=H4sIAAAAAAAAAONgFmJQ4tDP1TcwNilK0RIISk1OzSsJKEotzkwBMoofMbpwC7z8cU9YynrSmpPXGE25MJQISXJx-OQnJ5Zk5ucJ8Upxc3GCjLNMNi83sGLSYKpi4mDgWcQq6J6aX5SeqhCeWJyRmZdekp83gY0RAGsBZnR-AAAA&sa=X&ved=2ahUKEwjM_9i59uSUAxVbkWoFHXetM94Q-BZ6BQgsEOwB" + } + ] +} diff --git a/spec/item_spec.rb b/spec/item_spec.rb index 715c590a..ba82e211 100644 --- a/spec/item_spec.rb +++ b/spec/item_spec.rb @@ -53,7 +53,7 @@ def tile_from(html) it "returns nil when there is no anchor (malformed tile)" do node = tile_from("
just text
") - expected = {"extensions" => nil, "image" => nil, "link" => nil, "name" => "just text"} + expected = {"name" => "just text"} expect(described_class.parse(node, thumbnails: {})).to eq(expected) end