コード例 #1
0
ファイル: mpd_tweet.py プロジェクト: boxysean/airadio
    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)
コード例 #2
0
    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)
コード例 #3
0
ファイル: air_download.py プロジェクト: izakp/airadio
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)
コード例 #4
0
ファイル: air_download.py プロジェクト: boxysean/airadio
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)
コード例 #5
0
ファイル: air_download.py プロジェクト: izakp/airadio
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)
コード例 #6
0
ファイル: air_download.py プロジェクト: boxysean/airadio
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)
コード例 #7
0
ファイル: air_manager.py プロジェクト: boxysean/airadio
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):