def tweet_now_playing(self, mpdclient): currentSong = mpdclient.currentsong() if not currentSong or currentSong['file'].startswith("jingle"): return try: status = ("Listening to \"%s\" by \"%s\" #nowplaying" ) % (currentSong['title'], currentSong['artist']) except KeyError: status = ("Listening to %s #nowplaying" ) % (currentSong['file'] ) log_it("[t] %s" % (status)) self.api.UpdateStatus(status)
def tweet_now_playing(self, mpdclient): currentSong = mpdclient.currentsong() if not currentSong or currentSong['file'].startswith("jingle"): return try: status = ("Listening to \"%s\" by \"%s\" #nowplaying") % ( currentSong['title'], currentSong['artist']) except KeyError: status = ("Listening to %s #nowplaying") % (currentSong['file']) log_it("[t] %s" % (status)) self.api.UpdateStatus(status)
def getMsgs(usernm, passwd=None, servername="imap.gmail.com", first=True): if not passwd: passwd = getpass.getpass() conn = imaplib.IMAP4_SSL(servername, 993) conn.login(usernm, passwd) conn.select() if first: typ, data = conn.search(None, 'ALL') else: typ, data = conn.search(None, 'UnSeen') if data[0]: log_it("new message(s)!") for num in data[0].split(): hdata = conn.fetch(num, '(BODY[HEADER.FIELDS (SUBJECT FROM DATE)])') header_data = hdata[1][0][1] header_data_array = header_data.split("\n") log_it("") log_it(":::new message details:::") log_it(header_data.strip()) log_it(":::::::::::::::::::::::::") date = filter(lambda x: x.startswith("Date"), header_data_array)[0] datestring = parseDate(date[6:]) parser = HeaderParser() parsed_header_data = parser.parsestr(header_data) origin = parsed_header_data['From'] sender = email.utils.parseaddr(origin)[1] typ, data = conn.fetch(num, '(RFC822)') msg = email.message_from_string(data[0][1]) yield (msg, datestring, sender)
def getMsgs(usernm, passwd=None, servername="imap.gmail.com", first=True): if not passwd: passwd = getpass.getpass() conn = imaplib.IMAP4_SSL(servername, 993) conn.login(usernm,passwd) conn.select() if first: typ, data = conn.search(None,'ALL') else: typ, data = conn.search(None,'UnSeen') if data[0]: log_it("new message(s)!") for num in data[0].split(): hdata = conn.fetch(num, '(BODY[HEADER.FIELDS (SUBJECT FROM DATE)])') header_data = hdata[1][0][1] header_data_array = header_data.split("\n") log_it("") log_it(":::new message details:::") log_it(header_data.strip()) log_it(":::::::::::::::::::::::::") date = filter(lambda x: x.startswith("Date"), header_data_array)[0] datestring = parseDate(date[6:]) parser = HeaderParser() parsed_header_data = parser.parsestr(header_data) origin = parsed_header_data['From'] sender = email.utils.parseaddr(origin)[1] typ, data = conn.fetch(num,'(RFC822)') msg = email.message_from_string(data[0][1]) yield (msg, datestring, sender)
def checkEmail(account, password, server, first_run, dest_folder, respond_to_emails, smtp_server, response_text): res = [] if respond_to_emails and smtp_server: conn_res = smtplib.SMTP_SSL(smtp_server, 465) conn_res.login(account, password) for msg, datestring, sender in getMsgs(account, passwd=password, servername=server, first=first_run): filename, payload = getAttachment(msg) if not payload: continue filename = datestring + "_" + filename filepath = dest_folder + os.sep + filename if not os.path.isfile(filepath): log_it("[<] writing %s" % (filename)) fp = open(filepath, 'wb') fp.write(payload) fp.close() res.append(filepath.split(os.sep)[-1]) if respond_to_emails and smtp_server: try: response = response_text data = MIMEMultipart() data['Subject'] = 'Thanks from %s' % (account) data['From'] = account + '@gmail.com' data['To'] = sender data.attach(MIMEText(response, 'plain')) conn_res.sendmail(account, sender, data.as_string()) log_it("::: Sent thank you email") except Exception, e: log_it('Failed to send email response because of: ' + e)
def checkEmail(account, password, server, first_run, dest_folder, respond_to_emails, smtp_server, response_text): res = [] if respond_to_emails and smtp_server: conn_res = smtplib.SMTP_SSL(smtp_server, 465) conn_res.login(account, password) for msg, datestring, sender in getMsgs(account, passwd=password, servername=server, first=first_run): filename, payload = getAttachment(msg) if not payload: continue filename = datestring + "_" + filename filepath = dest_folder + os.sep + filename if not os.path.isfile(filepath): log_it("[<] writing %s" % (filename)) fp = open(filepath, 'wb') fp.write(payload) fp.close() res.append(filepath.split(os.sep)[-1]) if respond_to_emails and smtp_server: try: response = response_text data = MIMEMultipart() data['Subject'] = 'Thanks from %s' % (account) data['From'] = account + '@gmail.com' data['To'] = sender data.attach(MIMEText(response, 'plain')) conn_res.sendmail(account, sender, data.as_string()) log_it("::: Sent thank you email") except Exception, e: log_it('Failed to send email response because of: '+ e)
try: jingles = os.listdir(os.path.join(DIRECTORY, JINGLE_DIRECTORY)) shuffle(jingles) except: jingles = [] desired_order = sorted([f for f in os.listdir(DIRECTORY) if os.path.isfile(os.path.join(DIRECTORY, f))]) # add jingles jingle_idx = 0 if jingles: n_songs_after_jingles = len(desired_order) + len(desired_order) / JINGLE_FREQUENCY for jingle_idx, j in enumerate(range(0, n_songs_after_jingles, JINGLE_FREQUENCY + 1)): desired_order.insert(j, os.path.join("jingles", jingles[jingle_idx % len(jingles)])) log_it("::: Desired order") log_it("\n".join(desired_order)) log_it("") client = mpd_connect(HOST, PORT) client.repeat(1) present_order = map(lambda x: x["file"], client.playlistinfo()) log_it("::: Present order") log_it("\n".join(present_order)) log_it("") lists_are_same = sameList(desired_order, present_order) if not lists_are_same or not jingles_exist(present_order):