← 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);