From b20f3e9c0ff703f5d82000cd25557b6fed5b79b1 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Thu, 16 Feb 2023 13:10:46 +0100 Subject: [PATCH] works now, image proxy needs to be fixed tho --- api.php | 39 --- config.php | 52 +--- engines/pinterest.php | 60 ----- image_proxy.php | 24 +- index.php | 5 +- misc/footer.php | 22 ++ misc/header.php | 8 + {static => misc}/style-dark.css | 8 + misc/tools.php | 430 ++++++++++++++++---------------- search.php | 58 ++++- static/footer.php | 12 - static/header.php | 10 - 12 files changed, 324 insertions(+), 404 deletions(-) delete mode 100644 api.php delete mode 100644 engines/pinterest.php create mode 100644 misc/footer.php create mode 100644 misc/header.php rename {static => misc}/style-dark.css (89%) delete mode 100644 static/footer.php delete mode 100644 static/header.php diff --git a/api.php b/api.php deleted file mode 100644 index 35e2265..0000000 --- a/api.php +++ /dev/null @@ -1,39 +0,0 @@ -Example API request: ./api.php?q=pinternet"; - die(); -} - -$query = $_REQUEST["q"]; - -// Pinterest API Endpoint -$api_url = "https://api.pinterest.com/v1/boards/{board_id}/pins/"; - -// Replace {board_id} with the actual board ID -$board_id = "replace_with_actual_board_id"; - -// Replace {access_token} with a valid Pinterest access token -$access_token = "replace_with_actual_access_token"; - -// Create the API request URL -$request_url = $api_url . "?access_token=" . $access_token; - -// Send a GET request to the Pinterest API -$response = file_get_contents($request_url); - -// Decode the JSON response into a PHP array -$pins = json_decode($response, true); - -// Loop through the pins and display each one -foreach ($pins["data"] as $pin) { - echo '
'; - echo '' . $pin['; - echo '

' . $pin["description"] . '

'; - echo '
'; -} - -?> diff --git a/config.php b/config.php index 3b08acc..791c2cc 100644 --- a/config.php +++ b/config.php @@ -1,53 +1,5 @@ https://google.fr/ - "google_domain" => "com", - - // Google results will be in this language - "google_language" => "en", - - // If you have a local instance you can change this to http://localhost:3000 - "invidious_instance_for_video_results" => "https://invidious.namazso.eu", - - "disable_bittorent_search" => false, - "bittorent_trackers" => "&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce", - - "disable_hidden_service_search" => false, - - /* - Preset privacy friendly frontends for users, these can be overwritten by users in settings - e.g.: "invidious" => "https://yewtu.be", - */ - "invidious" => "", // youtube - "bibliogram" => "", // instagram - "rimgo" => "", // imgur - "scribe" => "", // medium - "librarian" => "", // odysee - "gothub" => "", // github - "nitter" => "", // twitter - "libreddit" => "", // reddit - "proxitok" => "", // tiktok - "wikiless" => "", // wikipedia - "quetre" => "", // quora - "libremdb" => "", // imdb, - "breezewiki" => "", // fandom, - "anonymousoverflow" => "", // stackoverflow - - /* - To send requests trough a proxy uncomment CURLOPT_PROXY and CURLOPT_PROXYTYPE: - - CURLOPT_PROXYTYPE options: - - CURLPROXY_HTTP - CURLPROXY_SOCKS4 - CURLPROXY_SOCKS4A - CURLPROXY_SOCKS5 - CURLPROXY_SOCKS5_HOSTNAME - - !!! ONLY CHANGE THE OTHER OPTIONS IF YOU KNOW WHAT YOU ARE DOING !!! - */ "curl_settings" => array( // CURLOPT_PROXY => "ip:port", // CURLOPT_PROXYTYPE => CURLPROXY_HTTP, @@ -62,7 +14,7 @@ CURLOPT_TIMEOUT => 18, CURLOPT_VERBOSE => false ) - ); - ?> + +// settings basically stolen from LibreX - https://github.com/hnhx/librex diff --git a/engines/pinterest.php b/engines/pinterest.php deleted file mode 100644 index 981b52d..0000000 --- a/engines/pinterest.php +++ /dev/null @@ -1,60 +0,0 @@ -query("//a[@rel='noopener']") as $result) - { - $image = $xpath->evaluate(".//img", $result)[0]; - - if ($image) - { - $encoded_url = $result->getAttribute("href"); - $encoded_url_split1 = explode("==/", $encoded_url)[1]; - $encoded_url_split2 = explode("?position", $encoded_url_split1)[0]; - $real_url = urldecode(base64_decode($encoded_url_split2)); - $real_url = check_for_privacy_frontend($real_url); - - $alt = $image->getAttribute("alt"); - $thumbnail = urlencode($image->getAttribute("src")); - - array_push($results, - array ( - "thumbnail" => urldecode(htmlspecialchars($thumbnail)), - "alt" => htmlspecialchars($alt), - "url" => htmlspecialchars($real_url) - ) - ); - - } - } - - return $results; - } - - function print_image_results($results) - { - echo "
"; - - foreach($results as $result) - { - $thumbnail = urlencode($result["thumbnail"]); - $alt = $result["alt"]; - $url = $result["url"]; - - echo ""; - echo ""; - echo ""; - } - - echo "
"; - } -?> diff --git a/image_proxy.php b/image_proxy.php index 387ed82..6575edf 100644 --- a/image_proxy.php +++ b/image_proxy.php @@ -1,19 +1,21 @@ +// basically stolen from LibreX - https://github.com/hnhx/LibreX diff --git a/index.php b/index.php index 39d2d5e..1746c95 100644 --- a/index.php +++ b/index.php @@ -1,4 +1,5 @@ - + +Pinternet
@@ -10,4 +11,4 @@
- + diff --git a/misc/footer.php b/misc/footer.php new file mode 100644 index 0000000..3941bfa --- /dev/null +++ b/misc/footer.php @@ -0,0 +1,22 @@ + + + diff --git a/misc/header.php b/misc/header.php new file mode 100644 index 0000000..c749826 --- /dev/null +++ b/misc/header.php @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/style-dark.css b/misc/style-dark.css similarity index 89% rename from static/style-dark.css rename to misc/style-dark.css index 3b678a8..0ed4d93 100644 --- a/static/style-dark.css +++ b/misc/style-dark.css @@ -79,3 +79,11 @@ input { margin: 10px; } +img { + max-width: 25vw; + max-height: 25vw; + height: auto; + width: auto; + border-radius: 10px; + box-shadow: 5px 5px 5px black; +} diff --git a/misc/tools.php b/misc/tools.php index 5846c4f..e077189 100644 --- a/misc/tools.php +++ b/misc/tools.php @@ -1,246 +1,244 @@ $frontend)) + function get_base_url($url) { - if (isset($_COOKIE[$frontend])) - $frontend = $_COOKIE[$frontend]; - else if (isset($_REQUEST[$frontend])) - $frontend = $_REQUEST[$frontend]; - else if (!empty($config->$frontend)) - $frontend = $config->$frontend; + $split_url = explode("/", $url); + $base_url = $split_url[0] . "//" . $split_url[2] . "/"; + return $base_url; + } - if ($original == "instagram.com") + function get_root_domain($url) + { + $split_url = explode("/", $url); + $base_url = $split_url[2]; + + $base_url_main_split = explode(".", strrev($base_url)); + $root_domain = strrev($base_url_main_split[1]) . "." . strrev($base_url_main_split[0]); + + return $root_domain; + } + + function try_replace_with_frontend($url, $frontend, $original) + { + $config = require "config.php"; + + if (isset($_COOKIE[$frontend]) || isset($_REQUEST[$frontend]) || !empty($config->$frontend)) { - if (!strpos($url, "/p/")) - $frontend .= "/u"; + if (isset($_COOKIE[$frontend])) + $frontend = $_COOKIE[$frontend]; + else if (isset($_REQUEST[$frontend])) + $frontend = $_REQUEST[$frontend]; + else if (!empty($config->$frontend)) + $frontend = $config->$frontend; + + if ($original == "instagram.com") + { + if (!strpos($url, "/p/")) + $frontend .= "/u"; + } + + if (empty(trim($frontend))) + return $url; + + if (strpos($url, "wikipedia.org") !== false) + { + $wiki_split = explode(".", $url); + if (count($wiki_split) > 1) + { + $lang = explode("://", $wiki_split[0])[1]; + $url = $frontend . explode($original, $url)[1] . "?lang=" . $lang; + } + } + else if (strpos($url, "fandom.com") !== false) + { + $fandom_split = explode(".", $url); + if (count($fandom_split) > 1) + { + $wiki_name = explode("://", $fandom_split[0])[1]; + $url = $frontend . "/" . $wiki_name . explode($original, $url)[1]; + } + } + else + { + $url = $frontend . explode($original, $url)[1]; + } + + + return $url; } - if (empty(trim($frontend))) + return $url; + } + + function check_for_privacy_frontend($url) + { + if (isset($_COOKIE["disable_frontends"])) return $url; - if (strpos($url, "wikipedia.org") !== false) + $frontends = array( + "youtube.com" => "invidious", + "instagram.com" => "bibliogram", + "imgur.com" => "rimgo", + "medium.com" => "scribe", + "github.com" => "gothub", + "odysee.com" => "librarian", + "twitter.com" => "nitter", + "reddit.com" => "libreddit", + "tiktok.com" => "proxitok", + "wikipedia.org" => "wikiless", + "quora.com" => "quetre", + "imdb.com" => "libremdb", + "fandom.com" => "breezewiki", + "stackoverflow.com" => "anonymousoverflow" + ); + + foreach($frontends as $original => $frontend) { - $wiki_split = explode(".", $url); - if (count($wiki_split) > 1) + if (strpos($url, $original)) { - $lang = explode("://", $wiki_split[0])[1]; - $url = $frontend . explode($original, $url)[1] . "?lang=" . $lang; - } - } - else if (strpos($url, "fandom.com") !== false) - { - $fandom_split = explode(".", $url); - if (count($fandom_split) > 1) - { - $wiki_name = explode("://", $fandom_split[0])[1]; - $url = $frontend . "/" . $wiki_name . explode($original, $url)[1]; + $url = try_replace_with_frontend($url, $frontend, $original); + break; } } + + return $url; + } + + function check_ddg_bang($query) + { + + $bangs_json = file_get_contents("static/misc/ddg_bang.json"); + $bangs = json_decode($bangs_json, true); + + if (substr($query, 0, 1) == "!") + $search_word = substr(explode(" ", $query)[0], 1); else + $search_word = substr(end(explode(" ", $query)), 1); + + $bang_url = null; + + foreach($bangs as $bang) { - $url = $frontend . explode($original, $url)[1]; + if ($bang["t"] == $search_word) + { + $bang_url = $bang["u"]; + break; + } } - - return $url; - } - - return $url; -} - -function check_for_privacy_frontend($url) -{ - if (isset($_COOKIE["disable_frontends"])) - return $url; - - $frontends = array( - "youtube.com" => "invidious", - "instagram.com" => "bibliogram", - "imgur.com" => "rimgo", - "medium.com" => "scribe", - "github.com" => "gothub", - "odysee.com" => "librarian", - "twitter.com" => "nitter", - "reddit.com" => "libreddit", - "tiktok.com" => "proxitok", - "wikipedia.org" => "wikiless", - "quora.com" => "quetre", - "imdb.com" => "libremdb", - "fandom.com" => "breezewiki", - "stackoverflow.com" => "anonymousoverflow" - ); - - foreach($frontends as $original => $frontend) - { - if (strpos($url, $original)) + if ($bang_url) { - $url = try_replace_with_frontend($url, $frontend, $original); - break; + $bang_query_array = explode("!" . $search_word, $query); + $bang_query = trim(implode("", $bang_query_array)); + + $request_url = str_replace("{{{s}}}", $bang_query, $bang_url); + $request_url = check_for_privacy_frontend($request_url); + + header("Location: " . $request_url); + die(); } } - return $url; -} - -function check_ddg_bang($query) -{ - - $bangs_json = file_get_contents("static/misc/ddg_bang.json"); - $bangs = json_decode($bangs_json, true); - - if (substr($query, 0, 1) == "!") - $search_word = substr(explode(" ", $query)[0], 1); - else - $search_word = substr(end(explode(" ", $query)), 1); - - $bang_url = null; - - foreach($bangs as $bang) + function check_for_special_search($query) { - if ($bang["t"] == $search_word) - { - $bang_url = $bang["u"]; - break; - } - } + if (isset($_COOKIE["disable_special"]) || isset($_REQUEST["disable_special"])) + return 0; - if ($bang_url) - { - $bang_query_array = explode("!" . $search_word, $query); - $bang_query = trim(implode("", $bang_query_array)); + $query_lower = strtolower($query); + $split_query = explode(" ", $query); - $request_url = str_replace("{{{s}}}", $bang_query, $bang_url); - $request_url = check_for_privacy_frontend($request_url); + if (strpos($query_lower, "to") && count($split_query) >= 4) // currency + { + $amount_to_convert = floatval($split_query[0]); + if ($amount_to_convert != 0) + return 1; + } + else if (strpos($query_lower, "mean") && count($split_query) >= 2) // definition + { + return 2; + } + else if (strpos($query_lower, "my") !== false) + { + if (strpos($query_lower, "ip")) + { + return 3; + } + else if (strpos($query_lower, "user agent") || strpos($query_lower, "ua")) + { + return 4; + } + } + else if (strpos($query_lower, "weather") !== false) + { + return 5; + } + else if ($query_lower == "tor") + { + return 6; + } + else if (3 > count(explode(" ", $query))) // wikipedia + { + return 7; + } - header("Location: " . $request_url); - die(); - } -} - -function check_for_special_search($query) -{ - if (isset($_COOKIE["disable_special"]) || isset($_REQUEST["disable_special"])) return 0; - - $query_lower = strtolower($query); - $split_query = explode(" ", $query); - - if (strpos($query_lower, "to") && count($split_query) >= 4) // currency - { - $amount_to_convert = floatval($split_query[0]); - if ($amount_to_convert != 0) - return 1; - } - else if (strpos($query_lower, "mean") && count($split_query) >= 2) // definition - { - return 2; - } - else if (strpos($query_lower, "my") !== false) - { - if (strpos($query_lower, "ip")) - { - return 3; - } - else if (strpos($query_lower, "user agent") || strpos($query_lower, "ua")) - { - return 4; - } - } - else if (strpos($query_lower, "weather") !== false) - { - return 5; - } - else if ($query_lower == "tor") - { - return 6; - } - else if (3 > count(explode(" ", $query))) // wikipedia - { - return 7; - } - - return 0; -} - -function get_xpath($response) -{ - $htmlDom = new DOMDocument; - @$htmlDom->loadHTML($response); - $xpath = new DOMXPath($htmlDom); - - return $xpath; -} - -function request($url) -{ - global $config; - - $ch = curl_init($url); - curl_setopt_array($ch, $config->curl_settings); - $response = curl_exec($ch); - - return $response; -} - -function human_filesize($bytes, $dec = 2) -{ - $size = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); - $factor = floor((strlen($bytes) - 1) / 3); - - return sprintf("%.{$dec}f ", $bytes / pow(1024, $factor)) . @$size[$factor]; -} - -function remove_special($string) -{ - $string = preg_replace("/[\r\n]+/", "\n", $string); - return trim(preg_replace("/\s+/", ' ', $string)); - } - -function print_elapsed_time($start_time) - { - $end_time = number_format(microtime(true) - $start_time, 2, '.', ''); - echo "

Fetched the results in $end_time seconds

"; } -function print_next_page_button($text, $page, $query, $type) -{ - echo "
"; - foreach($_REQUEST as $key=>$value) + function get_xpath($response) { - if ($key != "q" && $key != "p" && $key != "t") - { - echo ""; - } - } - echo ""; - echo ""; - echo ""; - echo ""; - echo "
"; -} + $htmlDom = new DOMDocument; + @$htmlDom->loadHTML($response); + $xpath = new DOMXPath($htmlDom); + return $xpath; + } + + function request($url) + { + global $config; + + $ch = curl_init($url); + curl_setopt_array($ch, $config->curl_settings); + $response = curl_exec($ch); + + return $response; + } + + function human_filesize($bytes, $dec = 2) + { + $size = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + $factor = floor((strlen($bytes) - 1) / 3); + + return sprintf("%.{$dec}f ", $bytes / pow(1024, $factor)) . @$size[$factor]; + } + + function remove_special($string) + { + $string = preg_replace("/[\r\n]+/", "\n", $string); + return trim(preg_replace("/\s+/", ' ', $string)); + } + + function print_elapsed_time($start_time) + { + $end_time = number_format(microtime(true) - $start_time, 2, '.', ''); + echo "

Fetched the results in $end_time seconds

"; + } + + function print_next_page_button($text, $page, $query, $type) + { + echo "
"; + foreach($_REQUEST as $key=>$value) + { + if ($key != "q" && $key != "p" && $key != "t") + { + echo ""; + } + } + echo ""; + echo ""; + echo ""; + echo ""; + echo "
"; + } ?> + +//basically stolen from LibreX - https://github.com/hnhx/LibreX diff --git a/search.php b/search.php index c0efd82..d0297d1 100644 --- a/search.php +++ b/search.php @@ -1,10 +1,60 @@ + + <?php -require "static/header.php"; -require "engines/pinterest.php"; + $query = htmlspecialchars(trim($_REQUEST["q"])); + echo $query; +?> - Pinternet + + +
+

Pinternet

+ strlen($query) || strlen($query) > 64) + { + header("Location: ./"); + die(); + } + + echo "value=\"$query\""; + ?> +
+
+
+ +{"resource_response"}->{"data"}->{"results"} as $result) + { + $image = $result->{"images"}->{"orig"}; + $url = $image->{"url"}; + array_push($images, $url); + echo ""; + } + return $images; +}; + +$images = $search("$query"); +echo "

"; +echo "
"; +print(count($images)." images found"); + +include "misc/footer.php"; ?> diff --git a/static/footer.php b/static/footer.php deleted file mode 100644 index a96fb9b..0000000 --- a/static/footer.php +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/static/header.php b/static/header.php deleted file mode 100644 index 48872f7..0000000 --- a/static/header.php +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - -