Skip to content

Instantly share code, notes, and snippets.

View adrianhorning08's full-sized avatar

Adrian Horning adrianhorning08

View GitHub Profile
[
{
"inputUrl": "https://www.instagram.com/jane/reel/DaGfedtvfIU/",
"id": "3928966157859418644",
"type": "Video",
"shortCode": "DaGfedtvfIU",
"caption": "Omg! I almost cared💅\n\n#dietcoke #soda #momlife #relatable #mommylife",
"hashtags": [
"dietcoke",
"soda",
@adrianhorning08
adrianhorning08 / index.js
Last active April 29, 2026 19:24
Scrape Facebook Group
const allContent = []
function createCSV(data, fileName) {
const headers = [
'id',
'email',
'firstName',
'lastName',
'postId',
'postText',
@adrianhorning08
adrianhorning08 / googleMaps.js
Created August 4, 2023 23:17
Scrape Google Maps
import * as cheerio from "cheerio";
import puppeteerExtra from "puppeteer-extra";
import stealthPlugin from "puppeteer-extra-plugin-stealth";
import chromium from "@sparticuz/chromium";
async function searchGoogleMaps() {
try {
const start = Date.now();
puppeteerExtra.use(stealthPlugin());
@adrianhorning08
adrianhorning08 / Dockerfile
Created May 1, 2025 18:19
Docker for puppeteer real browser
FROM node:20-bullseye
# Install Chrome and xvfb
RUN apt-get update && apt-get install -y \
chromium \
xvfb \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
@adrianhorning08
adrianhorning08 / index.js
Last active September 22, 2025 18:46
Download file and upload to supabase
import fs from 'fs';
import { createClient } from '@supabase/supabase-js';
const SUPABASE_URL = process.env.SUPABASE_URL;
const SUPABASE_KEY = process.env.SUPABASE_KEY;
const supabase = createClient(SUPABASE_URL, SUPABASE_KEY);
const filePath = 'video.mp4';
const bucket = 'videos'; // change to your bucket
const storagePath = `uploads/${filePath}`;
@adrianhorning08
adrianhorning08 / index.js
Created September 22, 2025 18:42
Download TikTok Raw Video
const res = await axios.get(
"https://api.scrapecreators.com/v2/tiktok/video?url=https://www.tiktok.com/@stoolpresidente/video/7552934044887944478",
{
headers: {
"x-api-key": process.env.MY_API_KEY,
},
}
);
const rawVideo = res?.data?.aweme_detail?.video?.play_addr?.url_list?.[0];
console.log("rawVideo", rawVideo);
@adrianhorning08
adrianhorning08 / index.js
Created September 18, 2025 17:21
YouTube Transcript Parser
const languageMenu = findKey(transcriptRes, "languageMenu");
console.log("languageMenu", languageMenu);
const language =
languageMenu?.sortFilterSubMenuRenderer?.subMenuItems?.[0]?.title?.split(
" "
)?.[0];
const transcriptRenderer = findKey(transcriptRes, "transcriptRenderer")
?.content?.transcriptSearchPanelRenderer?.body?.transcriptSegmentListRenderer?.initialSegments?.map(
(tr) => tr?.transcriptSegmentRenderer
@adrianhorning08
adrianhorning08 / index.js
Created September 16, 2025 19:33
Duck Duck Go parser
import * as cheerio from "cheerio";
function jsonifyDuckDuckGo(html) {
try {
const $ = cheerio.load(html);
const results = [];
$(".results_links")
.get()
.forEach((result) => {
@adrianhorning08
adrianhorning08 / index.js
Created September 11, 2025 22:57
Find Key in JS
// Function to recursively search for the key
export function findKey(obj, keyToFind) {
try {
if (obj.hasOwnProperty(keyToFind)) {
return obj[keyToFind];
}
for (let key in obj) {
if (typeof obj[key] === "object" && obj[key] !== null) {
let result = findKey(obj[key], keyToFind);
@adrianhorning08
adrianhorning08 / index.json
Created September 9, 2025 19:19
TIkTok Shop Data for Brazil
{
"success": true,
"categories": [
{
"category_id": "700645",
"level": 1,
"is_leaf": false,
"parent_id": "0",
"category_name": "Saúde",
"name_key": "magellan_700645"