From e64cf03d817e00b6f7cfb4283e08b3e0e1ef9ec7 Mon Sep 17 00:00:00 2001 From: Matthew Wright Date: Sun, 8 Sep 2024 14:08:10 -0400 Subject: [PATCH 1/3] update dependency versions; darkmode tweaks; move a couple things around --- _layouts/default.html | 65 +- css/youtube-metadata.css | 17 +- ...loped-with-youtube-sentence-case-light.png | Bin 0 -> 3271 bytes js/bcp-47-translator.js | 22 - js/iso-3166-translator.js | 1275 ------------- js/randojs-2.0.0.js | 6 - js/shared.js | 6 +- js/{iso-639-translator.js => translators.js} | 1650 +++++++++++++++++ js/youtube-metadata-bulk.js | 22 +- js/youtube-metadata.js | 9 +- js/yt-category-translator.js | 350 ---- 11 files changed, 1705 insertions(+), 1717 deletions(-) create mode 100644 img/developed-with-youtube-sentence-case-light.png delete mode 100644 js/bcp-47-translator.js delete mode 100644 js/iso-3166-translator.js delete mode 100644 js/randojs-2.0.0.js rename js/{iso-639-translator.js => translators.js} (56%) delete mode 100644 js/yt-category-translator.js diff --git a/_layouts/default.html b/_layouts/default.html index e8afcad..4a0bb34 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,5 +1,5 @@ - + - - - - - - - - - - - - + + + + + - + + + + + + + + + + - - - - + + + - - - - + + @@ -73,18 +71,17 @@ @@ -92,7 +89,7 @@ {{ content }}
- +
mattwright324 | 2025 | home | github | youtube-metadata diff --git a/css/youtube-metadata.css b/css/youtube-metadata.css index e9a7161..9ccba93 100644 --- a/css/youtube-metadata.css +++ b/css/youtube-metadata.css @@ -135,25 +135,20 @@ button.loading .countdown, button.loading .spinner { background-color: #e67e22; } -html.dark .progress-bar.error { +html[data-bs-theme='dark'] .progress-bar.error { background-color: #ca6f1e; } /* Dark mode tweaks */ -html.dark .tag { +html[data-bs-theme='dark'] .tag { background-color: royalblue; } -html.dark .btn-primary { - background-color: #0d6efd; - border-color: #0d6efd; -} - -html.dark a { +html[data-bs-theme='dark'] a { color: lightskyblue; } -html.dark .progress-bar { +html[data-bs-theme='dark'] .progress-bar { color: #fff; } @@ -175,3 +170,7 @@ https://addons.mozilla.org/en-US/firefox/addon/styl-us/ display: revert!important; } */ + +.apexcharts-heatmap-rect[val="0"], .apexcharts-heatmap-rect:not([val]) { + display: none; +} \ No newline at end of file diff --git a/img/developed-with-youtube-sentence-case-light.png b/img/developed-with-youtube-sentence-case-light.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc7472ae48901c4c1ed6702b69f56c2082bbaaf GIT binary patch literal 3271 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 J`N!a_{{bzRl4k$_ literal 0 HcmV?d00001 diff --git a/js/bcp-47-translator.js b/js/bcp-47-translator.js deleted file mode 100644 index 2400279..0000000 --- a/js/bcp-47-translator.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * BCP 47 is a combination of country code ISO 3166 and language code ISO 639. - * - * This translates both codes. - */ -const bcp47 = (function (iso3166, iso639) { - 'use strict'; - - return { - lookup: function (code) { - if (!code) { - return; - } - - const parts = String(code).split(/[-|_]/); - return { - language: iso639.lookup(parts[0]) || iso639.lookup(parts[1]), - country: iso3166.lookup(parts[0]) || iso3166.lookup(parts[1]) - } - } - } -}(iso3166, iso639)); diff --git a/js/iso-3166-translator.js b/js/iso-3166-translator.js deleted file mode 100644 index a3b9fbe..0000000 --- a/js/iso-3166-translator.js +++ /dev/null @@ -1,1275 +0,0 @@ -/** - * Implementation to quickly translate ISO 3166-1 two and three letter and digit country codes. - * - * @link https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes - */ -const iso3166 = (function () { - 'use strict'; - - const codes = [ - { - "name": "Afghanistan", - "numeric3": "004", - "alpha2": "AF" - }, - { - "name": "Åland Islands", - "numeric3": "248", - "alpha2": "AX" - }, - { - "name": "Albania", - "numeric3": "008", - "alpha2": "AL" - }, - { - "name": "Algeria", - "numeric3": "012", - "alpha2": "DZ" - }, - { - "name": "American Samoa", - "numeric3": "016", - "alpha2": "AS" - }, - { - "name": "Andorra", - "numeric3": "020", - "alpha2": "AD" - }, - { - "name": "Angola", - "numeric3": "024", - "alpha2": "AO" - }, - { - "name": "Anguilla", - "numeric3": "660", - "alpha2": "AI" - }, - { - "name": "Antarctica", - "numeric3": "010", - "alpha2": "AQ" - }, - { - "name": "Antigua and Barbuda", - "numeric3": "028", - "alpha2": "AG" - }, - { - "name": "Argentina", - "numeric3": "032", - "alpha2": "AR" - }, - { - "name": "Armenia", - "numeric3": "051", - "alpha2": "AM" - }, - { - "name": "Aruba", - "numeric3": "533", - "alpha2": "AW" - }, - { - "name": "Australia", - "numeric3": "036", - "alpha2": "AU" - }, - { - "name": "Austria", - "numeric3": "040", - "alpha2": "AT" - }, - { - "name": "Azerbaijan", - "numeric3": "031", - "alpha2": "AZ" - }, - { - "name": "Bahamas (the)", - "numeric3": "044", - "alpha2": "BS" - }, - { - "name": "Bahrain", - "numeric3": "048", - "alpha2": "BH" - }, - { - "name": "Bangladesh", - "numeric3": "050", - "alpha2": "BD" - }, - { - "name": "Barbados", - "numeric3": "052", - "alpha2": "BB" - }, - { - "name": "Belarus", - "numeric3": "112", - "alpha2": "BY" - }, - { - "name": "Belgium", - "numeric3": "056", - "alpha2": "BE" - }, - { - "name": "Belize", - "numeric3": "084", - "alpha2": "BZ" - }, - { - "name": "Benin", - "numeric3": "204", - "alpha2": "BJ" - }, - { - "name": "Bermuda", - "numeric3": "060", - "alpha2": "BM" - }, - { - "name": "Bhutan", - "numeric3": "064", - "alpha2": "BT" - }, - { - "name": "Bolivia (Plurinational State of)", - "numeric3": "068", - "alpha2": "BO" - }, - { - "name": "Bonaire Sint Eustatius Saba", - "numeric3": "535", - "alpha2": "BQ" - }, - { - "name": "Bosnia and Herzegovina", - "numeric3": "070", - "alpha2": "BA" - }, - { - "name": "Botswana", - "numeric3": "072", - "alpha2": "BW" - }, - { - "name": "Bouvet Island", - "numeric3": "074", - "alpha2": "BV" - }, - { - "name": "Brazil", - "numeric3": "076", - "alpha2": "BR" - }, - { - "name": "British Indian Ocean Territory (the)", - "numeric3": "086", - "alpha2": "IO" - }, - { - "name": "Brunei Darussalam", - "numeric3": "096", - "alpha2": "BN" - }, - { - "name": "Bulgaria", - "numeric3": "100", - "alpha2": "BG" - }, - { - "name": "Burkina Faso", - "numeric3": "854", - "alpha2": "BF" - }, - { - "name": "Burundi", - "numeric3": "108", - "alpha2": "BI" - }, - { - "name": "Cabo Verde", - "numeric3": "132", - "alpha2": "CV" - }, - { - "name": "Cambodia", - "numeric3": "116", - "alpha2": "KH" - }, - { - "name": "Cameroon", - "numeric3": "120", - "alpha2": "CM" - }, - { - "name": "Canada", - "numeric3": "124", - "alpha2": "CA" - }, - { - "name": "Cayman Islands (the)", - "numeric3": "136", - "alpha2": "KY" - }, - { - "name": "Central African Republic (the)", - "numeric3": "140", - "alpha2": "CF" - }, - { - "name": "Chad", - "numeric3": "148", - "alpha2": "TD" - }, - { - "name": "Chile", - "numeric3": "152", - "alpha2": "CL" - }, - { - "name": "China", - "numeric3": "156", - "alpha2": "CN" - }, - { - "name": "Christmas Island", - "numeric3": "162", - "alpha2": "CX" - }, - { - "name": "Cocos (Keeling) Islands (the)", - "numeric3": "166", - "alpha2": "CC" - }, - { - "name": "Colombia", - "numeric3": "170", - "alpha2": "CO" - }, - { - "name": "Comoros (the)", - "numeric3": "174", - "alpha2": "KM" - }, - { - "name": "Congo (the Democratic Republic of the)", - "numeric3": "180", - "alpha2": "CD" - }, - { - "name": "Congo (the)", - "numeric3": "178", - "alpha2": "CG" - }, - { - "name": "Cook Islands (the)", - "numeric3": "184", - "alpha2": "CK" - }, - { - "name": "Costa Rica", - "numeric3": "188", - "alpha2": "CR" - }, - { - "name": "Côte d'Ivoire", - "numeric3": "384", - "alpha2": "CI" - }, - { - "name": "Croatia", - "numeric3": "191", - "alpha2": "HR" - }, - { - "name": "Cuba", - "numeric3": "192", - "alpha2": "CU" - }, - { - "name": "Curaçao", - "numeric3": "531", - "alpha2": "CW" - }, - { - "name": "Cyprus", - "numeric3": "196", - "alpha2": "CY" - }, - { - "name": "Czechia", - "numeric3": "203", - "alpha2": "CZ" - }, - { - "name": "Denmark", - "numeric3": "208", - "alpha2": "DK" - }, - { - "name": "Djibouti", - "numeric3": "262", - "alpha2": "DJ" - }, - { - "name": "Dominica", - "numeric3": "212", - "alpha2": "DM" - }, - { - "name": "Dominican Republic (the)", - "numeric3": "214", - "alpha2": "DO" - }, - { - "name": "Ecuador", - "numeric3": "218", - "alpha2": "EC" - }, - { - "name": "Egypt", - "numeric3": "818", - "alpha2": "EG" - }, - { - "name": "El Salvador", - "numeric3": "222", - "alpha2": "SV" - }, - { - "name": "Equatorial Guinea", - "numeric3": "226", - "alpha2": "GQ" - }, - { - "name": "Eritrea", - "numeric3": "232", - "alpha2": "ER" - }, - { - "name": "Estonia", - "numeric3": "233", - "alpha2": "EE" - }, - { - "name": "Eswatini", - "numeric3": "748", - "alpha2": "SZ" - }, - { - "name": "Ethiopia", - "numeric3": "231", - "alpha2": "ET" - }, - { - "name": "Falkland Islands (the) Malvinas", - "numeric3": "238", - "alpha2": "FK" - }, - { - "name": "Faroe Islands (the)", - "numeric3": "234", - "alpha2": "FO" - }, - { - "name": "Fiji", - "numeric3": "242", - "alpha2": "FJ" - }, - { - "name": "Finland", - "numeric3": "246", - "alpha2": "FI" - }, - { - "name": "France", - "numeric3": "250", - "alpha2": "FR" - }, - { - "name": "French Guiana", - "numeric3": "254", - "alpha2": "GF" - }, - { - "name": "French Polynesia", - "numeric3": "258", - "alpha2": "PF" - }, - { - "name": "French Southern Territories (the)", - "numeric3": "260", - "alpha2": "TF" - }, - { - "name": "Gabon", - "numeric3": "266", - "alpha2": "GA" - }, - { - "name": "Gambia (the)", - "numeric3": "270", - "alpha2": "GM" - }, - { - "name": "Georgia", - "numeric3": "268", - "alpha2": "GE" - }, - { - "name": "Germany", - "numeric3": "276", - "alpha2": "DE" - }, - { - "name": "Ghana", - "numeric3": "288", - "alpha2": "GH" - }, - { - "name": "Gibraltar", - "numeric3": "292", - "alpha2": "GI" - }, - { - "name": "Greece", - "numeric3": "300", - "alpha2": "GR" - }, - { - "name": "Greenland", - "numeric3": "304", - "alpha2": "GL" - }, - { - "name": "Grenada", - "numeric3": "308", - "alpha2": "GD" - }, - { - "name": "Guadeloupe", - "numeric3": "312", - "alpha2": "GP" - }, - { - "name": "Guam", - "numeric3": "316", - "alpha2": "GU" - }, - { - "name": "Guatemala", - "numeric3": "320", - "alpha2": "GT" - }, - { - "name": "Guernsey", - "numeric3": "831", - "alpha2": "GG" - }, - { - "name": "Guinea", - "numeric3": "324", - "alpha2": "GN" - }, - { - "name": "Guinea-Bissau", - "numeric3": "624", - "alpha2": "GW" - }, - { - "name": "Guyana", - "numeric3": "328", - "alpha2": "GY" - }, - { - "name": "Haiti", - "numeric3": "332", - "alpha2": "HT" - }, - { - "name": "Heard Island and McDonald Islands", - "numeric3": "334", - "alpha2": "HM" - }, - { - "name": "Holy See (the)", - "numeric3": "336", - "alpha2": "VA" - }, - { - "name": "Honduras", - "numeric3": "340", - "alpha2": "HN" - }, - { - "name": "Hong Kong", - "numeric3": "344", - "alpha2": "HK" - }, - { - "name": "Hungary", - "numeric3": "348", - "alpha2": "HU" - }, - { - "name": "Iceland", - "numeric3": "352", - "alpha2": "IS" - }, - { - "name": "India", - "numeric3": "356", - "alpha2": "IN" - }, - { - "name": "Indonesia", - "numeric3": "360", - "alpha2": "ID" - }, - { - "name": "Iran (Islamic Republic of)", - "numeric3": "364", - "alpha2": "IR" - }, - { - "name": "Iraq", - "numeric3": "368", - "alpha2": "IQ" - }, - { - "name": "Ireland", - "numeric3": "372", - "alpha2": "IE" - }, - { - "name": "Isle of Man", - "numeric3": "833", - "alpha2": "IM" - }, - { - "name": "Israel", - "numeric3": "376", - "alpha2": "IL" - }, - { - "name": "Italy", - "numeric3": "380", - "alpha2": "IT" - }, - { - "name": "Jamaica", - "numeric3": "388", - "alpha2": "JM" - }, - { - "name": "Japan", - "numeric3": "392", - "alpha2": "JP" - }, - { - "name": "Jersey", - "numeric3": "832", - "alpha2": "JE" - }, - { - "name": "Jordan", - "numeric3": "400", - "alpha2": "JO" - }, - { - "name": "Kazakhstan", - "numeric3": "398", - "alpha2": "KZ" - }, - { - "name": "Kenya", - "numeric3": "404", - "alpha2": "KE" - }, - { - "name": "Kiribati", - "numeric3": "296", - "alpha2": "KI" - }, - { - "name": "Korea (the Democratic People's Republic of)", - "numeric3": "408", - "alpha2": "KP" - }, - { - "name": "Korea (the Republic of)", - "numeric3": "410", - "alpha2": "KR" - }, - { - "name": "Kuwait", - "numeric3": "414", - "alpha2": "KW" - }, - { - "name": "Kyrgyzstan", - "numeric3": "417", - "alpha2": "KG" - }, - { - "name": "Lao People's Democratic Republic (the)", - "numeric3": "418", - "alpha2": "LA" - }, - { - "name": "Latvia", - "numeric3": "428", - "alpha2": "LV" - }, - { - "name": "Lebanon", - "numeric3": "422", - "alpha2": "LB" - }, - { - "name": "Lesotho", - "numeric3": "426", - "alpha2": "LS" - }, - { - "name": "Liberia", - "numeric3": "430", - "alpha2": "LR" - }, - { - "name": "Libya", - "numeric3": "434", - "alpha2": "LY" - }, - { - "name": "Liechtenstein", - "numeric3": "438", - "alpha2": "LI" - }, - { - "name": "Lithuania", - "numeric3": "440", - "alpha2": "LT" - }, - { - "name": "Luxembourg", - "numeric3": "442", - "alpha2": "LU" - }, - { - "name": "Macao", - "numeric3": "446", - "alpha2": "MO" - }, - { - "name": "North Macedonia", - "numeric3": "807", - "alpha2": "MK" - }, - { - "name": "Madagascar", - "numeric3": "450", - "alpha2": "MG" - }, - { - "name": "Malawi", - "numeric3": "454", - "alpha2": "MW" - }, - { - "name": "Malaysia", - "numeric3": "458", - "alpha2": "MY" - }, - { - "name": "Maldives", - "numeric3": "462", - "alpha2": "MV" - }, - { - "name": "Mali", - "numeric3": "466", - "alpha2": "ML" - }, - { - "name": "Malta", - "numeric3": "470", - "alpha2": "MT" - }, - { - "name": "Marshall Islands (the)", - "numeric3": "584", - "alpha2": "MH" - }, - { - "name": "Martinique", - "numeric3": "474", - "alpha2": "MQ" - }, - { - "name": "Mauritania", - "numeric3": "478", - "alpha2": "MR" - }, - { - "name": "Mauritius", - "numeric3": "480", - "alpha2": "MU" - }, - { - "name": "Mayotte", - "numeric3": "175", - "alpha2": "YT" - }, - { - "name": "Mexico", - "numeric3": "484", - "alpha2": "MX" - }, - { - "name": "Micronesia (Federated States of)", - "numeric3": "583", - "alpha2": "FM" - }, - { - "name": "Moldova (the Republic of)", - "numeric3": "498", - "alpha2": "MD" - }, - { - "name": "Monaco", - "numeric3": "492", - "alpha2": "MC" - }, - { - "name": "Mongolia", - "numeric3": "496", - "alpha2": "MN" - }, - { - "name": "Montenegro", - "numeric3": "499", - "alpha2": "ME" - }, - { - "name": "Montserrat", - "numeric3": "500", - "alpha2": "MS" - }, - { - "name": "Morocco", - "numeric3": "504", - "alpha2": "MA" - }, - { - "name": "Mozambique", - "numeric3": "508", - "alpha2": "MZ" - }, - { - "name": "Myanmar", - "numeric3": "104", - "alpha2": "MM" - }, - { - "name": "Namibia", - "numeric3": "516", - "alpha2": "NA" - }, - { - "name": "Nauru", - "numeric3": "520", - "alpha2": "NR" - }, - { - "name": "Nepal", - "numeric3": "524", - "alpha2": "NP" - }, - { - "name": "Netherlands (the)", - "numeric3": "528", - "alpha2": "NL" - }, - { - "name": "New Caledonia", - "numeric3": "540", - "alpha2": "NC" - }, - { - "name": "New Zealand", - "numeric3": "554", - "alpha2": "NZ" - }, - { - "name": "Nicaragua", - "numeric3": "558", - "alpha2": "NI" - }, - { - "name": "Niger (the)", - "numeric3": "562", - "alpha2": "NE" - }, - { - "name": "Nigeria", - "numeric3": "566", - "alpha2": "NG" - }, - { - "name": "Niue", - "numeric3": "570", - "alpha2": "NU" - }, - { - "name": "Norfolk Island", - "numeric3": "574", - "alpha2": "NF" - }, - { - "name": "Northern Mariana Islands (the)", - "numeric3": "580", - "alpha2": "MP" - }, - { - "name": "Norway", - "numeric3": "578", - "alpha2": "NO" - }, - { - "name": "Oman", - "numeric3": "512", - "alpha2": "OM" - }, - { - "name": "Pakistan", - "numeric3": "586", - "alpha2": "PK" - }, - { - "name": "Palau", - "numeric3": "585", - "alpha2": "PW" - }, - { - "name": "Palestine, State of", - "numeric3": "275", - "alpha2": "PS" - }, - { - "name": "Panama", - "numeric3": "591", - "alpha2": "PA" - }, - { - "name": "Papua New Guinea", - "numeric3": "598", - "alpha2": "PG" - }, - { - "name": "Paraguay", - "numeric3": "600", - "alpha2": "PY" - }, - { - "name": "Peru", - "numeric3": "604", - "alpha2": "PE" - }, - { - "name": "Philippines (the)", - "numeric3": "608", - "alpha2": "PH" - }, - { - "name": "Pitcairn", - "numeric3": "612", - "alpha2": "PN" - }, - { - "name": "Poland", - "numeric3": "616", - "alpha2": "PL" - }, - { - "name": "Portugal", - "numeric3": "620", - "alpha2": "PT" - }, - { - "name": "Puerto Rico", - "numeric3": "630", - "alpha2": "PR" - }, - { - "name": "Qatar", - "numeric3": "634", - "alpha2": "QA" - }, - { - "name": "Réunion", - "numeric3": "638", - "alpha2": "RE" - }, - { - "name": "Romania", - "numeric3": "642", - "alpha2": "RO" - }, - { - "name": "Russian Federation (the)", - "numeric3": "643", - "alpha2": "RU" - }, - { - "name": "Rwanda", - "numeric3": "646", - "alpha2": "RW" - }, - { - "name": "Saint Barthélemy", - "numeric3": "652", - "alpha2": "BL" - }, - { - "name": "Saint Helena Ascension Island Tristan da Cunha", - "numeric3": "654", - "alpha2": "SH" - }, - { - "name": "Saint Kitts and Nevis", - "numeric3": "659", - "alpha2": "KN" - }, - { - "name": "Saint Lucia", - "numeric3": "662", - "alpha2": "LC" - }, - { - "name": "Saint Martin (French part)", - "numeric3": "663", - "alpha2": "MF" - }, - { - "name": "Saint Pierre and Miquelon", - "numeric3": "666", - "alpha2": "PM" - }, - { - "name": "Saint Vincent and the Grenadines", - "numeric3": "670", - "alpha2": "VC" - }, - { - "name": "Samoa", - "numeric3": "882", - "alpha2": "WS" - }, - { - "name": "San Marino", - "numeric3": "674", - "alpha2": "SM" - }, - { - "name": "Sao Tome and Principe", - "numeric3": "678", - "alpha2": "ST" - }, - { - "name": "Saudi Arabia", - "numeric3": "682", - "alpha2": "SA" - }, - { - "name": "Senegal", - "numeric3": "686", - "alpha2": "SN" - }, - { - "name": "Serbia", - "numeric3": "688", - "alpha2": "RS" - }, - { - "name": "Seychelles", - "numeric3": "690", - "alpha2": "SC" - }, - { - "name": "Sierra Leone", - "numeric3": "694", - "alpha2": "SL" - }, - { - "name": "Singapore", - "numeric3": "702", - "alpha2": "SG" - }, - { - "name": "Sint Maarten (Dutch part)", - "numeric3": "534", - "alpha2": "SX" - }, - { - "name": "Slovakia", - "numeric3": "703", - "alpha2": "SK" - }, - { - "name": "Slovenia", - "numeric3": "705", - "alpha2": "SI" - }, - { - "name": "Solomon Islands", - "numeric3": "090", - "alpha2": "SB" - }, - { - "name": "Somalia", - "numeric3": "706", - "alpha2": "SO" - }, - { - "name": "South Africa", - "numeric3": "710", - "alpha2": "ZA" - }, - { - "name": "South Georgia and the South Sandwich Islands", - "numeric3": "239", - "alpha2": "GS" - }, - { - "name": "South Sudan", - "numeric3": "728", - "alpha2": "SS" - }, - { - "name": "Spain", - "numeric3": "724", - "alpha2": "ES" - }, - { - "name": "Sri Lanka", - "numeric3": "144", - "alpha2": "LK" - }, - { - "name": "Sudan (the)", - "numeric3": "729", - "alpha2": "SD" - }, - { - "name": "Suriname", - "numeric3": "740", - "alpha2": "SR" - }, - { - "name": "Svalbard Jan Mayen", - "numeric3": "744", - "alpha2": "SJ" - }, - { - "name": "Sweden", - "numeric3": "752", - "alpha2": "SE" - }, - { - "name": "Switzerland", - "numeric3": "756", - "alpha2": "CH" - }, - { - "name": "Syrian Arab Republic (the)", - "numeric3": "760", - "alpha2": "SY" - }, - { - "name": "Taiwan (Province of China)", - "numeric3": "158", - "alpha2": "TW" - }, - { - "name": "Tajikistan", - "numeric3": "762", - "alpha2": "TJ" - }, - { - "name": "Tanzania, the United Republic of", - "numeric3": "834", - "alpha2": "TZ" - }, - { - "name": "Thailand", - "numeric3": "764", - "alpha2": "TH" - }, - { - "name": "Timor-Leste", - "numeric3": "626", - "alpha2": "TL" - }, - { - "name": "Togo", - "numeric3": "768", - "alpha2": "TG" - }, - { - "name": "Tokelau", - "numeric3": "772", - "alpha2": "TK" - }, - { - "name": "Tonga", - "numeric3": "776", - "alpha2": "TO" - }, - { - "name": "Trinidad and Tobago", - "numeric3": "780", - "alpha2": "TT" - }, - { - "name": "Tunisia", - "numeric3": "788", - "alpha2": "TN" - }, - { - "name": "Turkey", - "numeric3": "792", - "alpha2": "TR" - }, - { - "name": "Turkmenistan", - "numeric3": "795", - "alpha2": "TM" - }, - { - "name": "Turks and Caicos Islands (the)", - "numeric3": "796", - "alpha2": "TC" - }, - { - "name": "Tuvalu", - "numeric3": "798", - "alpha2": "TV" - }, - { - "name": "Uganda", - "numeric3": "800", - "alpha2": "UG" - }, - { - "name": "Ukraine", - "numeric3": "804", - "alpha2": "UA" - }, - { - "name": "United Arab Emirates (the)", - "numeric3": "784", - "alpha2": "AE" - }, - { - "name": "United Kingdom of Great Britain and Northern Ireland (the)", - "numeric3": "826", - "alpha2": "GB" - }, - { - "name": "United States Minor Outlying Islands (the)", - "numeric3": "581", - "alpha2": "UM" - }, - { - "name": "United States of America (the)", - "numeric3": "840", - "alpha2": "US" - }, - { - "name": "Uruguay", - "numeric3": "858", - "alpha2": "UY" - }, - { - "name": "Uzbekistan", - "numeric3": "860", - "alpha2": "UZ" - }, - { - "name": "Vanuatu", - "numeric3": "548", - "alpha2": "VU" - }, - { - "name": "Venezuela (Bolivarian Republic of)", - "numeric3": "862", - "alpha2": "VE" - }, - { - "name": "Viet Nam", - "numeric3": "704", - "alpha2": "VN" - }, - { - "name": "Virgin Islands (British)", - "numeric3": "092", - "alpha2": "VG" - }, - { - "name": "Virgin Islands (U.S.)", - "numeric3": "850", - "alpha2": "VI" - }, - { - "name": "Wallis and Futuna", - "numeric3": "876", - "alpha2": "WF" - }, - { - "name": "Western Sahara", - "numeric3": "732", - "alpha2": "EH" - }, - { - "name": "Yemen", - "numeric3": "887", - "alpha2": "YE" - }, - { - "name": "Zambia", - "numeric3": "894", - "alpha2": "ZM" - }, - { - "name": "Zimbabwe", - "numeric3": "716", - "alpha2": "ZW" - } - ]; - - return { - /** - * @param code country code corresponding to alpha2, alpha3 or numeric3 - * @returns {alpha2: String, numeric3: String, name: String} - */ - lookup: function (code) { - if (!code) { - return; - } - for (let i = 0; i < codes.length; i++) { - const codeMap = codes[i]; - if (String(code).toUpperCase() === codeMap.alpha2 || Number(code) === Number(codeMap.numeric3)) { - return codeMap; - } - } - }, - codes: codes - } -}()); diff --git a/js/randojs-2.0.0.js b/js/randojs-2.0.0.js deleted file mode 100644 index 099b909..0000000 --- a/js/randojs-2.0.0.js +++ /dev/null @@ -1,6 +0,0 @@ -// https://github.com/nastyox/Rando.js -function rando(a,b,e){var g=function(f){return"undefined"===typeof f},k=function(f){return"number"===typeof f&&!isNaN(f)},d=function(f){return!g(f)&&null!==f&&f.constructor===Array},c=function(){try{for(var f,q=[],r;30>(r="."+q.join("")).length;){f=(window.crypto||window.msCrypto).getRandomValues(new Uint32Array(5));for(var p=0;pf[p]?f[p].toString().slice(1):"";0b){var m=b;b=a;a=m}return c()*(b-a)+a}if(d(a)&&0 -rando();if(k(a)&&g(b))return 0<=a?rando(0,a):rando(a,0);if(k(a)&&"string"===typeof b&&"float"==b.toLowerCase().trim()&&g(e))return 0<=a?rando(0,a,"float"):rando(a,0,"float");if(k(a)&&k(b)&&g(e))return a>b&&(m=b,b=a,a=m),a=Math.floor(a),b=Math.floor(b),Math.floor(c()*(b-a+1)+a);if("string"===typeof a&&0b){var m=b;b=a;a=m}for(c=a;c<=b;c++)d[d.length]=c}for(c=d.length-1;0") } - controls.unavailableTable = $("#unavailableTable").DataTable({ + controls.unavailableTable = new DataTable("#unavailableTable", { columns: unavailableColumns, columnDefs: [{ "defaultContent": "", @@ -2358,7 +2359,7 @@ const bulk = (function () { }, setupControls: function () { function checkTheme() { - if (DarkMode.getColorScheme() === "dark") { + if (controls.darkMode.is(":checked")) { controls.uploadFrequency.updateOptions({ theme: { mode: 'dark' @@ -2372,7 +2373,6 @@ const bulk = (function () { }); } } - controls.darkMode.change(function () { checkTheme(); }); @@ -2392,7 +2392,7 @@ const bulk = (function () { if (!can.submit) { return; } - localStorage.setItem(delaySubmitKey, new Date()); + localStorage.setItem(delaySubmitKey, moment().format()); countdownCheck(delaySubmitKey, controls.btnSubmit, delay15SecMs, "submit"); internal.reset(); diff --git a/js/youtube-metadata.js b/js/youtube-metadata.js index f6da84e..abc826c 100644 --- a/js/youtube-metadata.js +++ b/js/youtube-metadata.js @@ -28,12 +28,12 @@ let value = localStorage.getItem(key); if (!moment(value).isValid()) { console.warn('value for %s was not a valid date, resetting to now', key); - localStorage.setItem(key, new Date()); + localStorage.setItem(key, moment().format()); value = localStorage.getItem(key); } if (moment(value).isAfter(moment())) { console.warn('value for %s was set in the future, resetting to now', key); - localStorage.setItem(key, new Date()); + localStorage.setItem(key, moment().format()); value = localStorage.getItem(key); } let count = (delay - moment().diff(value)) / 1000; @@ -1615,13 +1615,12 @@ }, setupControls: function () { function checkTheme() { - if (DarkMode.getColorScheme() === "dark") { + if (controls.darkMode.is(":checked")) { elements.hljsTheme.attr("href", "//cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.3.1/build/styles/stackoverflow-dark.min.css"); } else { elements.hljsTheme.attr("href", "//cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.3.1/build/styles/stackoverflow-light.min.css") } } - controls.darkMode.change(function () { checkTheme(); }); @@ -1639,7 +1638,7 @@ if (!can.submit) { return; } - localStorage.setItem(delaySubmitKey, new Date()); + localStorage.setItem(delaySubmitKey, moment().format()); countdownCheck(delaySubmitKey, controls.btnSubmit, delay5SecMs, "submit"); exportData = {}; diff --git a/js/yt-category-translator.js b/js/yt-category-translator.js deleted file mode 100644 index fc0207d..0000000 --- a/js/yt-category-translator.js +++ /dev/null @@ -1,350 +0,0 @@ -/** - * Implementation to quickly translate YouTube category codes. - * - * @link https://developers.google.com/youtube/v3/docs/videoCategories/list?apix_params=%7B%22part%22%3A%5B%22snippet%22%5D%2C%22regionCode%22%3A%22US%22%7D - */ -const ytCategory = (function () { - 'use strict'; - - const categories = [ - { - "kind": "youtube#videoCategory", - "etag": "grPOPYEUUZN3ltuDUGEWlrTR90U", - "id": "1", - "snippet": { - "title": "Film & Animation", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "Q0xgUf8BFM8rW3W0R9wNq809xyA", - "id": "2", - "snippet": { - "title": "Autos & Vehicles", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "qnpwjh5QlWM5hrnZCvHisquztC4", - "id": "10", - "snippet": { - "title": "Music", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "HyFIixS5BZaoBdkQdLzPdoXWipg", - "id": "15", - "snippet": { - "title": "Pets & Animals", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "PNU8SwXhjsF90fmkilVohofOi4I", - "id": "17", - "snippet": { - "title": "Sports", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "5kFljz9YJ4lEgSfVwHWi5kTAwAs", - "id": "18", - "snippet": { - "title": "Short Movies", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "ANnLQyzEA_9m3bMyJXMhKTCOiyg", - "id": "19", - "snippet": { - "title": "Travel & Events", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "0Hh6gbZ9zWjnV3sfdZjKB5LQr6E", - "id": "20", - "snippet": { - "title": "Gaming", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "q8Cp4pUfCD8Fuh8VJ_yl5cBCVNw", - "id": "21", - "snippet": { - "title": "Videoblogging", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "cHDaaqPDZsJT1FPr1-MwtyIhR28", - "id": "22", - "snippet": { - "title": "People & Blogs", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "3Uz364xBbKY50a2s0XQlv-gXJds", - "id": "23", - "snippet": { - "title": "Comedy", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "0srcLUqQzO7-NGLF7QnhdVzJQmY", - "id": "24", - "snippet": { - "title": "Entertainment", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "bQlQMjmYX7DyFkX4w3kT0osJyIc", - "id": "25", - "snippet": { - "title": "News & Politics", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "Y06N41HP_WlZmeREZvkGF0HW5pg", - "id": "26", - "snippet": { - "title": "Howto & Style", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "yBaNkLx4sX9NcDmFgAmxQcV4Y30", - "id": "27", - "snippet": { - "title": "Education", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "Mxy3A-SkmnR7MhJDZRS4DuAIbQA", - "id": "28", - "snippet": { - "title": "Science & Technology", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "p3lEirEJApyEkuWpaGEHoF-m-aA", - "id": "29", - "snippet": { - "title": "Nonprofits & Activism", - "assignable": true, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "4pIHL_AdN2kO7btAGAP1TvPucNk", - "id": "30", - "snippet": { - "title": "Movies", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "Iqol1myDwh2AuOnxjtn2AfYwJTU", - "id": "31", - "snippet": { - "title": "Anime/Animation", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "tzhBKCBcYWZLPai5INY4id91ss8", - "id": "32", - "snippet": { - "title": "Action/Adventure", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "ii8nBGYpKyl6FyzP3cmBCevdrbs", - "id": "33", - "snippet": { - "title": "Classics", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "Y0u9UAQCCGp60G11Arac5Mp46z4", - "id": "34", - "snippet": { - "title": "Comedy", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "_YDnyT205AMuX8etu8loOiQjbD4", - "id": "35", - "snippet": { - "title": "Documentary", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "eAl2b-uqIGRDgnlMa0EsGZjXmWg", - "id": "36", - "snippet": { - "title": "Drama", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "HDAW2HFOt3SqeDI00X-eL7OELfY", - "id": "37", - "snippet": { - "title": "Family", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "QHiWh3niw5hjDrim85M8IGF45eE", - "id": "38", - "snippet": { - "title": "Foreign", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "ztKcSS7GpH9uEyZk9nQCdNujvGg", - "id": "39", - "snippet": { - "title": "Horror", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "Ids1sm8QFeSo_cDlpcUNrnEBYWA", - "id": "40", - "snippet": { - "title": "Sci-Fi/Fantasy", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "qhfgS7MzzZHIy_UZ1dlawl1GbnY", - "id": "41", - "snippet": { - "title": "Thriller", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "TxVSfGoUyT7CJ7h7ebjg4vhIt6g", - "id": "42", - "snippet": { - "title": "Shorts", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "o9w6eNqzjHPnNbKDujnQd8pklXM", - "id": "43", - "snippet": { - "title": "Shows", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - }, - { - "kind": "youtube#videoCategory", - "etag": "mLdyKd0VgXKDI6GevTLBAcvRlIU", - "id": "44", - "snippet": { - "title": "Trailers", - "assignable": false, - "channelId": "UCBR8-60-B28hp2BmDPdntcQ" - } - } - ]; - - return { - /** - * @param code video categoryId - * @returns category title - */ - lookup: function (code) { - if (!code) { - return; - } - for (let i = 0; i < categories.length; i++) { - const category = categories[i]; - - if (Number(category.id) === Number(code)) { - return category.snippet.title; - } - } - } - } -}()); From 83050a77b6f8121425b5600cb1beb6e87e719000 Mon Sep 17 00:00:00 2001 From: Matthew Wright Date: Sun, 8 Sep 2024 14:11:25 -0400 Subject: [PATCH 2/3] darkmode tweaks --- css/youtube-metadata.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/css/youtube-metadata.css b/css/youtube-metadata.css index 9ccba93..8e68e08 100644 --- a/css/youtube-metadata.css +++ b/css/youtube-metadata.css @@ -148,6 +148,13 @@ html[data-bs-theme='dark'] a { color: lightskyblue; } +html[data-bs-theme='dark'] .nav-link { + color: rgba(250,250,250,.55); +} +html[data-bs-theme='dark'] .nav-link:hover { + color: rgba(250,250,250,.7); +} + html[data-bs-theme='dark'] .progress-bar { color: #fff; } From 2d0d8fe976ce319e1bec5bb31c0c74c8afbc8a05 Mon Sep 17 00:00:00 2001 From: Matthew Wright Date: Wed, 9 Oct 2024 08:02:37 -0400 Subject: [PATCH 3/3] google audit changes --- PRIVACY.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/PRIVACY.md b/PRIVACY.md index 781cf71..7d7c32c 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -1,20 +1,22 @@ # Privacy This application uses YouTube API Services and Google Maps Services. +The application does not access any API data relating to users and does not store API data. - http://www.google.com/policies/privacy -Basic user data is stored/collected by Google Analytics and Plausible and is being used for monitoring traffic and referrals. -Data collected by these services is not being shared with any other parties. +Basic user data is stored/collected by Plausible and is being used for monitoring traffic and referrals. +Data collected by these services is not being shared with any other parties. This application does not allow third parties to serve advertisements. +Plausible does not use cookies and complies with GDPR, CCPA, and PECR, more information can be found in their data policy page. -- http://www.google.com/policies/privacy -- https://plausible.io/privacy +- https://plausible.io/data-policy -Additional external calls are made to Filmot for archived video metadata. +Additional external calls may be made to Filmot for videos that no longer exist to check for archived data. - https://filmot.com/privacy Additional external calls are made to my Heroku [cors-anywhere](https://github.com/Rob--W/cors-anywhere) proxy to resolve custom channel URLs to channel ids. +Calls to these services do not store any data. - https://www.heroku.com/policy/security