diff --git a/tools/clis/ahrefs.js b/tools/clis/ahrefs.js index 1c59c30..63ec6dd 100755 --- a/tools/clis/ahrefs.js +++ b/tools/clis/ahrefs.js @@ -58,6 +58,7 @@ async function main() { case 'domain-rating': switch (sub) { case 'get': { + if (!args.target) { result = { error: '--target required (domain)' }; break } const params = new URLSearchParams({ target: args.target }) result = await api('GET', `/site-explorer/domain-rating?${params}`) break @@ -70,6 +71,7 @@ async function main() { case 'backlinks': switch (sub) { case 'list': { + if (!args.target) { result = { error: '--target required (domain or URL)' }; break } const params = new URLSearchParams({ target: args.target, mode }) if (args.limit) params.set('limit', args.limit) result = await api('GET', `/site-explorer/backlinks?${params}`) @@ -83,6 +85,7 @@ async function main() { case 'refdomains': switch (sub) { case 'list': { + if (!args.target) { result = { error: '--target required (domain or URL)' }; break } const params = new URLSearchParams({ target: args.target, mode }) if (args.limit) params.set('limit', args.limit) result = await api('GET', `/site-explorer/refdomains?${params}`) @@ -96,6 +99,7 @@ async function main() { case 'keywords': switch (sub) { case 'organic': { + if (!args.target) { result = { error: '--target required (domain or URL)' }; break } const params = new URLSearchParams({ target: args.target, mode }) if (args.country) params.set('country', args.country) if (args.limit) params.set('limit', args.limit) @@ -110,6 +114,7 @@ async function main() { case 'top-pages': switch (sub) { case 'list': { + if (!args.target) { result = { error: '--target required (domain or URL)' }; break } const params = new URLSearchParams({ target: args.target, mode }) if (args.country) params.set('country', args.country) if (args.limit) params.set('limit', args.limit) diff --git a/tools/clis/meta-ads.js b/tools/clis/meta-ads.js index 4f8dd34..3261617 100755 --- a/tools/clis/meta-ads.js +++ b/tools/clis/meta-ads.js @@ -93,7 +93,7 @@ async function main() { name: args.name, objective: args.objective, status: args.status || 'PAUSED', - special_ad_categories: ['NONE'], + special_ad_categories: [], } result = await api('POST', `/act_${accountId}/campaigns`, body) break diff --git a/tools/clis/mixpanel.js b/tools/clis/mixpanel.js index 66c8cd1..e6cf02d 100755 --- a/tools/clis/mixpanel.js +++ b/tools/clis/mixpanel.js @@ -187,9 +187,10 @@ async function main() { case 'retention': switch (sub) { case 'get': { + if (!args['from-date'] || !args['to-date']) { result = { error: '--from-date and --to-date required (YYYY-MM-DD)' }; break } const params = new URLSearchParams() - if (args['from-date']) params.set('from_date', args['from-date']) - if (args['to-date']) params.set('to_date', args['to-date']) + params.set('from_date', args['from-date']) + params.set('to_date', args['to-date']) params.set('retention_type', 'birth') if (args['born-event']) params.set('born_event', args['born-event']) result = await queryApi('GET', QUERY_URL, '/retention', params) @@ -208,6 +209,7 @@ async function main() { const params = new URLSearchParams() params.set('from_date', args['from-date']) params.set('to_date', args['to-date']) + if (args.event) params.set('event', JSON.stringify([args.event])) result = await queryApi('GET', EXPORT_URL, '/export', params) break } diff --git a/tools/clis/tiktok-ads.js b/tools/clis/tiktok-ads.js index 338f2b0..ac73e1f 100755 --- a/tools/clis/tiktok-ads.js +++ b/tools/clis/tiktok-ads.js @@ -68,7 +68,8 @@ async function main() { case 'info': { const advId = getAdvertiserId() if (!advId) { result = { error: 'TIKTOK_ADVERTISER_ID env or --advertiser-id required' }; break } - result = await api('GET', `/advertiser/info/?advertiser_ids=["${advId}"]`) + const advParams = new URLSearchParams({ advertiser_ids: JSON.stringify([advId]) }) + result = await api('GET', `/advertiser/info/?${advParams}`) break } default: @@ -81,7 +82,8 @@ async function main() { case 'list': { const advId = getAdvertiserId() if (!advId) { result = { error: 'TIKTOK_ADVERTISER_ID env or --advertiser-id required' }; break } - result = await api('GET', `/campaign/get/?advertiser_id=${advId}&page=1&page_size=20`) + const campParams = new URLSearchParams({ advertiser_id: advId, page: '1', page_size: '20' }) + result = await api('GET', `/campaign/get/?${campParams}`) break } case 'create': { @@ -119,9 +121,9 @@ async function main() { case 'list': { const advId = getAdvertiserId() if (!advId) { result = { error: 'TIKTOK_ADVERTISER_ID env or --advertiser-id required' }; break } - let path = `/adgroup/get/?advertiser_id=${advId}` - if (args['campaign-id']) path += `&campaign_ids=["${args['campaign-id']}"]` - result = await api('GET', path) + const agParams = new URLSearchParams({ advertiser_id: advId }) + if (args['campaign-id']) agParams.set('campaign_ids', JSON.stringify([args['campaign-id']])) + result = await api('GET', `/adgroup/get/?${agParams}`) break } default: @@ -157,7 +159,8 @@ async function main() { case 'list': { const advId = getAdvertiserId() if (!advId) { result = { error: 'TIKTOK_ADVERTISER_ID env or --advertiser-id required' }; break } - result = await api('GET', `/dmp/custom_audience/list/?advertiser_id=${advId}`) + const audParams = new URLSearchParams({ advertiser_id: advId }) + result = await api('GET', `/dmp/custom_audience/list/?${audParams}`) break } default: diff --git a/tools/clis/wistia.js b/tools/clis/wistia.js index 0092af6..cd1d2ec 100755 --- a/tools/clis/wistia.js +++ b/tools/clis/wistia.js @@ -221,7 +221,10 @@ async function main() { if (!id) { result = { error: '--id required (media hashed ID)' }; break } if (!language) { result = { error: '--language required (e.g. eng)' }; break } const body = { language } - if (args['srt-file']) body.caption_file = args['srt-file'] + if (args['srt-file']) { + const fs = require('fs') + body.caption_file = fs.readFileSync(args['srt-file'], 'utf8') + } result = await api('POST', `/medias/${id}/captions.json`, body) break }