Posts Tagged ‘ mark all as read

Fun with GMail, Google Voice, & Python

Lately I have been getting lots of Google Voice and GMail messages, and it can be a royal pain to go through and mark them all read on the web interfaces, so I threw together a couple of script that help to solve this problem from the shell for me.

gmail_mark_as_read:

#!/usr/bin/env python

import imaplib
obj = imaplib.IMAP4_SSL('imap.gmail.com', '993')
obj.login('charlie@charliemeyer.net', 'my_password')
obj.select('Inbox')
typ ,data = obj.search(None,'UnSeen')
try:
    obj.store(data[0].replace(' ',','),'+FLAGS','\Seen')
    print "Messages marked as read"
except:
    print "No messages to mark"

voice_mark_as_read:

#!/usr/bin/env python

from googlevoice import Voice,util

voice = Voice()
voice.login('charlie@charliemeyer.net', 'my_password')

while True :
    folder = voice.search('is:unread')
    if folder.totalSize <= 0 :
        break
    util.print_(folder.totalSize)
    for message in folder.messages:
        if not message.id:
            continue
        util.print_(message)
        message.mark(1)

Now, to tie it all together, a bash script:

mark_all_as_read:

#!/bin/bash

voice_file=/tmp/gvoice.$$.out
gmail_file=/tmp/gmail.$$.out

touch $voice_file
touch $gmail_file

echo "Marking text messages read"
~/bin/voice_mark_as_read &> $voice_file &
echo "Marking gmail messages read"
~/bin/gmail_mark_as_read &> $gmail_file &

wait

echo "GVoice:"
cat $voice_file
echo "GMail:"
cat $gmail_file

rm $gmail_file $voice_file

Now, I do not claim to be the original author of the first 2 scripts here, they were taken from various stack exchange posts and what not (I lost the URLs and I have modified the scripts, so unfortunately I cannot give due credit, but I will not take it for myself). The last bash script was my little work, and it does its job perfectly. I hope this helps someone else to fix the problem that I was also facing.