diff options
| author | dumpfmprod <dumpfmprod@ubuntu.(none)> | 2010-08-19 11:10:23 -0400 |
|---|---|---|
| committer | dumpfmprod <dumpfmprod@ubuntu.(none)> | 2010-08-19 11:10:23 -0400 |
| commit | a125e1216dc52f8c596f8ff9360751c161c8d9fd (patch) | |
| tree | 8dd96e79e763bb07154f73ccded68c7707a94455 | |
| parent | 9c625c5cc83de9249344d1a8024803e20e04a05d (diff) | |
| parent | dbd8ac362b1a44c5b3a9dfe6b2abc1295b7980ec (diff) | |
Merge branch 'master' of /pichat/repo
| -rw-r--r-- | scripts/emailposter.py | 105 | ||||
| -rw-r--r-- | src/site.clj | 4 |
2 files changed, 105 insertions, 4 deletions
diff --git a/scripts/emailposter.py b/scripts/emailposter.py new file mode 100644 index 0000000..d380ffd --- /dev/null +++ b/scripts/emailposter.py @@ -0,0 +1,105 @@ +import httplib +import mimetypes +import email +import poplib +import time +from email import parser + +def post_multipart(host, selector, fields, files): + """ + Post fields and files to an http host as multipart/form-data. + fields is a sequence of (name, value) elements for regular form fields. + files is a sequence of (name, filename, value) elements for data to be uploaded as files + Return the server's response page. + """ + content_type, body = encode_multipart_formdata(fields, files) + h = httplib.HTTP(host) + h.putrequest('POST', selector) + h.putheader('content-type', content_type) + h.putheader('content-length', str(len(body))) + h.endheaders() + h.send(body) + errcode, errmsg, headers = h.getreply() + return h.file.read() + +def encode_multipart_formdata(fields, files): + """ + fields is a sequence of (name, value) elements for regular form fields. + files is a sequence of (name, filename, value) elements for data to be uploaded as files + Return (content_type, body) ready for httplib.HTTP instance + """ + BOUNDARY = '----------ThIs_Is_tHe_bouNdaRY_$' + CRLF = '\r\n' + L = [] + for (key, value) in fields: + L.append('--' + BOUNDARY) + L.append('Content-Disposition: form-data; name="%s"' % key) + L.append('') + L.append(value) + for (key, filename, value) in files: + L.append('--' + BOUNDARY) + L.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename)) + L.append('Content-Type: %s' % get_content_type(filename)) + L.append('') + L.append(value) + L.append('--' + BOUNDARY + '--') + L.append('') + body = CRLF.join(L) + content_type = 'multipart/form-data; boundary=%s' % BOUNDARY + return content_type, body + +def get_content_type(filename): + return mimetypes.guess_type(filename)[0] or 'application/octet-stream' + + +def is_image(name): + l = name.lower() + return l.endswith('jpg') or l.endswith('gif') or l.endswith('png') or l.endswith('jpeg') + +def upload_image(fname, data): + resp = post_multipart('dump.fm', '/upload/photo', + [['room','dumpfm']], + [['image', fname, data]]) + print resp + +def fetch_msg(): + pop_conn = poplib.POP3_SSL('pop.secureserver.net') + pop_conn.user('post@dump.fm') + pop_conn.pass_('UHR4Moghu5a2') + + numMessages = len(pop_conn.list()[1]) + if numMessages == 0: + print 'no messages' + return + msg_num = 1 + resp, msg_list, octs = pop_conn.retr(msg_num) + msg = "\n".join(msg_list) + parsed = parser.Parser().parsestr(msg) + + + print "Handling %s - %s:" % (parsed['from'], parsed['subject']) + + try: + for data in parsed.walk(): + fname = data.get_filename() + if fname and is_image(fname): + print 'uploading %s' % fname + image_data = data.get_payload(decode = 1) + upload_image(fname, image_data) + break + except Exception, e: + print e + print 'deleting msg #%s' % msg_num + pop_conn.dele(msg_num) + pop_conn.quit() + +while True: + time.sleep(5) + try: + fetch_msg() + except: + pass + + + + diff --git a/src/site.clj b/src/site.clj index 7ecc7ea..f1b006f 100644 --- a/src/site.clj +++ b/src/site.clj @@ -454,8 +454,6 @@ FROM users u logger (make-time-logger) is-home (and nick (= nick profile-nick)) has-avatar (non-empty-string? (user-info :avatar)) - dump-cnt (count-dumps-posted profile-nick) - fav-from-cnt (count-dumps-user-faved profile-nick) score (lookup-score profile-nick) raw-dumps (logger tags/fetch-dumps-by-nick :nick profile-nick @@ -475,8 +473,6 @@ FROM users u (if (non-empty-string? v) (escape-html v))))) (.setAttribute st "score" (comma-format score)) (.setAttribute st "score_ent" (score-to-entity score)) - (.setAttribute st "dump_cnt" (comma-format dump-cnt)) - (.setAttribute st "dumps_user_faved_cnt" (comma-format fav-from-cnt)) (if (not (empty? dumps)) (.setAttribute st "dumps" dumps)) (.setAttribute st "debug_log_items" (logger)) |
