Banner expansível, fácil, fácil!
Clicando aqui você saberá como botar um banner em flash expansível no seu site. Excelente. E funciona cross-browser!
ZeroFill: preencha strings com zeros
Esse script faz exatamente isso: você dá uma string e diz o tamanho que quer que ela tenha. O programa preenche o que falta para aquele tamanho com “0″.
#!/usr/bin/python
#-*- encoding: latin-1 -*-
import sys
if len(sys.argv) <=1 :
print “Você deve especificar uma string”
sys.exit(1)
else:
tam = int(sys.argv[2])
name = sys.argv[1]
print name.zfill(tam),
texme: facilita o trabalho com LateX
Pega um arquivo .tex, cria um PDF e já o visualiza. Muito útil. Ao menos pra mim.
#!/bin/bash
fname=$(echo $1 | sed “s:.tex::g”)
latex $1 && dvipdfm $fname.dvi && xpdf $fname.pdf
swapmousebuttons: troque os botões do mouse
Para quem usa Linux no HP Jornada 720 ou similares (em que se usa uma tela sensível a toque), esse script é muito útil. Ele vai alternando o significado dos botões do mouse, imaginando um mouse de três botões. Leia o script e tente entendê-lo antes de ficar perdido com seu mouse quando usá-lo.
#!/bin/bash
mode=$(xmodmap -pp | tr -s ” ” | cut -f3 -d” ” | grep Code -A 1 | tail -1)
#echo “Modo atual: $mode”
next_mode=$((($mode % 3) + 1))
case $next_mode in
1)
xmodmap -e “pointer = 1 2 3″
;;
2)
xmodmap -e “pointer = 2 3 1″
;;
3)
xmodmap -e “pointer = 3 1 2″
;;
esac
Randomize: mais coisas aleatórias, só que em Python
Eu não sou muito fã de scripts em Python, mas vá lá. Esse camarada retorna um número aleatória de dois tipos: de zero ao número dado como argumento ou entre o primeiro e o segundo argumento. Muito útil em algumas situações…
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import sys, random
if len(sys.argv) == 2:
s_lim = int(sys.argv[1])
i_lim = 0
elif len(sys.argv) == 3:
i_lim = int(sys.argv[1])
s_lim = int(sys.argv[2])
else:
print “Faltam argumentos”
sys.exit(1)
print random.randint(i_lim, s_lim)
random-item: itens aleatórios
Esse é um dos poucos scripts em que é muito bom que você tenha o zsh instalado. Você usa da seguinte maneira: “random-item < arquivo-com-entradas.txt”, e ele escolhe uma linha aleatória do arquivo. Ou “ls | random-item”, e ele pega um arquivo aleatório.
Você também pode especificar quantos itens quer.
#!/bin/zsh
if [[ $1 == “” ]];then
n=1
else
n=$1
fi
while read x;do
lista=($lista $x)
done
len_lista=$(print -ln $lista | wc -l)
for ((i=0;i<$n;i=i+1));do
r=$(($RANDOM % $len_lista))
echo $lista[$r]
done
random-file: arquivos aleatórios
Pega um determinado número de arquivos aleatórios dentro de um dado diretório.
#!/bin/bash
if [[ $1 == “” || $2 == “” ]];then
echo “Uso: $(basename $0) diretorio num_arquivos”
exit 1
else
dir=$1
n=$2
fi
lista=($dir/*)
len_lista=$(print -ln $dir/* | wc -l)
for ((i=0;i<$n;i=i+1));do
r=$(($RANDOM % $len_lista))
echo $lista[$r]
done
propalm: mande arquivos para o palm
Só pra não ter que ficar escrevendo toda a linha de comando.
Para enviar arquivos para a memória interna do seu Palm: “propalm arquivo1 arquivo2 arquivo3″.
#!/bin/bash
if [[ $1 == “” ]];then
echo “Uso: $(basename $0) arquivos”
exit 1
fi
pilot-xfer -i $*
plucker-convert: converta arquivos para o Plucker
Eu organizo toda a minha biblioteca virtual usando o seguinte formato de nomes de arquivo:
autor–idioma–titulo.formato
Daí criei esse script, que serve para passar os arquivos para o Plucker sem muito esforço. Para que ele funcione, seus arquivos devem seguir o mesmo formato que eu uso.
#!/usr/bin/python
# -*- encoding: latin-1 -*-
import sys
import os
import commands
convertidos = []
titulos_longos = []
autores={
“arthur-conan-doyle”: “doyle”,
“jonathan-edwards”:”edwards”,
“augustus-nicodemus-lopes”:”nicodemus”,
“charles-darwin”:”darwin”,
“lloyd-jones”:”jones”,
“charles-dickens”:”dickens”,
}
def Main():
global convertidos
if os.path.exists(”log.txt”):
log = open(”log.txt”, “r”)
for linha in log:
linha = linha.strip()
if len(linha) <= 0: continue
convertidos.append(linha)
log.close()
log = open(”log.txt”, “a”)
print str(convertidos)
if os.path.isdir(”/usr/lib/python”):
spider=”/usr/lib/python/site-packages/PyPlucker/Spider.py”
else:
spider=”/usr/lib/python2.4/site-packages/PyPlucker/Spider.py”
# Arquivo: autor–idioma–titulo.sufixo
target_dir = os.getcwd()
for filename in sys.argv[1:]:
filename = os.path.abspath(filename)
basename = os.path.basename(filename)
if os.path.isdir(filename): continue
if filename in convertidos:
print “Pulando”, filename
continue
autor, idioma, titulo_sufixo = basename.split(”–”)
titulo, sufixo = titulo_sufixo.split(”.”)
if autor in autores:
autor = autores[autor]
print “Autor: %s\nIdioma: %s\nTitulo: %s\nSufixo: %s” % (autor, idioma, titulo, sufixo)
titulo_bonito = “%s-%s” % (autor, titulo.replace(”-”, ” “).replace(”_”, “:”))
if len(titulo_bonito) > 31:
titulos_longos.append(filename)
print “Título muito longo. Ignorando.”
continue
print “len(titulo):”, len(titulo_bonito)
print “filename: file://%s” % filename
print “Título:”, titulo_bonito
#$spider -V 0 -f “NOME_DO_ARQUIVO” -N “TITULO BONITO” –bpp=0 –zlib-compression –no-urlinfo –stayonhost –author=desconhecido file://ARQUIVO
status, output = commands.getstatusoutput(”%s -V 2 -f \”%s\” -N \”%s\” -p \”%s\” –bpp=8 –zlib-compression –author=\”%s\” \”file://%s\”" % (spider, basename, titulo_bonito, target_dir, autor, filename))
if status != 0:
print output
print “=== Erro ===”
else:
log.write(”%s\n” % filename)
print “=== Ok ===”
for filename in titulos_longos:
filename = os.path.abspath(filename)
basename = os.path.basename(filename)
autor, idioma, titulo_sufixo = basename.split(”–”)
titulo, sufixo = titulo_sufixo.split(”.”)
if autor in autores:
autor = autores[autor]
print “Autor: %s\nIdioma: %s\nTitulo: %s\nSufixo: %s” % (autor, idioma, titulo, sufixo)
titulo_bonito = “%s-%s” % (autor, titulo.replace(”-”, ” “).replace(”_”, “:”))
if len(titulo_bonito) > 32:
while True:
msg = “Novo título: ”
print ” ” * len(msg) + “|” + “-” * 30 + “|”
novo_titulo = raw_input(msg)
if len(novo_titulo) > 32:
print “Novo título ainda é maior que 32 caracteres! (%d)” % len(novo_titulo)
continue
else:
titulo_bonito = novo_titulo
break
print “len(titulo):”, len(titulo_bonito)
print “filename: file://%s” % filename
print “Título:”, titulo_bonito
#$spider -V 0 -f “NOME_DO_ARQUIVO” -N “TITULO BONITO” –bpp=0 –zlib-compression –no-urlinfo –stayonhost –author=desconhecido file://ARQUIVO
status, output = commands.getstatusoutput(”%s -V 2 -f \”%s\” -N \”%s\” -p \”%s\” –bpp=0 –zlib-compression –no-urlinfo –stayonhost –author=\”%s\” \”file://%s\”" % (spider, basename, titulo_bonito, target_dir, autor, filename))
if status != 0:
print output
print “=== Erro ===”
else:
log.write(”%s\n” % filename)
print “=== Ok ===”
if __name__ == “__main__”:
if len(sys.argv) <= 1:
print “Uso: %s arquivo [arquivos…]” % os.path.basename(sys.argv[0])
sys.exit(1)
Main()
playsomething: Toque alguma música
Toque alguma música, não importa qual…
Esse é um script tipo “switch”. Você o chama para começar e o chama para parar.
#!/bin/bash
if ps ax | grep -v grep | grep -q madplay;then
killall madplay &> /dev/null
sleep 1
else
madplay -S -z ~/musicas/**/* &> /dev/null &
fi
