Skip to content

Commit 9b73d14

Browse files
committed
Fixed get.json() to try both JSON + JSON5 ↞ [auto-sync from https://github.com/adamlui/ai-web-extensions/tree/main/googlegpt]
1 parent 9877cc9 commit 9b73d14

1 file changed

Lines changed: 24 additions & 21 deletions

File tree

chatgpt/googlegpt/googlegpt.user.js

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
// @description:zu Yengeza izimpendulo ze-AI ku-Google Search (inikwa amandla yi-Google Gemma + GPT-4o!)
150150
// @author KudoAI
151151
// @namespace https://kudoai.com
152-
// @version 2025.9.16.1
152+
// @version 2025.9.16.2
153153
// @license MIT
154154
// @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22170.667%22%20height=%22170.667%22%3E%3Cstyle%3E:root%7B--fill:%23000%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--fill:%23fff%7D%7D%3C/style%3E%3Cpath%20fill=%22var(--fill)%22%20d=%22M82.346%20159.79c-18.113-1.815-31.78-9.013-45.921-24.184C23.197%20121.416%2017.333%20106.18%2017.333%2086c0-21.982%205.984-36.245%2021.87-52.131C55.33%2017.74%2069.27%2011.867%2091.416%2011.867c17.574%200%2029.679%203.924%2044.309%2014.363l8.57%206.116-8.705%208.705-8.704%208.704-4.288-3.608c-13.91-11.704-35.932-14.167-53.085-5.939-3.4%201.631-9.833%206.601-14.297%2011.045C44.669%2061.753%2040.95%2070.811%2040.95%2086c0%2014.342%203.594%2023.555%2013.26%2033.995%2019.088%2020.618%2048.46%2022.539%2070.457%204.608l5.333-4.348%2011.333%203.844c6.234%202.114%2011.54%203.857%2011.791%203.873.252.015-2.037%203.008-5.087%206.65-6.343%207.577-20.148%2017.217-30.493%2021.295-8.764%203.454-23.358%205.06-35.198%203.873zM92%2086.333V74.667h60.648l-11.41%2011.41-11.411%2011.41-18.914.257L92%2098z%22/%3E%3C/svg%3E
155155
// @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22170.667%22%20height=%22170.667%22%3E%3Cstyle%3E:root%7B--fill:%23000%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--fill:%23fff%7D%7D%3C/style%3E%3Cpath%20fill=%22var(--fill)%22%20d=%22M82.346%20159.79c-18.113-1.815-31.78-9.013-45.921-24.184C23.197%20121.416%2017.333%20106.18%2017.333%2086c0-21.982%205.984-36.245%2021.87-52.131C55.33%2017.74%2069.27%2011.867%2091.416%2011.867c17.574%200%2029.679%203.924%2044.309%2014.363l8.57%206.116-8.705%208.705-8.704%208.704-4.288-3.608c-13.91-11.704-35.932-14.167-53.085-5.939-3.4%201.631-9.833%206.601-14.297%2011.045C44.669%2061.753%2040.95%2070.811%2040.95%2086c0%2014.342%203.594%2023.555%2013.26%2033.995%2019.088%2020.618%2048.46%2022.539%2070.457%204.608l5.333-4.348%2011.333%203.844c6.234%202.114%2011.54%203.857%2011.791%203.873.252.015-2.037%203.008-5.087%206.65-6.343%207.577-20.148%2017.217-30.493%2021.295-8.764%203.454-23.358%205.06-35.198%203.873zM92%2086.333V74.667h60.648l-11.41%2011.41-11.411%2011.41-18.914.257L92%2098z%22/%3E%3C/svg%3E
@@ -1521,30 +1521,33 @@
15211521

15221522
window.get = {
15231523

1524-
json(url) {
1524+
json(url) { // requires lib/json5.js
15251525
return new Promise((resolve, reject) => {
1526-
let retryCnt = 0;
1527-
(function getData(url) { xhr({
1528-
method: 'GET', url: url, onload: resp => {
1529-
if (resp.status == 404 && retryCnt < 1) { // try other format
1530-
retryCnt++ ; getData(url.endsWith('.json') ? url + '5' : url.slice(0, -1))
1531-
} else handleResp(resp, resolve, reject)
1532-
},
1533-
onerror: err => reject(new Error(`LOAD ERROR: ${err.message}`))
1534-
})})(url)
1535-
1536-
function handleResp(resp, resolve, reject) {
1537-
if (resp.status >= 300) { // status error
1538-
const errType = resp.status >= 300 && resp.status < 400 ? 'REDIRECT'
1539-
: resp.status >= 400 && resp.status < 500 ? 'CLIENT' : 'SERVER'
1540-
return reject(new Error(`${errType} ERROR: ${resp.status}`))
1541-
}
1542-
try { resolve(JSON5.parse(resp.responseText)) }
1543-
catch (err) { reject(new Error(`PARSE ERROR: ${err.message}`)) }
1526+
let retryCnt = 0 ; getData(url)
1527+
1528+
function getData(currentURL) {
1529+
xhr({
1530+
method: 'GET', url: currentURL,
1531+
onload: ({ responseText, status }) => {
1532+
if (status >= 300 && status != 404) {
1533+
const errType = status < 400 ? 'REDIRECT' : status < 500 ? 'CLIENT' : 'SERVER'
1534+
return reject(new Error(`${errType} ERROR: ${status}`))
1535+
}
1536+
try {
1537+
resolve(currentURL.endsWith('.json') ? JSON.parse(responseText)
1538+
: JSON5.parse(responseText))
1539+
} catch (err) {
1540+
retryCnt < 1 ? tryAltDataFormat() : reject(new Error(`PARSE ERROR: ${err.message}`)) }
1541+
},
1542+
onerror: err => {
1543+
retryCnt < 1 ? tryAltDataFormat() : reject(new Error(`LOAD ERROR: ${err.message}`)) }
1544+
})
15441545
}
1546+
1547+
function tryAltDataFormat() {
1548+
retryCnt++ ; getData(url.endsWith('.json') ? url + '5' : url.slice(0, -1)) }
15451549
})
15461550
},
1547-
15481551
async related(query) {
15491552

15501553
// Init API attempt props

0 commit comments

Comments
 (0)