Latest 100 public snipts »
italomaia's
snipts
showing 1-19 of 19 snipts
-
∞ função objetivo p/ jobshop [python]
def makespan(v, A, m, n): "v - solução, A - matriz, m - n. máquinas, n - n. tarefas" T = [0 for i in range(m)] # tempo de cada máquina maq, pmaq = None, None for k in range(n): j=v[k] maq=A[j][0] T[maq]=T[maq]+A[j][1] for i in range(1, m): # percorre a matriz em largura maq = A[j][i*2] pmaq = A[j][(i-1)*2] if T[maq]>T[pmaq]: T[maq]=T[maq]+A[j][(i*2)+1] else: T[maq]=T[pmaq]+A[j][(i*2)+1] return T[maq]
-
∞ função objetivo para jobshop
function makespan(v, A, m, n) -- v - solução atual -- A - matriz -- m - número de máquinas -- n - número de tarefas --- -- para cada linha da solução, -- cria um vetor com o tempo de -- processamento de cada máquina local T = {} for i=1, m do T[i]=0 end local maq = nil local pmaq = nil -- máquina anterior for k=1, n do local j=v[k] -- representa uma tarefa maq = A[j][1] T[maq]=T[maq]+A[j][2] for i=2,m do maq = A[j][1+(i-1)*2] pmaq = A[j][1+(i-2)*2] if T[maq]>T[pmaq] then T[maq]=T[maq]+A[j][i*2] else T[maq]=T[pmaq]+A[j][i*2] end end end return T[maq] end
-
∞ nice settings for mplayer. I call it turtle-player
# dev: Italo Maia # description: nice settings for mplayer. Those nasty hard-to-play videos will run better with # this. # date: 06/06/2010 # ---- # save to a file called turtle-player.sh and link it in /usr/bin/ as # turtle-player mplayer -cache 8912 -cache-min 20 -af volnorm -vo xv x11 -ao alsa oss -framedrop "$1"
-
∞ servindo favicon pelo apache. Config do htaccess
RewriteRule ^favicon\.ico$ /media/images/favicon.ico [L]
-
∞ como comparar date e datetime
#--------------------------------------- # # italo mc maia # data: 26/04/2010 # website: http://italomaia.com # twitter: http://twitter.com/italomaia # #--------------------------------------- from datetime import date, datetime # o truque esta no formato da string today = date.today().strftime("%Y%m%d") now = datetime.now().strftime("%Y%m%d") # OU - agradecimentos ao Alisson Sales # today = date.today().toordinal() # now = datetime.now().toordinal() today == now # dá o resultado esperado today != now # dá o resultado esperado today < now # dá o resultado esperado today > now # dá o resultado esperado today <= now # dá o resultado esperado today >= now # dá o resultado esperado
-
∞ exemplo de uso do modeladmin do django com jquery
from django.contrib import admin class ModeloAdmin(admin.ModelAdmin): class Media: js = ("js/jquery.js", "js/my_code.js",)
-
∞ Script que remove pastas .svn de uma árvore de diretórios
#!/bin/bash echo "Este script remove todos os .svn da pasta atual e subpastas." echo "Deseja continuar? (s/n)" read opt if [ $opt = "s" ]; then find . -name ".svn" -type d -exec rm -rf {} \; else echo "nada a fazer" fi
-
∞ script exemplo de utilização do clevercss
# retirado de http://sandbox.pocoo.org/clevercss/ import clevercss print clevercss.convert(''' body: background-color: $background_color ''', {'background_color: 'red.darken(10)'})
-
∞ amr2ogg script
#!/bin/bash # The following packages are needed for this to work: # alsa-utils amrnb amrwb libamrnb3 libamrwb3 vorbis-tools ############################################################################ # # date: 16/12/2009 # author: italo maia # website: http://italomaia.com # script heavily based on http://snipt.net/d1s4st3r/tag/amrnb-decoder # special thanks to fernando: http://www.forumdebian.com.br/viewtopic.php?f=13&t=7125 # ############################################################################ if [ -e /usr/bin/amrnb-decoder ] then if [ -e /usr/bin/oggenc ] then if [ -f $1 ] then fname="${1%.*}" fext="${1##*.}" amrnb-decoder $1 $fname.raw oggenc -r -B 16 -C 1 -R 8000 -o $fname.ogg $fname.raw echo "cleaning up" rm $fname.raw else echo "file '$1' not found." fi; else echo "please, install oggenc" fi; else echo "please, install amrnb-decoder" fi;
-
∞ css2clever translator. Simple and functional.
#!/usr/bin/python # -*- coding:utf-8 -*- #-------------------------------------- # # data: 30/11/2009 # author: italo moreira campelo maia # http://italomaia.com # http://eusouolobomau.blogspot.com/ # #-------------------------------------- import os, sys, time import clevercss as clever def parse(filepath): if filepath.endswith(".clever"): with open(filepath) as file: data = file.read() return clever.convert(data) def write(filename, data): with open(filename, 'w') as file: file.write(data) def write_clever(cfile, verb=False): data = parse(cfile) if verb: print "CLEVER FILE: ", cfile print "------------------------------------------" print "" print data print "" write("%s.css" % cfile[:-7], data) print ("%s.css criado." % cfile[:-7]) def print_help(): print "USAGE:" print "clever2css -c *.clever - cria" print "clever2css -c arquivo.clever - cria" print "clever2css -w *.clever - cria e observa por atualizações" print "clever2css -w arquivo.clever - cria e observa por atualizações" print "clever2css -q *.clever - modo simples" print "clever2css -q arquivo.clever - modo simples" print "clever2css -p *.clever - modo verborrágico" print "clever2css -p arquivo.clever - modo verborrágico" print "clever2css -q -p -c *.clever" print "clever2css -q -p -c arquivo.clever" def main(args): LIST=True WATCH=False CREATE=False PRINT=False if "-h" in args: print_help() exit(0) # quiet if "-q" in args: args.pop(args.index("-q")) LIST=False # create if "-c" in args: args.pop(args.index("-c")) CREATE=True if "-w" in args: args.pop(args.index("-w")) WATCH=True # print if "-p" in args: args.pop(args.index("-p")) PRINT=True if args: if LIST: print "" print "PROCESSANDO:" for arg in args: print "- %s" % arg print "" if any([WATCH, CREATE]): if WATCH: tdict = {} while True: for arg in args: ftime = os.path.getmtime(arg) if tdict.get(arg, False)!=ftime: tdict[arg]=ftime write_clever(arg, PRINT) time.sleep(0.5) elif CREATE: for arg in args: write_clever(arg, PRINT) else: print "Nada a fazer." if __name__=="__main__": main(sys.argv[1:])
-
∞ comparativo mootools vs jquery
// mootools Vs jquery // por: italo maia // data: 30/11/2009 // http://italomaia.com/ // http://eusouolobomau.blogspot.com/ // pega o elemento com id=id $("#id"); // jquery - perl? $("id"); // mootools - codigo menor // jquery // duas formas de se adicionar eventos. Confuso! $("#id").bind("click", function(){alert("oi")}); $("#id").click(function(){alert("oi")}); // eventos tratados de formas diferentes document.ready(function(){alert("oi")}) ; // mootools // apenas uma forma de se adicionar eventos. Pythonico! $("id").addEvent("click", function(){alert("oi")}); // eventos sao tradados de forma semelhante document.addEvent("domready", function(){alert("oi")}); // pega todos os elementos de tagname=a // jquery - codigo menor $("a"); // mootools - criterio de selecao definido pelo metodo e nao por marcacao $$("a"); // conta ocorrencias // jquery - semelhante $("a").size() // mootools - semelhante $$("a").size() // jquery - nomeclatura de metodo confusa. style acessa ou define? $("#id").style('atrib', 'valor'); // mootools - explicito > implicito $("id").setStyle('atrib', 'valor'); // jquery - feio e maior. "javeiro"? $.each([1,2,3], function(index, el){alert(i);alert(el);}); // mootools - sintaxe menor e mais bonita. each é método da lista [1,2,3].each(function(el, index){alert(i);alert(el);});
-
∞ Converts ogg files to mp3 / Converte arquivos ogg para mp3
#!/usr/bin/python #-*- coding: utf-8 -*- import os import sys import glob from subprocess import Popen, PIPE from optparse import OptionParser def process(folder, bitrate, keep_wav): # pega os arquivos do local especificado arqs = [ os.path.splitext(arq)[0] for arq in glob.glob( os.path.join(folder,"*.ogg") )] # ordena os bixin arqs.sort() for arq in arqs: # transforma o arquivo para wav Popen( ("oggdec", "%s.ogg" % arq,), ).wait() # transforma o arquivo para mp3 print "Convertendo `%s` para mp3" % arq p = Popen( ("lame", "-b 128", "%s.wav" % arq, "%s.mp3" % arq,), stdout=PIPE,stderr=PIPE ) print "Terminando ultimo processo..." stdout, stderr = p.communicate() if not keep_wav: print "Removendo arquivos .wav" for arq in arqs: os.remove("%s.wav" % arq) print "Fim..." if __name__=="__main__": print "---------------------------------------------------------------" print "* Programa desenvolvido por Italo Moreira Campelo Maia - UECE *" print "* www.italomaia.com.br *" print "* 25/02/2008 *" print "---------------------------------------------------------------" uso = """: python %prog [options] Requesitos: os programas oggdec e lame devem estar instalados""" parser = OptionParser(usage=uso, version="%prog 1.0") parser.add_option("-s", "--source", default="", help=u"Diretório onde estão seus arquivos .ogg") parser.add_option("-b", "--bitrate", default=128, type="int", help=u"Bitrate das mp3 geradas (ex:-b 128, --bitrate=160)") parser.add_option("-k", "--keep-wav", default=False, action="store_true", \ help=u"""Caso a opção -k seja fornecida, os arquivos wav não serão apagados ao fim do processo""") try: # pega as opções do programa (options, args) = parser.parse_args() except: print "ocorreu um erro" exit() if options.keep_wav: print "Os arquivos .wav serão mantidos" else: print "Os arquivos .wav serão apagados ao fim do processo" if options.source: print "Os arquivos da pasta atual serão usados" else: print "Serão usados os arquivos do diretório %s" % options.source print "Será utilizado o bitrate %d para converter as mp3" % options.bitrate # executa o programa process(options.source, options.bitrate, options.keep_wav)
-
∞ permite acessar a base do onemanga.com
#!/usr/bin/python #-*- coding:utf-8 -*- #------------------------------------ # # autor: italo moreira campelo maia # website: http://italomaia.com/ # data: 07/10/2009 # last update: 13/02/2010 # last update: 31/03/2010 # inspirado no script de Will Larson # #------------------------------------ import os import re import sys import copy import time import shutil import socket try: import Tkinter as tk import tkMessageBox as MessageBox import tkFileDialog as FileDialog except: tk = None print "Tkinter not installed. UI not avaiable." from os import path from socket import timeout from urlparse import urljoin from datetime import datetime from urllib2 import urlopen, URLError try: # download here: http://www.crummy.com/software/BeautifulSoup/ from BeautifulSoup import BeautifulSoup except: print "BeautifulSoup is required." print "You can install it from here: %s" % "http://www.crummy.com/software/BeautifulSoup/" sys.exit(1) TIMEOUT = 2 WAIT_BETWEEN_REQUESTS = 2 HOME_DIR = os.getenv("HOME") MAIN_PAGE = "http://www.onemanga.com/" RECENT_PAGE = "http://www.onemanga.com/recent/" DIRECTORY_PAGE = "http://www.onemanga.com/directory/" BASE_CACHE_PATH = path.exists('/tmp/') and "/tmp/omreader/" \ or path.join(HOME_DIR, '/tmp/omreader/') CACHE_PATH = lambda arg : "%s%s:%s.json" % (BASE_CACHE_PATH, arg, datetime.today().strftime("%d-%m-%Y")) if not path.exists(BASE_CACHE_PATH): os.mkdir(BASE_CACHE_PATH) class OMReader(object): def __init__(self): self.series = get_series() def find(self, name): for i, v in enumerate(self.series): if name in v["name"].lower(): print "code:", i, "-", v["name"] def download(self, serie, chapter=None, page_id=None, basepath=None): log("downloading...please, wait") download_list = [] if all([chapter, page_id]): # marca pagina para download page = chapter["pages"][page_id] load_image_source(page) filename = page["name"] download_list.append((filename, page)) elif chapter is not None: # marca capitulo para download for page in chapter["pages"]: load_image_source(page) filename = path.join(chapter["name"], page["name"]) download_list.append((filename, page)) else: # marca o quadrinho todo para download for chapter in serie["chapters"]: load_pages(chapter) for page in chapter["pages"]: load_image_source(page) filename = path.join(chapter["name"], page["name"]) download_list.append((filename, page)) # baixa os quadrinhos da lista for filename, page in download_list: if basepath is not None: filename = path.join(basepath, filename) folder = path.dirname(filename) if path.exists(filename): print "'%s' exists. Moving on." % filename continue if not path.exists(folder): print "creating '%s'" % folder os.mkdir(folder) image = get_manga_image(page) with open(filename, 'w') as file: file.write(image) print "'%s' saved." % filename def put_cache(self): 'Records the loaded series in a json cache' import json cache_path = CACHE_PATH("series") with open(cache_path, 'w') as file: json.dump(self.series, file) def log(msg): if VERBOSE: print msg def purlopen(source, timeout=TIMEOUT): 'Tries to fetch a url, if it fails, tries again' try: return urlopen(source, timeout=timeout) except KeyboardInterrupt, e: raise e except Exception, e: log("timeout for source: %s" % source) time.sleep(WAIT_BETWEEN_REQUESTS) return purlopen(source, timeout=timeout*2) def clear_cache(): shutil.rmtree(BASE_CACHE_PATH) print "cache cleared." def get_series(): cache_path = CACHE_PATH("series") if path.exists(cache_path): import json with open(cache_path) as file: temp = json.load(file) return temp else: print "connecting to:", DIRECTORY_PAGE try: handle = purlopen(DIRECTORY_PAGE) data = handle.read() except socket.timeout, e: print e sys.exit(1) finally: handle.close() temp = [] soup = BeautifulSoup(data) for match in soup.findAll('tr')[2:]: td_list = match.findAll('td') if len(td_list) is 3: el_subject, el_chapter, el_status = td_list el_link = el_subject.find('a') ctx = {} ctx["name"] = el_link.string ctx["url"] = urljoin(MAIN_PAGE, el_link['href']) ctx["status"] = el_status.string and el_status.string or "unknown" aka = el_subject.find('span', {'class':'aka'}) ctx["aka"] = aka and aka.string or '' temp.append(ctx) return temp def load_chapters(serie): if not "chapters" in serie.keys(): handle = purlopen(serie["url"]) data = handle.read() handle.close() temp = [] soup = BeautifulSoup(data) for match in soup.findAll('tr')[1:]: el_subject, el_scans, el_date = match.findAll('td') el_link = el_subject.find('a') data = [] ctx = {} ctx["name"] = el_link.string ctx["url"] = urljoin(MAIN_PAGE, el_link['href']) ctx["scans"] = el_scans.string ctx["date"] = el_date.string temp.append(ctx) temp.reverse() serie["chapters"] = temp def load_pages(chapter): if not "pages" in chapter.keys(): handle = purlopen(chapter["url"]) data = handle.read() handle.close() soup = BeautifulSoup(data) el_cover = soup.find('div', {'id':'chapter-cover'}) ul_el = el_cover.find('ul') pages_url = ul_el.find('a')['href'] handle = purlopen(urljoin(MAIN_PAGE, pages_url)) data = handle.read() handle.close() temp = [] soup = BeautifulSoup(data) el_select = soup.find('select', {'id':'id_page_select'}) el_option_list = el_select.findAll('option') for opt in el_option_list: ctx = {} ctx["url"] = urljoin(chapter["url"], opt.string) ctx["ident"] = path.basename(ctx["url"]) temp.append(ctx) chapter["pages"] = temp def load_image_source(page): if not "img_src" in page.keys(): handle = purlopen(page["url"]) data = handle.read() handle.close() soup = BeautifulSoup(data) page["img_src"] = soup.find('img', {'class':'manga-page'})['src'] page["name"] = path.basename(page["img_src"]) def get_manga_image(page): 'Loads the image file for a page' log("retrieving: %s" % page["img_src"]) handle = purlopen(page["img_src"]) image = handle.read() handle.close() return image def print_help(): print '''Usage: python onemanga.py option manga_number<:manga_chapter-1> Options: help: shows the help message find: findout the number of a particular manga download: download a complete manga or chapter show: get info about a certain manga Usage: omreader ui # shows user interface (alpha) omreader find wantedManga # don't use spaces! omreader download mangaId # downloads manga with ID mangaId omreader download mangaId:chapterNumber # downloads chapter Number from manga with ID mangaId omreader download mangaId:chapterNumber:pageNumber omreader show mangaId # shows manga with mangaId omreader show mangaId:chapterId # shows chapter Number from manga with ID mangaId omreader clear_cache # clear omreader cache omreader help # shows help message ''' def serie_to_str(serie): serie_info = """\n ========== Manga ========== name : %(name)s url : %(url)s" chapters : %(released)d released last update : %(status)s ========== ***** ========== """ load_chapters(serie) chapter_count = len(serie["chapters"]) items = serie.items()+{"released" : chapter_count}.items() return serie_info % dict( items ) def chapter_to_str(chapter): chapter_info = """\n ========= Chapter ========= name : %(name)s url : %(url)s scan : %(scans)s released : %(date)s ========= ******* ========= """ return chapter_info % chapter def show(reader, serie_ident, chapter_ident=None): serie = reader.series[int(serie_ident)] load_chapters(serie) if chapter_ident is not None: chapter = serie["chapters"][int(chapter_ident)] print serie_to_str(serie) + chapter_to_str(chapter) else: print serie_to_str(serie) def download(reader, serie_ident, chapter_ident=None, page_ident=None): global FORCE serie, chapter, page = None, None, None serie = reader.series[int(serie_ident)] load_chapters(serie) if chapter_ident is not None: chapter = serie["chapters"][int(chapter_ident)-1] load_pages(chapter) if page_ident is not None: page = int(page_ident) if FORCE: reader.download(serie, chapter, page) else: if page is not None: if raw_input("Confirm download of page %s from chapter '%s', serie '%s'? (y/n)\n> " % (page_ident, chapter["name"], serie["name"])) in ("y", "s"): FORCE = True reader.download(serie, chapter, page) elif chapter is not None: if raw_input("Confirm download of chapter '%s', serie '%s'? (y/n)\n> " % (chapter["name"], serie["name"])) in ("y", "s"): FORCE = True reader.download(serie, chapter, page) elif raw_input("Confirm download of complete serie '%s'? (y/n)\n> " % serie["name"]) in ("y", "s"): FORCE = True reader.download(serie, chapter, page) def download_bash(reader, args): if len(args) == 2: # baixar quadrinhos inteiros init, end = int(args[0]), int(args[1])+1 print "\nThe following series were found:" print "********************************" for s in reader.series[init:end]: print "|", s["name"] print "********************************\n" if FORCE or raw_input("Do you wish to download all series above? (y/n)\n> ") in ("y", "s"): for serie in reader.series[init:end]: load_chapters(serie) reader.download(serie) elif len(args) == 3: # baixar capitulos serie_ident = int(args[0]) init, end = int(args[1])-1, int(args[2]) serie = reader.series[serie_ident] load_chapters(serie) print "\nThe following chapters were found:" print "********************************" for chapter in serie["chapters"][init:end]: print "|", chapter["name"] print "********************************\n" if FORCE or raw_input("Do you wish to download all chapters above? (y/n)\n> ") in ("y", "s"): for chapter in serie["chapters"][init:end]: load_pages(chapter) reader.download(serie, chapter) else: print "nada a fazer." class InfoWindow(object): def __init__(self, *args, **kwargs): self.toplevel = tk.Toplevel(*args, **kwargs) self.initialize() def initialize(self): self.frame = tk.Frame(self.toplevel) self.message = tk.Message(self.frame, justify=tk.CENTER, aspect=200, padx=2, pady=1) self.str_var = tk.StringVar() self.message.config(textvariable=self.str_var) self.ok_button = tk.Button(self.toplevel, text="Ok", command=self.toplevel.destroy) self.message.pack(expand=1, fill=tk.BOTH) self.frame.pack(expand=1, fill=tk.BOTH) self.ok_button.pack() def set_text(self, msg): self.str_var.set(msg) class DownloadDialog(object): def __init__(self, *args, **kwargs): self.toplevel = tk.Toplevel(*args, **kwargs) self.dpath, self.response = None, False self.initialize() def initialize(self): self.toplevel.title('Download folder') self.frame = tk.Frame(self.toplevel) self.label = tk.Label(self.frame) self.entry = tk.Entry(self.frame) self.ok_button = tk.Button(self.toplevel, text="Ok", command=self.ok) self.cancel_button = tk.Button(self.toplevel, text="Cancel", command=self.cancel) self.str_var = tk.StringVar() self.str_var.set('Download path') self.entry.insert(0, path.abspath(".")) self.label.config(textvariable=self.str_var) self.frame.pack(fill=tk.BOTH, expand=True) self.label.pack(side=tk.LEFT) self.entry.pack(side=tk.LEFT) self.ok_button.pack(side=tk.RIGHT) self.cancel_button.pack(side=tk.RIGHT) self.toplevel.resizable(False, False) def ok(self): self.response = True self.toplevel.destroy() def cancel(self): self.response = False self.toplevel.destroy() class SerieWindow(object): def __init__(self, serie, *args, **kwargs): self.toplevel = tk.Toplevel(*args, **kwargs) load_chapters(serie) self.serie = serie def initialize(self): self.ch_frame = tk.Frame(self.toplevel) self.listbox = tk.Listbox(self.ch_frame) self.listbox_scroll = tk.Scrollbar(self.ch_frame, orient=tk.VERTICAL) for chapter in self.serie["chapters"]: self.listbox.insert(tk.END, chapter["name"]) self.listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=1) self.listbox_scroll.pack(side=tk.RIGHT, fill=tk.Y) self.listbox_scroll.config(command=self.listbox.yview) self.listbox.config(yscrollcommand=self.listbox_scroll.set) self.ch_frame.pack(expand=1, fill=tk.BOTH) class AppUI(object): def __init__(self, omreader, *args, **kwargs): self.wnd = tk.Tk(*args, **kwargs) self.omreader = omreader self.initialize() def initialize(self): # configuring self.wnd.title("Onemanga UI") self.wnd.resizable(True, True) self.listframe = tk.Frame(self.wnd) # widgets self.listbox_scroll = tk.Scrollbar(self.listframe, orient=tk.VERTICAL) self.listbox = tk.Listbox(self.listframe) for serie in self.omreader.series: self.listbox.insert(tk.END, serie["name"]) self.listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=1) self.listbox_scroll.pack(side=tk.RIGHT, fill=tk.Y) self.listbox_scroll.config(command=self.listbox.yview) self.listbox.config(yscrollcommand=self.listbox_scroll.set) self.listframe.pack(expand=1, fill=tk.BOTH) self.dl_button = tk.Button(self.wnd, text="Download", command=self.download) self.info_button = tk.Button(self.wnd, text="Info", command=self.info) self.dl_button.pack(side=tk.RIGHT) self.info_button.pack(side=tk.RIGHT) self.listbox.bind('<Double-Button-1>', self.show_current_serie) def mainloop(self): self.wnd.mainloop() def listbox_selection(self): return [self.omreader.series[sel] for sel in map(int, self.listbox.curselection())] def show_current_serie(self, event): for serie in self.listbox_selection(): serie_window = SerieWindow(serie, master=self) serie_window.title(serie["name"]) serie_window.initialize() def download(self): selection = self.listbox_selection() dialog = DownloadDialog() self.wnd.wait_window(dialog) resp = dialog.response if resp: destiny_path = dialog.dpath for serie in selection: self.omreader.download(serie) def info(self): for serie in self.listbox_selection(): window = InfoWindow() window.set_text(serie_to_str(serie)) def show_ui(omreader): root = AppUI(omreader) root.mainloop() def main(argv, omreader): ui_re = re.compile("^ui$") help_re = re.compile("^help$") find_re = re.compile("^find\s+(\w+)$") clear_cache_re = re.compile("^clear_cache$") show_re = re.compile("^show\s+(\d+):?(\d+)?$") dl_manga_re = re.compile("^download\s+(\d+)$") dl_chapter_re = re.compile("^download\s+(\d+):(\d+)$") dl_page_re = re.compile("^download\s+(\d+):(\d+):(\d+)$") # ex: download 10-20 dl_bash_manga_re = re.compile("^download\s+(\d+)\-(\d+)$") # ex: download 10:20-30 dl_bash_chapter_re = re.compile("^download\s+(\d+):(\d+)\-(\d+)$") argc = " ".join(argv) if clear_cache_re.match(argc): clear_cache() elif ui_re.match(argc): if tk is not None: show_ui(omreader) else: print "Please, install tkinter to use graphical interface." sys.exit(0) elif help_re.match(argc): print_help() # procurando uma serie elif find_re.match(argc): m = find_re.match(argc) omreader.find(*m.groups()) # mostrar informacoes elif show_re.match(argc): m = show_re.match(argc) show(omreader, *m.groups()) # baixar manga elif dl_manga_re.match(argc): m = dl_manga_re.match(argc) download(omreader, *m.groups()) # baixar capitulo elif dl_chapter_re.match(argc): m = dl_chapter_re.match(argc) download(omreader, *m.groups()) # baixar pagina elif dl_page_re.match(argc): m = dl_page_re.match(argc) download(omreader, *m.groups()) elif dl_bash_manga_re.match(argc): m = dl_bash_manga_re.match(argc) download_bash(omreader, m.groups()) elif dl_bash_chapter_re.match(argc): m = dl_bash_chapter_re.match(argc) download_bash(omreader, m.groups()) if __name__=="__main__": # executa o programa como standalone global FORCE, VERBOSE run, FORCE, VERBOSE = True, False, False argv = copy.copy(sys.argv[1:]) omreader = OMReader() if "-y" in argv: argv.remove("-y") FORCE=True if "-v" in argv: argv.remove("-v") VERBOSE=True while run: try: main(argv, omreader) run = False except timeout, e: print "timeout" except KeyboardInterrupt, e: print "\n- forced exit -\n" run = False except Exception, e: print "exp:",e print "type:", type(e) print "restarting" run = False omreader.put_cache() print ".finished.\n"
-
∞ baixa os quadrinhos do angeli
#!/usr/bin/python #-*- coding:utf-8 -*- # # author: italo mc maia # email: italo ponto maia arroba gimail ponto com # website: http://italomaia.com & http://eusouolobomau.blogspot.com/ # "Baixa os quadrinhos do angeli" import sys, os from BeautifulSoup import BeautifulSoup from urllib import urlopen WEBSITE="http://camaracom.com.br/portal3/mundo-camara-2/quadrinhos-do-angeli/" def main(args): handle = urlopen(WEBSITE) data = handle.read() handle.close() soup=BeautifulSoup(data) entry_el=x=soup.find("div", {"class":"entry"}) for img in entry_el.findAll("img"): comic_src=img.get("src") basename=os.path.basename(comic_src) with open(basename, "w") as file: handle=urlopen(comic_src) src_data=handle.read() handle.close() file.write(src_data) print "%s escrito" % basename if __name__=="__main__": print "Iniciando aplicativo por linha de comando" main(sys.argv[1:])
-
∞ imprime a lista de builtins do python em uma tabela
#!/usr/bin/python #-*- coding:utf-8 -*- # # data: 14/09/09 # autor: italo maia <italo 'ponto' maia 'arroba' ´GIMAIL´ 'ponto' com> # website: http://italomaia.com/ | http://eusouolobomau.blogspot.com/ # import sys str_size=0 builtin_list = dir(__builtins__) for item in builtin_list: str_size=max(str_size, len(item)) column_count = 3 column_str = "%"+str(str_size)+"s|" columns_str = column_str * column_count line_str = "|%s" out = (str_size+1)*column_count*"-"+"-\n" temp=[] for i in range(len(builtin_list)): item = builtin_list.pop(0) temp.append(item) if len(temp) == column_count: out+=line_str % columns_str % tuple(temp) temp=[] out+="\n" if len(temp) is 0: sys.exit(0) else: while len(temp) < column_count: temp.append("-") out+=line_str % columns_str % tuple(temp) out+="\n" out+= (str_size+1)*column_count*"-"+"-\n" print out
-
∞ reads nokia nbu contacts
# -*- coding:utf-8 -*- # # data: 01/09/09 # autor: italo moreira campelo maia # website: http://italomaia.com/ | http://eusouolobomau.blogspot.com/ # "Lê os contatos de um arquivo de backup do symbian" # nao salva a imagem dos contatos import sys import os class Contact(object): att2field={ 'N:':'name',# nome 'TEL;VOICE:':'tel', 'TEL;VOICE;HOME:':'tel_res',# telefone de casa 'TEL;VOICE;WORK':'tel_work',# telefone do trabalho 'TEL;CELL:':'cell_tell',# celular 'TEL;CELL;HOME:':'cell_home_tel', 'TEL;CELL;WORK:':'cell_work_tel', 'ADR;HOME:':'address_home', 'ADR;WORK:':'address_work', 'BDAY:':'birthday', 'PHOTO;ENCODING=BASE64:':'photo' } def __iter__(self): for value in self.att2field.values(): yield (value, getattr(self, value, '')) def __repr__(self): return str(self) def __str__(self): return str(dict(self)) def format(self, fmt="%s:%s\n"): txt='' for key, value in self: if value: txt+=fmt % (key,value) return txt def set_value(self, line): for key in self.att2field.keys(): if line.startswith(key): setattr(self, self.att2field[key], line[len(key):]) def read_contacts(file): contact = None contacts = [] for line in file.readlines(): line = line.strip() if 'BEGIN:VCARD' in line: contact = Contact() elif line.startswith('END:VCARD'): # fim do contato contacts.append(contact) contact=None else: if contact is not None: contact.set_value(line) return contacts def main(filename, output): if os.path.exists(filename): with open(filename, 'rb') as file: contacts = read_contacts(file) with open(output, 'w') as file: for i in range(len(contacts)): c = contacts[i] file.write(c.format()) file.write("\nContato %d:\n" % i) print "FINITO!" else: print "%s não existe" % filename def help(): print """Este aplicativo lê contatos de um backup symbian Argumentos: <arquivo_nbu> <arquivo_saida> 'arquivo_nbu' aponta para o arquivo de backup 'arquivo_saida' informa onde deve ser gravado o arquivo de saída Exemplo: python read_nbu.py backup.nbu contatos_2009.txt""" sys.exit(0) if __name__=='__main__': if len(sys.argv[1:])!=2: help() else: main(*sys.argv[1:])
-
∞ como scriptar em python
#!/usr/bin/python #-*- coding:utf-8 -*- # # autor: italo maia <italo 'ponto' maia 'arroba' ´GIMAIL´ 'ponto' com> # website: http://italomaia.com/ | http://eusouolobomau.blogspot.com/ # import os.path as path import sys import zipfile import getopt def help(): print """Utilização: python zip.py arq arq2... Argumentos: -h: mostra a ajuda""" sys.exit(0) def main(argv): "método que executa as funcionalidades do script" # -h -> não exige argumento opts, args = getopt.gnu_getopt(argv, "h") # garante que o arquivo de entrada é informado if len(args)==0: print "Informe pelo menos um arquivo de entrada." sys.exit(0) # interpretando os parâmetros passados for opt, value in opts: if opt=="-h": help() for filename in args: if not path.isfile(filename): print "'%s' não é um arquivo. Ignorado." % filename continue # um arquivo zipado não precisa ser zipado novamente if filename.endswith('.zip' ): print "Nada a fazer com '%s'. Ignorado." % filename continue target = path.splitext(filename)[0]+".zip" # criando o arquivo zip fzip = zipfile.ZipFile(target, 'w', zipfile.ZIP_DEFLATED) fzip.write(filename) fzip.close() print "'%s' criado." % target if __name__=="__main__": # o primeiro argumento de argv e o nome do script sendo # executado. Informação da qual não precisamos main(sys.argv[1:])
-
∞ Exemplo com gtkbuilder
#!/usr/bin/python # -*- coding:utf-8 -*- # por: italo mc maia # data: indefinido # http://italomaia.com/ # http://eusouolobomau.blogspot.com/ import gtk gtk.require('2.0') class Example(object): GLADE_FILE = "caminho/gui.glade" def __init__(self): # construindo nosso builder builder = gtk.Builder() # carregando o .glade no builder builder.add_from_file(self.__class__.GLADE_FILE) # conectando os sinais definidos durante a construção # da interface a métodos de mesmo nome no objeto atual builder.connect_signals(self) # carregando o widget criado no glade3 pelo nome self.window = self.buider.get_object("main_window") def on_window_destroy(self): # finaliza o loop do gtk # deve haver um signal de nome 'on_window_destroy' # definido na interface gtk.main_quit() def show(self): # mostra a janela self.window.show() if __name__=="__main__": e = Example() e.show() gtk.main()
-
∞ estendendo o chooserdialog do gtk com python
import gtk gtk.require('2.0') class ZipFileChooserDialog(gtk.FileChooserDialog): "Utilizado para escolher um arquivo zip do computador" def __init__(self): super(SeqFileChooserDialog, self).__init__() # inicializando botoes e texto da janela self.set_title("Carregar arquivo...") self.set_action(gtk.FILE_CHOOSER_ACTION_OPEN) self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) self.add_button(gtk.STOCK_OPEN, gtk.RESPONSE_OK) # filtro padrao file_filter = gtk.FileFilter() file_filter.set_name("Somente arquivos zip") file_filter.add_pattern("*.zip") self.add_filter(file_filter) # filtro generico file_filter = gtk.FileFilter() file_filter.set_name("Todos os arquivos") file_filter.add_pattern("*") self.add_filter(file_filter) def get_response(self): """Retorna None caso a ação seja cancelada. Retorna o arquivo fasta selecionado, caso contrário.""" response = self.run() if response == gtk.RESPONSE_OK: return self.get_filename() elif response == gtk.RESPONSE_CANCEL: return None if __name__=="__main__": chooser = ZipFileChooserDialog() r = chooser.get_response() print "resposta:", r chooser.destroy()


