Michal Čihař - Blog Archives for Coding

English-Czech dictionary daily builds

I started to generate daily builds from GNU/FDL Anglicko-Český slovník for StarDict. Largest difference compared to previous version is that now StarDict version is generated directly from source word list (previous was done from dict dictionaries) using my own convertor.

The convertor is for now available only in Arch repostiory as slovnik2stardict--devel--1 (or browsable via ArchZoom).

You can download builds from download server (latest tarball, approx 4MiB), Debian users can use non-free section on debian.cihar.com.

Mažu všechno staré

A máme tu další z řady jednoduchých skriptíků pro práci s IMAPem. Tentokráte smažeme všechny staré maily, aby složky s mailing listy příliš nebobtnaly.

 #!/usr/bin/python
import sys
import imaplib
import time
import string

def purge_step(age, flag):
    l = m.search(None, flag, 'UNFLAGGED', 'UNDELETED', 'BEFORE', time.strftime('%d-%b-%Y', age))
    for st in l[1]:
        if st:
            sts = st.split()
            while sts:
                m.store(string.join(sts[:1000], ','), '+FLAGS.SILENT', '\deleted')
                del sts[:1000]


if len(sys.argv) != 4:
    print 'Usage: imap_purge folder age unreadage'
    sys.exit(4)

folder = sys.argv[1]

ts_read = time.localtime(time.time() - (int(sys.argv[2]) * 86400))
ts_unread = time.localtime(time.time() - (int(sys.argv[3]) * 86400))

m = imaplib.IMAP4('SERVER')
res = m.login('USERNAME', 'PASSWORD')
if res[0] != 'OK':
    sys.stderr.write("login: %s\n" % str(res))
    sys.exit(1)

res = m.select(folder)
if res[0] != 'OK':
    sys.stderr.write("select: %s\n" % str(res))
    sys.exit(2)

purge_step(ts_read, 'SEEN')
purge_step(ts_unread, 'UNSEEN')

m.expunge()

Přehled složek v IMAPu

Už opět nastala situace, že mi napsání vlastního skriptu připadalo jednodušší než hledání hotového nástroje :-). Pokud se tedy někdo potřebuje podívat na stav složek na IMAPu, může použít následující skriptík.

 #!/usr/bin/python
import sys
import imaplib

m = imaplib.IMAP4('SERVER')
res = m.login('USERNAME', 'PASSWORD')
if res[0] != 'OK':
    sys.stderr.write("login: %s\n" % str(res))
    sys.exit(1)

typ, list = m.list()
if typ != 'OK':
    sys.stderr.write("list:")
    sys.exit(2)

for item in list:
    vals = item.split()
    name = vals[2][1:][:-1]
    typ, val = m.status(name, '(UNSEEN RECENT)')
    if typ != 'OK':
        sys.stderr.write("status:")
        sys.exit(2)
    print val[0]