// ==UserScript== // @name Platesmania Lookup Toolbox // @version 1.3.1 // @description Provides a button to lookup license plates easily from the upload page on Platesmania. // @match https://platesmania.com/*/add* // @grant none // @license MIT // @namespace https://greasyfork.org/users/976031 // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Choose your preferred lookup sites here! // Put two slashes (//) in front of the lookup site(s) you DON'T want to use and remove them from the one you want to use. // Make sure ONLY ONE is active per country, otherwise the script will not work! // Save this script and reload the PM upload page for changes to apply. // Netherlands const NLlookupSite = 'https://finnik.nl/kenteken/'; // const NLlookupSite = 'https://www.rdwdata.nl/kenteken/'; // const NLlookupSite = 'https://www.autoweek.nl/kentekencheck/'; // Sweden const SElookupSite = 'https://www.car.info/?s='; // const SElookupSite = 'https://biluppgifter.se/fordon/'; // const SElookupSite = 'https://fordon-fu-regnr.transportstyrelsen.se/?ts-regnr-sok='; // Ukraine const UAlookupSite = 'https://ua.carplates.app/en/number/'; // const UAlookupSite = 'https://baza-gai.com.ua/nomer/'; // const UAlookupSite = 'https://auto-inform.com.ua/search/'; // Actual script starts here, don't change anything from here unless you know what you're doing. // Function to check if lookup site exists for the current page function isLookupSiteAvailable() { return window.location.href.includes('platesmania.com/nl/add') || window.location.href.includes('platesmania.com/ua/add') || window.location.href.includes('platesmania.com/no/add') || window.location.href.includes('platesmania.com/dk/add') || window.location.href.includes('platesmania.com/fr/add') || window.location.href.includes('platesmania.com/uk/add') || window.location.href.includes('platesmania.com/fi/add') || window.location.href.includes('platesmania.com/pl/add') || window.location.href.includes('platesmania.com/lt/add') || window.location.href.includes('platesmania.com/se/add'); } // Function to check if all necessary fields contain data function areFieldsFilled() { if (window.location.href.includes('platesmania.com/nl/add')) { return document.getElementById('nomer').value !== ''; } else if (window.location.href.includes('platesmania.com/ua/add')) { const region = document.getElementById('region1').value; const digits = document.getElementById('digit1').value; return region !== '' && digits !== ''; } else if (window.location.href.includes('platesmania.com/no/add')) { const letField = document.getElementById('let').value; const digitField = document.getElementById('digit').value; return letField !== '' && digitField !== ''; } else if (window.location.href.includes('platesmania.com/dk/add')) { const letField = document.getElementById('let').value; const digitField = document.getElementById('digit').value; return letField !== '' && digitField !== ''; } else if (window.location.href.includes('platesmania.com/fr/add')) { const b1 = document.getElementById('b1').value; const digit2 = document.getElementById('digit2').value; const b2 = document.getElementById('b2').value; return b1 !== '' && digit2 !== '' && b2 !== ''; } else if (window.location.href.includes('platesmania.com/se/add')) { const letField = document.getElementById('let').value; const digitField = document.getElementById('digit').value; return letField !== '' && digitField !== ''; } else if (window.location.href.includes('platesmania.com/de/add')) { const digitField = document.getElementById('digit').value; return digitField !== ''; } else if (window.location.href.includes('platesmania.com/ch/add')) { const digitField = document.getElementById('digit').value; return digitField !== ''; } else if (window.location.href.includes('platesmania.com/pl/add')) { const digitField = document.getElementById('nomerpl').value; return digitField !== ''; } else if (window.location.href.includes('platesmania.com/uk/add')) { const digitField = document.getElementById('nomerpl').value; return digitField !== ''; } else if (window.location.href.includes('platesmania.com/fi/add')) { const letField = document.getElementById('let1').value; const digitField = document.getElementById('digit').value; return digitField !== ''; } else if (window.location.href.includes('platesmania.com/lt/add')) { const digitField = document.getElementById('digit2').value; return digitField !== ''; } return false; } // Function to create or update the lookup button function createOrUpdateLookupButton() { // Check if lookup site exists for the current page if (!isLookupSiteAvailable()) { // If no lookup site exists, remove the button const lookupButton = document.getElementById('lookupButton'); if (lookupButton) { lookupButton.parentNode.removeChild(lookupButton); } return; } // Check if all necessary fields contain data const fieldsFilled = areFieldsFilled(); // Get the button or create it if it doesn't exist let lookupButton = document.getElementById('lookupButton'); if (!lookupButton) { lookupButton = document.createElement('button'); lookupButton.id = 'lookupButton'; lookupButton.innerText = 'Lookup'; lookupButton.style.marginBottom = '10px'; lookupButton.style.width = '100%'; // Make the button as wide as its parent element lookupButton.style.backgroundColor = '#3498db'; // Blue color for clickable button lookupButton.style.color = '#ffffff'; // White text color lookupButton.style.border = 'none'; // Remove border lookupButton.style.cursor = 'pointer'; // Change cursor to pointer on hover document.getElementById('zoomimgid').parentNode.insertBefore(lookupButton, document.getElementById('zoomimgid')); } // Set button link and enable/disable based on field data if (fieldsFilled) { lookupButton.disabled = false; // Enable button lookupButton.onclick = function() { let plateNumber = ''; if (window.location.href.includes('platesmania.com/nl/add')) { plateNumber = document.getElementById('nomer').value; window.open(NLlookupSite + plateNumber); } else if (window.location.href.includes('platesmania.com/ua/add')) { const region = document.getElementById('region1').value; const digits = document.getElementById('digit1').value; const b1 = document.getElementById('b1').value; const b2 = document.getElementById('b2').value; plateNumber = `${region}${digits}${b1}${b2}`; window.open(UAlookupSite + plateNumber); } else if (window.location.href.includes('platesmania.com/no/add')) { const letField = document.getElementById('let').value; const digitField = document.getElementById('digit').value; plateNumber = letField + digitField; window.open('https://www.vegvesen.no/en/vehicles/buy-and-sell/vehicle-information/sjekk-kjoretoyopplysninger/?registreringsnummer=' + plateNumber); } else if (window.location.href.includes('platesmania.com/dk/add')) { const letField = document.getElementById('let').value; const digitField = document.getElementById('digit').value; plateNumber = letField + digitField; window.open('https://app.digitalservicebog.dk/search?country=dk&Registration=' + plateNumber); } else if (window.location.href.includes('platesmania.com/fr/add')) { const b1 = document.getElementById('b1').value; const digit2 = document.getElementById('digit2').value; const b2 = document.getElementById('b2').value; plateNumber = `${b1}${digit2}${b2}`; window.open('https://immatriculation-auto.info/vehicle/' + plateNumber); } else if (window.location.href.includes('platesmania.com/se/add')) { const letField = document.getElementById('let').value; const digitField = document.getElementById('digit').value; plateNumber = letField + digitField; window.open(SElookupSite + plateNumber); } else if (window.location.href.includes('platesmania.com/fi/add')) { const letField = document.getElementById('let1').value; const digitField = document.getElementById('digit').value; plateNumber = letField + '-' + digitField; window.open('https://www.motonet.fi/api/vehicleInfo/registrationNumber/FI?locale=fi®istrationNumber=' + plateNumber); } else if (window.location.href.includes('platesmania.com/uk/add')) { const fieldData = document.getElementById('nomerpl').value; window.open('https://www.checkcardetails.co.uk/cardetails/' + fieldData); } else if (window.location.href.includes('platesmania.com/pl/add')) { const regionField = document.getElementById('region'); const selectedRegionText = regionField.options[regionField.selectedIndex].text; const digitField = document.getElementById('nomerpl').value; plateNumber = selectedRegionText + digitField; let form = document.createElement('form'); form.action = 'https://auto-info.gratis/sprawdzam/'; form.method = 'POST'; form.target = '_blank'; let inputCountry = document.createElement('input'); inputCountry.type = 'hidden'; inputCountry.name = 'kraj'; inputCountry.value = 'PL'; let inputPlate = document.createElement('input'); inputPlate.type = 'hidden'; inputPlate.name = 'numer'; inputPlate.value = plateNumber; form.appendChild(inputCountry); form.appendChild(inputPlate); document.body.appendChild(form); form.submit(); document.body.removeChild(form); } else if (window.location.href.includes('platesmania.com/lt/add')) { const b1 = document.getElementById('b1'); const b2 = document.getElementById('b2'); const b3 = document.getElementById('b3'); const digitField1 = document.getElementById('digit1'); const digitField2 = document.getElementById('digit2'); const digitField3 = document.getElementById('digit3'); const vanityComb = document.getElementById('nomer'); const selectedValue = document.getElementById("ctype").value; if (selectedValue === "1") { // Cars plateNumber = b1.value + b2.value + b3.value + digitField2.value; } else if (selectedValue === "2") { // Motorcycles plateNumber = digitField1.value + b1.value + b2.value; } else if (selectedValue === "3") { // Trailers plateNumber = b1.value + b2.value + digitField2.value; } else if (selectedValue === "4") { // Scooters plateNumber = digitField1.value + b1.value + b2.value + b3.value; } else if (selectedValue === "5" || selectedValue === "6" || selectedValue === "7" || selectedValue === "9") { // Vanity, Electric, Oldtimers, Diplo plateNumber = vanityComb.value; } else if (selectedValue === "8") { // Transit plates plateNumber = digitField3.value + b1.value + b2.value; } let form = document.createElement('form'); form.action = 'https://www.cab.lt/draustumo-patikra/'; form.method = 'POST'; form.target = '_blank'; let inputCountry = document.createElement('input'); inputCountry.type = 'hidden'; inputCountry.name = 'country'; inputCountry.value = 'LT'; let inputPlate = document.createElement('input'); inputPlate.type = 'hidden'; inputPlate.name = 'plate'; inputPlate.value = plateNumber; form.appendChild(inputCountry); form.appendChild(inputPlate); document.body.appendChild(form); form.submit(); document.body.removeChild(form); }; } } else { lookupButton.disabled = true; // Disable button lookupButton.onclick = null; // Remove click event } } // Function to create or update the Google Images button function createOrUpdateGoogleImagesButton() { // Check if all necessary fields contain data const fieldsFilled = areFieldsFilled(); // Get the button or create it if it doesn't exist let googleImagesButton = document.getElementById('googleImagesButton'); if (!googleImagesButton) { googleImagesButton = document.createElement('button'); googleImagesButton.id = 'googleImagesButton'; googleImagesButton.innerText = 'Search combination on Google Images'; googleImagesButton.style.marginBottom = '10px'; googleImagesButton.style.width = '100%'; // Make the button as wide as its parent element googleImagesButton.style.backgroundColor = '#3498db'; // Blue color for clickable button googleImagesButton.style.color = '#ffffff'; // White text color googleImagesButton.style.border = 'none'; // Remove border googleImagesButton.style.cursor = 'pointer'; // Change cursor to pointer on hover document.getElementById('zoomimgid').parentNode.insertBefore(googleImagesButton, document.getElementById('zoomimgid')); } // Set button link and enable/disable based on field data if (fieldsFilled) { googleImagesButton.disabled = false; // Enable button googleImagesButton.onclick = function() { let plateNumber = ''; if (window.location.href.includes('platesmania.com/nl/add')) { plateNumber = document.getElementById('nomer').value; } else if (window.location.href.includes('platesmania.com/ua/add')) { const region = document.getElementById('region1').value; const digits = document.getElementById('digit1').value; const b1 = document.getElementById('b1').value; const b2 = document.getElementById('b2').value; plateNumber = `${region} ${digits} ${b1}${b2}`; } else if (window.location.href.includes('platesmania.com/no/add')) { const letField = document.getElementById('let').value; const digitField = document.getElementById('digit').value; plateNumber = letField + ' ' + digitField; } else if (window.location.href.includes('platesmania.com/dk/add')) { const letField = document.getElementById('let').value; const digitField = document.getElementById('digit').value; plateNumber = letField + ' ' + digitField; } else if (window.location.href.includes('platesmania.com/fr/add')) { const b1 = document.getElementById('b1').value; const digit2 = document.getElementById('digit2').value; const b2 = document.getElementById('b2').value; plateNumber = `${b1} ${digit2} ${b2}`; } else if (window.location.href.includes('platesmania.com/se/add')) { const letField = document.getElementById('let').value; const digitField = document.getElementById('digit').value; plateNumber = letField + ' ' + digitField; } else if (window.location.href.includes('platesmania.com/de/add')) { const regionField = document.getElementById('region').value; const letField = document.getElementById('b1').value; const letField2 = document.getElementById('b2').value; const digitField = document.getElementById('digit').value; plateNumber = regionField + ' ' + letField + ' ' + digitField + letField2; } else if (window.location.href.includes('platesmania.com/ch/add')) { const regionField = document.getElementById('region').value; const digitField = document.getElementById('digit').value; plateNumber = regionField + ' ' + digitField; } else if (window.location.href.includes('platesmania.com/fi/add')) { const letField = document.getElementById('let1').value; const digitField = document.getElementById('digit').value; plateNumber = letField + '-' + digitField; } else if (window.location.href.includes('platesmania.com/pl/add')) { const regionField = document.getElementById('region'); const selectedRegionText = regionField.options[regionField.selectedIndex].text; const digitField = document.getElementById('nomerpl').value; plateNumber = selectedRegionText + ' ' + digitField; } else if (window.location.href.includes('platesmania.com/uk/add')) { const fieldData = document.getElementById('nomerpl').value; plateNumber = fieldData; } else if (window.location.href.includes('platesmania.com/lt/add')) { const b1 = document.getElementById('b1'); const b2 = document.getElementById('b2'); const b3 = document.getElementById('b3'); const digitField1 = document.getElementById('digit1'); const digitField2 = document.getElementById('digit2'); const digitField3 = document.getElementById('digit3'); const vanityComb = document.getElementById('nomer'); const selectedValue = document.getElementById("ctype").value; if (selectedValue === "1") { // Cars plateNumber = b1.value + b2.value + b3.value + digitField2.value; } else if (selectedValue === "2") { // Motorcycles plateNumber = digitField1.value + b1.value + b2.value; } else if (selectedValue === "3") { // Trailers plateNumber = b1.value + b2.value + digitField2.value; } else if (selectedValue === "4") { // Scooters plateNumber = digitField1.value + b1.value + b2.value + b3.value; } else if (selectedValue === "5" || selectedValue === "6" || selectedValue === "7" || selectedValue === "9") { // Vanity, Electric, Oldtimers, Diplo plateNumber = vanityComb.value; } else if (selectedValue === "8") { // Transit plates plateNumber = digitField3.value + b1.value + b2.value; } }; window.open('https://www.google.com/search?tbm=isch&q="' + plateNumber + '"'); } } else { googleImagesButton.disabled = true; // Disable button googleImagesButton.onclick = null; // Remove click event } } // Create or update the lookup and Google Images buttons initially createOrUpdateLookupButton(); createOrUpdateGoogleImagesButton(); // Set interval to update button every 1-2 seconds setInterval(() => { createOrUpdateLookupButton(); createOrUpdateGoogleImagesButton(); }, 1000); })();