From ebe5941fa240058939d6af0e421f60a003f6f6ed Mon Sep 17 00:00:00 2001 From: Pablo Ferreiro Date: Sat, 13 Aug 2022 13:09:39 +0200 Subject: [PATCH] temp favicon, updated scrapper and .env changes --- .env.example | 4 ++-- Dockerfile | 2 +- README.md | 1 + android-chrome-192x192.png | Bin 0 -> 11093 bytes android-chrome-512x512.png | Bin 0 -> 30773 bytes app/Cache/JSONCache.php | 6 ++++-- app/Cache/RedisCache.php | 9 ++++----- app/Constants/CacheMethods.php | 7 +++++++ app/Helpers/Wrappers.php | 24 +++++++++++++++++++----- apple-touch-icon.png | Bin 0 -> 9983 bytes components/head.latte | 4 ++++ composer.json | 4 ++-- composer.lock | 14 +++++++------- docker-compose.yml | 1 + favicon-16x16.png | Bin 0 -> 626 bytes favicon-32x32.png | Bin 0 -> 1380 bytes favicon.ico | Bin 0 -> 15406 bytes site.webmanifest | 23 +++++++++++++++++++++++ 18 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 android-chrome-192x192.png create mode 100644 android-chrome-512x512.png create mode 100644 app/Constants/CacheMethods.php create mode 100644 apple-touch-icon.png create mode 100644 favicon-16x16.png create mode 100644 favicon-32x32.png create mode 100644 favicon.ico create mode 100644 site.webmanifest diff --git a/.env.example b/.env.example index b1b51fc..ec0810d 100644 --- a/.env.example +++ b/.env.example @@ -2,8 +2,8 @@ # LATTE_CACHE=/tmp/proxitok_api # Path for Latte cache, leave commented for ./cache/latte # API CONFIG -# API_SIGNER_URL="https://example.com" # External signing service -# API_BROWSER_URL="http://localhost:4444" # chromedriver url +# API_SIGNER="remote" +# API_SIGNER_URL="http://localhost:8080" # API_TEST_ENDPOINTS=true # Uncomment for usage of testing TikTok endpoints, may help sometimes # API_CACHE=redis diff --git a/Dockerfile b/Dockerfile index c9b048f..c5e5b81 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8-apache +FROM php:8.1-apache WORKDIR /var/www/html COPY --from=composer /usr/bin/composer /usr/bin/composer RUN apt update -y && apt upgrade -y \ diff --git a/README.md b/README.md index 07da2e5..9cad266 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ Apply to: Main window (address bar) ``` ## TODO / Known issues +* Replace placeholder favicon * Make video on /video fit screen and don't overflow * Fix embed styling * Fix crash when invalid vm.tiktok.com/CODE or www.tiktok.com/t/CODE is provided diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..c83bb632e71c8e316effa29d99ca175f60e74410 GIT binary patch literal 11093 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 b^3(qZwPyu!w#yzlF`TCH$8X_lY5HSwSN>{HT6 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 . '/' . $cache_key . '.json', $data); } } diff --git a/app/Cache/RedisCache.php b/app/Cache/RedisCache.php index 82063a0..e86cf63 100644 --- a/app/Cache/RedisCache.php +++ b/app/Cache/RedisCache.php @@ -1,7 +1,9 @@ client = new \Redis(); @@ -21,10 +23,7 @@ class RedisCache { public function get(string $cache_key): ?object { $data = $this->client->get($cache_key); - if ($data) { - return json_decode($data); - } - return null; + return $data ? json_decode($data) : null; } public function exists(string $cache_key): bool { diff --git a/app/Constants/CacheMethods.php b/app/Constants/CacheMethods.php new file mode 100644 index 0000000..f4ec604 --- /dev/null +++ b/app/Constants/CacheMethods.php @@ -0,0 +1,7 @@ + Misc::env('API_TEST_ENDPOINTS', false) || isset($_COOKIE['api-test_endpoints']) && $_COOKIE['api-test_endpoints'] === 'yes', 'signer' => [ - 'remote_url' => Misc::env('API_SIGNER_URL', ''), - 'browser_url' => Misc::env('API_BROWSER_URL', ''), + 'method' => $method, + 'url' => $url, 'close_when_done' => false ] ]; // Cache config - $cacheEngine = false; + $cacheEngine = null; if (isset($_ENV['API_CACHE'])) { switch ($_ENV['API_CACHE']) { - case 'json': + case CacheMethods::JSON: $cacheEngine = new JSONCache(); break; - case 'redis': + case CacheMethods::REDIS: if (!(isset($_ENV['REDIS_URL']) || isset($_ENV['REDIS_HOST'], $_ENV['REDIS_PORT']))) { throw new \Exception('You need to set REDIS_URL or REDIS_HOST and REDIS_PORT to use Redis Cache!'); } diff --git a/apple-touch-icon.png b/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..939de46c04a2e07896bcd195b351b6c17d0d4aac GIT binary patch literal 9983 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 + + + + diff --git a/composer.json b/composer.json index daa23ae..227bbd9 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "pablouser1/proxitok", "description": "An alternative frontend for TikTok", - "version": "2.3.2.2", + "version": "2.4.0.0", "license": "AGPL-3.0-or-later", "type": "project", "authors": [ @@ -24,7 +24,7 @@ "latte/latte": "^2.11", "bramus/router": "^1.6", "josegonzalez/dotenv": "dev-master", - "pablouser1/tikscraper": "^2.1" + "pablouser1/tikscraper": "^2.2" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 7bc7cae..71dd0f1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "15ff00ea59afbf0d6d064d4cbefb05fb", + "content-hash": "4e398680c8c683b157043558c21a25ad", "packages": [ { "name": "bramus/router", @@ -263,16 +263,16 @@ }, { "name": "pablouser1/tikscraper", - "version": "v2.1.2.0", + "version": "v2.2.0.0", "source": { "type": "git", "url": "https://github.com/pablouser1/TikScraperPHP.git", - "reference": "96326226e54de2d1feedcc708200ba023a0553e5" + "reference": "5561b82442caf4968f0c4f408ee5847a97cd8940" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pablouser1/TikScraperPHP/zipball/96326226e54de2d1feedcc708200ba023a0553e5", - "reference": "96326226e54de2d1feedcc708200ba023a0553e5", + "url": "https://api.github.com/repos/pablouser1/TikScraperPHP/zipball/5561b82442caf4968f0c4f408ee5847a97cd8940", + "reference": "5561b82442caf4968f0c4f408ee5847a97cd8940", "shasum": "" }, "require": { @@ -304,9 +304,9 @@ "description": "Get data from TikTok API", "support": { "issues": "https://github.com/pablouser1/TikScraperPHP/issues", - "source": "https://github.com/pablouser1/TikScraperPHP/tree/v2.1.2.0" + "source": "https://github.com/pablouser1/TikScraperPHP/tree/v2.2.0.0" }, - "time": "2022-08-11T21:32:02+00:00" + "time": "2022-08-13T10:17:31+00:00" }, { "name": "php-webdriver/webdriver", diff --git a/docker-compose.yml b/docker-compose.yml index 2c32142..8d5ad7d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,6 +11,7 @@ services: - API_CACHE=redis - REDIS_HOST=proxitok-redis - REDIS_PORT=6379 + - API_SIGNER=remote - API_SIGNER_URL=http://proxitok-signer:8080/signature volumes: - proxitok-cache:/cache diff --git a/favicon-16x16.png b/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..6b143c4f718d33b62a17224ae0a95404a1f77135 GIT binary patch literal 626 zcmV-&0*(ENP)_!QUo6mgM&7k;uAy=DrShrO>q#V_*m)?hXkccP!S; z{a0&#=H#%rx2Jxkhp5D%u1?!+HhgmaEWtT1fvvNE#O3!*?neaZ*0MbVSix0Qe9zCv zadQJ_XYlZl2~k)G#l^;Ew-cV9$0G?JmDbu7kMmXNRVG5NuVH;1HaDT70z4k5u9j>` zzA11Ojq2F)GH+usI6ntr!q^xT6~WdPG>H<&$L8zogo_K<*@3(~sITXXYHZYt4hMr> zT`)Xskb8S!U;vJeV0;{&o}i=zHZ~v_gw<8!Cz|+`)2aW6;e8|m6BFj5rw80_2!~;6 z%Glc5VQ2^@Ct-g-3GiEaz52oD088Ppa$5k-!$TrMEhu6+vhgS= zFv6akm=+fi!_v8*ta->bOalUxmCdWel%DmqaTcE+l6~pmAak7m0Wg%{j~7QrasU7T M07*qoM6N<$f^-NQtN;K2 literal 0 HcmV?d00001 diff --git a/favicon-32x32.png b/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..492f8a3e109185481e8ff4d14bcd1fc2e004d011 GIT binary patch literal 1380 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