@@ -192,6 +192,8 @@ async function main() {
192192
193193 let successCount = 0 ;
194194 let failCount = 0 ;
195+ let duplicateCount = 0 ;
196+ const processedEmails = new Set ( ) ; // Track emails we've already processed
195197
196198 for ( const podcast of data ) {
197199 // Skip podcasts with no emails
@@ -204,6 +206,18 @@ async function main() {
204206 const emails = podcast . Emails . split ( ' ' ) . filter ( email => email . trim ( ) !== '' ) ;
205207
206208 for ( const email of emails ) {
209+ const emailAddress = email . trim ( ) . toLowerCase ( ) ; // Normalize for comparison
210+
211+ // Check if we've already processed this email
212+ if ( processedEmails . has ( emailAddress ) ) {
213+ console . log ( `⚠️ Skipping duplicate email ${ email . trim ( ) } (${ podcast [ 'Podcast Name' ] } )` ) ;
214+ duplicateCount ++ ;
215+ continue ;
216+ }
217+
218+ // Add to processed set
219+ processedEmails . add ( emailAddress ) ;
220+
207221 const success = await sendEmail (
208222 email . trim ( ) ,
209223 podcast [ 'Podcast Name' ] ,
@@ -225,7 +239,9 @@ async function main() {
225239 console . log ( `\n📊 Email sending completed:` ) ;
226240 console . log ( ` ✅ Successful: ${ successCount } ` ) ;
227241 console . log ( ` ❌ Failed: ${ failCount } ` ) ;
228- console . log ( ` 📋 Total: ${ successCount + failCount } ` ) ;
242+ console . log ( ` � Duplicates skipped: ${ duplicateCount } ` ) ;
243+ console . log ( ` �📋 Total processed: ${ successCount + failCount } ` ) ;
244+ console . log ( ` 📧 Unique emails: ${ processedEmails . size } ` ) ;
229245
230246 } catch ( error ) {
231247 console . error ( "❌ Error:" , error ) ;
0 commit comments