commit a1434db8f84d5c6046016a79f0b4a80891e6dae7 Author: danial23 Date: Sun Jan 14 20:39:42 2024 -0500 Initial commit diff --git a/extension/icon128.png b/extension/icon128.png new file mode 100644 index 0000000..a0e4f93 Binary files /dev/null and b/extension/icon128.png differ diff --git a/extension/icon16.png b/extension/icon16.png new file mode 100644 index 0000000..425d745 Binary files /dev/null and b/extension/icon16.png differ diff --git a/extension/icon32.png b/extension/icon32.png new file mode 100644 index 0000000..d54d634 Binary files /dev/null and b/extension/icon32.png differ diff --git a/extension/icon48.png b/extension/icon48.png new file mode 100644 index 0000000..ef332fd Binary files /dev/null and b/extension/icon48.png differ diff --git a/extension/manifest.json b/extension/manifest.json new file mode 100644 index 0000000..357a3f4 --- /dev/null +++ b/extension/manifest.json @@ -0,0 +1,22 @@ +{ + "manifest_version": 3, + "name": "Effie's TikTok Extension", + "description": "Search words on Wiktionary.org", + "version": "0.1.0", + "minimum_chrome_version": "100", + "icons": { + "16": "icon16.png", + "32": "icon32.png", + "48": "icon48.png", + "128": "icon128.png" + }, + "background": { + "service_worker": "service-worker.js", + "type": "module" + }, + "action": { + "default_popup": "popup.html" + }, + "permissions": ["cookies"], + "host_permissions": ["*://*.tiktok.com/*"] +} diff --git a/extension/popup.html b/extension/popup.html new file mode 100644 index 0000000..43aee5d --- /dev/null +++ b/extension/popup.html @@ -0,0 +1,34 @@ + + + + + + + +

People who don't follow you back:

+ + + + + + +
+ + + diff --git a/extension/popup.js b/extension/popup.js new file mode 100644 index 0000000..84a1464 --- /dev/null +++ b/extension/popup.js @@ -0,0 +1,58 @@ +const table = document.getElementById("table"); +const rowBlueprint = table.getElementsByTagName("tr")[0]; +rowBlueprint.remove(); +let token = ""; +let maxCursor = new Date().getTime(); + +async function getToken() { + let msToken = ""; + + chrome.runtime.sendMessage(null, (response) => { + msToken = response; + }); + + while (!msToken) await new Promise((r) => setTimeout(r, 200)); + + token = msToken; + return msToken; +} + +await getToken(); + +while (true) { + let responseText = await ( + await fetch( + "https://www.tiktok.com/api/user/list/?" + + new URLSearchParams({ + count: 199, + maxCursor: maxCursor, + minCursor: maxCursor - 2000000, + scene: 21, + msToken: token, + }), + ) + ).text(); + + let data = JSON.parse(responseText); + if ("userList" in data) { + for (const userData of data.userList) { + if (userData.user.relation == 2) continue; + addRow(userData.user); + } + + maxCursor = data.minCursor; + } else break; + + if (!data.hasMore) break; +} + +function addRow(user) { + let row = rowBlueprint.cloneNode(true); + let cells = row.getElementsByTagName("td"); + cells[0].getElementsByTagName("img")[0].src = user.avatarThumb; + cells[1].textContent = user.nickname; + let id = cells[2].getElementsByTagName("a")[0]; + id.textContent = user.uniqueId; + id.href = "https://tiktok.com/@" + user.uniqueId; + table.appendChild(row); +} diff --git a/extension/service-worker.js b/extension/service-worker.js new file mode 100644 index 0000000..ed2884c --- /dev/null +++ b/extension/service-worker.js @@ -0,0 +1,11 @@ +chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { + chrome.cookies + .get({ + url: "https://tiktok.com", + name: "msToken", + }) + .then((cookie) => { + sendResponse(cookie.value); + }); + return true; +});