diff --git a/README.md b/README.md index c7f45f2..0c6c47a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ - `index.html`:工具入口 - `channel-recommendation.html`:包名、品类、国家 → 渠道优先级建议 -- `link-generator.html`:登录后粘贴原始 Click Link,并转换为 Mintegral、TaurusX、LoopMe、NewsBreak 或 Midas 平台宏 +- `link-generator.html`:登录后粘贴原始 Click Link,并转换为 Mintegral、TaurusX、LoopMe、NewsBreak、Midas 或 Adsterra 平台宏 - `login.html`:输入 Shareit ID,本机设置密码并扫码绑定 Google Authenticator - `link-history.html`:按登录用户查看独立的链接记录 diff --git a/assets/data/link-templates.js b/assets/data/link-templates.js index af8b4d9..4eed09c 100644 --- a/assets/data/link-templates.js +++ b/assets/data/link-templates.js @@ -263,5 +263,46 @@ window.LINK_TEMPLATES = [ } } } + }, + { + name: 'Adsterra', + platformCode: 'P_API_Adsterra', + status: 'Click 已确认', + sample: 'https://trident.bigpinggo.com/l/click?advid=30&campid=91513413&platform=P_API_Adsterra&pkg=org.melbet.client&clickid={click_id}&offer_name={offer_name}&creative_id={creative_id}&creative_name={creative_name}&affiliate_id={affiliate_id}&idfa={idfa}&gaid={gaid}&imei={imei}&android_id={android_id}&mac={mac}&oaid={oaid}&uagent={ua}&os_platform={os_platform}&os_version={os_version}&device_model={device_model}&ip={ip}&country_code={country_code}&ext={ext}&rta_token={rta_token}&san_campid=91513413&adset_id=-1&c_cto=0', + macros: [ + ['##SUB_ID_SHORT(action)##', 'Click ID'], + ['##PLACEMENT_ID##', 'Placement / affiliate ID'], + ['##BANNER_ID##', 'Creative ID'], + ['##USERAGENT##', 'User agent'], + ['##USER_OS##', 'Device operating system'], + ['##USER_OS_VER##', 'Operating system version'], + ['##REMOTE_IP##', 'IP address'], + ['##COUNTRY_CODE##', 'Country code'] + ], + links: { + click: { + removeParams: ['rta_token', 'san_campid', 'adset_id', 'c_cto'], + mappings: { + clickid: '##SUB_ID_SHORT(action)##', + offer_name: '', + creative_id: '', + creative_name: '', + affiliate_id: '##PLACEMENT_ID##', + idfa: '', + gaid: '', + imei: '', + android_id: '', + mac: '', + oaid: '', + uagent: '', + os_platform: '##USER_OS##', + os_version: '##USER_OS_VER##', + device_model: '', + ip: '##REMOTE_IP##', + country_code: 'PH', + ext: '' + } + } + } } ]; diff --git a/assets/link-converter-core.js b/assets/link-converter-core.js index ca0b587..a656c9c 100644 --- a/assets/link-converter-core.js +++ b/assets/link-converter-core.js @@ -29,6 +29,7 @@ const base = withoutHash.slice(0, queryIndex); const query = withoutHash.slice(queryIndex + 1); const replacements = { platform: template.platformCode, ...linkTemplate.mappings }; + const removedParams = new Set(linkTemplate.removeParams || []); const changes = []; let parameterCount = 0; @@ -39,12 +40,16 @@ const rawKey = equalIndex >= 0 ? segment.slice(0, equalIndex) : segment; const rawValue = equalIndex >= 0 ? segment.slice(equalIndex + 1) : ''; const key = decodeKey(rawKey); + if (removedParams.has(key)) { + changes.push({ key, from:rawValue, to:'', removed:true }); + return null; + } if (!Object.prototype.hasOwnProperty.call(replacements, key)) return segment; const replacement = String(replacements[key] ?? ''); - if (rawValue !== replacement) changes.push({ key, from: rawValue, to: replacement }); + if (rawValue !== replacement) changes.push({ key, from: rawValue, to: replacement, removed:false }); return `${rawKey}=${replacement}`; - }); + }).filter((segment) => segment !== null); return { url: `${base}?${convertedSegments.join('&')}${hash}`, diff --git a/assets/link-generator.js b/assets/link-generator.js index dbef5fa..965e617 100644 --- a/assets/link-generator.js +++ b/assets/link-generator.js @@ -57,7 +57,7 @@ function renderChanges(changes) { const rows = changes.length ? changes : [{ key:'—', from:'原链接参数无需变化', to:'—' }]; - $('mappingTableBody').innerHTML = rows.map((change) => `
${escapeHtml(change.key)}${escapeHtml(change.to)}` : '留空'}${escapeHtml(change.key)}${escapeHtml(change.to)}` : '留空'}TRACKING BUILDER
粘贴原始 Click Link,自动将通用参数替换为 Mintegral、TaurusX、LoopMe、NewsBreak、Midas 等平台专属宏。
+粘贴原始 Click Link,自动将通用参数替换为 Mintegral、TaurusX、LoopMe、NewsBreak、Midas、Adsterra 等平台专属宏。