← back to Dear Bubbe Nextjs

archived/social-posters/continuous-anonymous-poster.js

66 lines

#!/usr/bin/env node

const { postAnonymousUserContent } = require('./anonymous-user-poster');

// Configuration
const POSTING_INTERVAL = 30 * 60 * 1000; // 30 minutes
const MAX_POSTS_PER_DAY = 20; // Maximum anonymous posts per day

// Track daily posts
let dailyPostCount = 0;
let lastResetDate = new Date().toDateString();

// Reset daily counter
function resetDailyCounterIfNeeded() {
  const today = new Date().toDateString();
  if (today !== lastResetDate) {
    dailyPostCount = 0;
    lastResetDate = today;
    console.log('📅 New day - reset post counter');
  }
}

// Main loop
async function continuousPost() {
  console.log('🚀 Starting Continuous Anonymous Poster');
  console.log(`⏱️  Posting every ${POSTING_INTERVAL / 60000} minutes`);
  console.log(`📊 Max ${MAX_POSTS_PER_DAY} posts per day`);
  console.log('=' .repeat(50));

  // Post immediately on start
  await attemptPost();

  // Then continue posting at intervals
  setInterval(async () => {
    await attemptPost();
  }, POSTING_INTERVAL);
}

// Attempt to post
async function attemptPost() {
  resetDailyCounterIfNeeded();
  
  if (dailyPostCount >= MAX_POSTS_PER_DAY) {
    console.log(`📊 Daily limit reached (${dailyPostCount}/${MAX_POSTS_PER_DAY})`);
    return;
  }
  
  console.log(`\n🔄 Attempting post ${dailyPostCount + 1}/${MAX_POSTS_PER_DAY} for today`);
  
  try {
    await postAnonymousUserContent();
    dailyPostCount++;
    console.log(`✅ Posted ${dailyPostCount}/${MAX_POSTS_PER_DAY} today`);
  } catch (error) {
    console.error('❌ Error in posting:', error);
  }
}

// Handle shutdown gracefully
process.on('SIGINT', () => {
  console.log('\n👋 Shutting down continuous poster...');
  process.exit(0);
});

// Start the continuous posting
continuousPost().catch(console.error);