[ mr.marvin @ 07.09.2007. 16:41 ] @
U duhu zelje da se pokrene sajt koji bi se bavio programiranjem u Python programskom jeziku, i ideje da bi mozda bilo bolje za pocetak napraviti temu na forumu u kojoj bi korisnici ostavljali svoj kod, evo da ucinim prvi korak.

Vjerovatno svako od nas na disku ima skripti/programa koji spadaju u kategoriju "alatki", programcica koji obavljaju neki jednostavan zadatak i stede mnogo vremena. Medjutim, takve programe ne ostavljate na internetu i ne dokumentujete ih iz razloga sto smatrate da svako ko zna Python moze tako nesto da uradi za relativno kratko vijeme.

Pa hajde da te programe dokumentujemo i kacimo na u ovom topicu. Kratak opis, sta program radi, zasto je nastao + kompresovani kod.
[ mr.marvin @ 07.09.2007. 16:43 ] @
Playccy - parsiranje i kopiranje fajlova u playlistama

Da li vam se desio da zelite da kopirate mnogo mp3/wml fajlova koji su razbacani u razlicitim folderima? Pojedinacno kopiranje fajlova u ovom slucaju bi potrajalo.

Ovaj Python program ce iz Winamp (*.m3u), Windows Media Player (*.wpl), ili obicne tekstualne liste, iscitati putanje fajlova i kopirati ih u dati folder:

Code:
playccy.py "playlist path" "destination folder path"


Ukoliko dvokliknete na fajl, pokrenucete jednostavnog carobnjaka.

Program je nastao kada mi se desilo da WMP kopira muziku na player i stavlja je u direktorijume koje softver u plejeru ne prepoznaje.
[ mr.marvin @ 07.09.2007. 17:27 ] @
Makedirinfo.py - stablo foldera i fajlova u xml

Ovaj program pravi mapu direktorijuma u XML formatu, biljezeci pri tome i velicinu fajlova, a opciono opis fajla i kljucne rijeci. Uz ISO fajl zelio sam da imam i strukturu diska sa folderima i fajlovima, i tako je nastao ovaj programcic.

Primjer sadrzaja XML fajla:

Code:
  <dir name="\apps\VirtualDub-1.6.17\aviproxy">
    <file name="proxyoff.reg">
      <size>
        192
      </size>
    </file>
    <file name="proxyon.reg">
      <size>
        192
      </size>
    </file>
    <file name="readme.txt">
      <size>
        1076
      </size>
    </file>
  </dir>
[ mr.marvin @ 07.09.2007. 18:27 ] @
Pystream - sadrzaj foldera kao server

Pystream ce od foldera u kome se pokrene napraviti lokalni server na portu 8000. U fajlu masks.txt izmijenite ekstenzije onih fajlova koje zelite da prikazete kada posjetioci posjete http://vas_ip:8000. IP adresu ce pronaci sam skript i na osnovu sablona kreirati index.html.

Napisano jednom prilikom kada sam sa prijateljima na jednostavan nacin zelio podijeliti neke fajlove...

Sad mislim da je dosao red i na ostale! :)
[ StefanJer91 @ 07.09.2007. 19:11 ] @
Jedan program koji je vrlo koristan za obradu slika za igre. Npr. imate 2d sprite koji ste dobili renderom u blenderu ili nekom drugom 3d programu. Program ce smanjiti velicinu sprite-a na najmanju mogucu velicinu koju on dozvoljava (napraviti sto manji okvir oko slike) i obrisati sve zamrljanje pixele, tacnije dati im boju transparentnog pixela. Program nije jos sasvim optimizovan ali sluzi svrsi. Potreban vam je pygame i pyrex(za kompajliranje pyx filea).

Code:

#main.py

from boost import*
import pygame, time
pygame.init()

image = pygame.image.load('ime_slike.bmp')
width = image.get_width()
height = image.get_height()
trans_color = image.get_at((0,0))
pixels = []

def pregled(w,h, image):
    for x in xrange(width):
        for y in xrange(height):
            test_pixel = image.get_at((x,y))
            if provera(30, test_pixel,trans_color):
                pixels.append((x,y))
            else:
                if test_pixel != trans_color:
                    image.set_at((x,y),trans_color)
                    
print 'Pregled slike...'
t = time.time()

pregled(width,height, image)
print 'Pregled zavrsen. Vreme: ',time.time()-t
xmax = 0
xmin = width

ymax = 0
ymin = height
print 'Najvece i najmanje vrednosti...'
t= time.time()
for x,y in pixels:
    if x > xmax:
        xmax = x
    elif x < xmin:
        xmin = x
    if y > ymax:
        ymax = y
    elif y < ymin:
        ymin = y
print ' Vrdnosti odredjene. Vreme: ', time.time()-t

rect = pygame.Rect(xmin,ymin, xmax-xmin,ymax-ymin)
new_surface = pygame.Surface((xmax-xmin,ymax-ymin))
new_surface.blit(image, (0,0), rect)

pygame.image.save(new_surface, 'izlaz.bmp')

print xmin, ymin        


Code:

#boost.pyx

cdef izmedju(int n, int b1,int b2):
    if b1<=n<=b2:
        return 1
    else:
        return 0

def provera(int razmak, c1, c2):
    if c1 == c2:
        return 0
    elif izmedju(c1[0], c2[0]-razmak, c2[0]+razmak)\
         and izmedju(c1[1], c2[1]-razmak, c2[1]+razmak)\
         and izmedju(c1[2], c2[2]-razmak, c2[2]+razmak):
        return 0
    else:
        return 1

[ mr.marvin @ 07.09.2007. 22:48 ] @
Treba malo vise da se potrudis :) Stavi svoj kod u module, obavezno prokomentarisi sta program radi, kako se koristi, stavi verziju, ostavi mail ako zelis... Za primjer svega ovoga pogledaj kako sam ja to uradio, i ti mozes slicno ili tako. Podrazumjeva se da ne mora biti na engleskom, vazno je da se razumije :) Nako toga kompresuj program (ili ne, ako je samo jedan fajl) i okaci na poruku u kojoj fino napises kako se program zove i ukratko sta radi. Ja sam to uradio u prvom redu, i boldovao.

Ovako copy/paste u code u postu nije od koristi, a i nepotrebno opterecuje stranicu na forumu.
[ anrxc @ 08.09.2007. 02:29 ] @

subconvert -- Converts between MicroDVD (sub) and SubRip (srt) subtitle formats

Zaista ne vidim kako se dodaje attachment, pa evo link
http://sysphere.org/temp/subconvert

Napisano iz nuzde prosle godine, vi mlade nade bi mogli poboljsati kod ili dodati podrsku za jos formata.
Opis je u zaglavlju ispod licence.
[ abc @ 15.09.2007. 15:45 ] @
Ukoliko imate interesantnu Python skriptu primenljivu u BLENDER-u posetite forum za korisnike BLENDER-a:

http://blenderserbia.20.forumer.com
[ StefanJer91 @ 30.09.2007. 10:30 ] @
Tema malo zamrla... Evo nesto od mene
[ BigBrother2005 @ 12.10.2007. 01:25 ] @
evo vam jedne male skripte koja skenira direktorijum pun divx filmova... i renameuje srt i sub fajlove da budu istog naziva kao avi fajl, NAPOMENA - direktorijume koji imaju vise od dva avi fajla preskace, takodje... ako ima od vise od dva srt ili suba u direktorijumu nece raditi poso! :)

Code:

###Divx Folder Helper v.01###
import os,sys,time

###directory enumerator###
def enumerate(dir):
    dout=os.listdir(dir)
    return dout


###avi counter###
def avicount(dirx):
    avout=0
    avcnt=os.listdir(dirx)
    for i in avcnt:
        xt=(dirx+"/"+i)
        if xt[-4:]==".avi" :
            avout+=1
        else:
            avout+=0
    return avout


###GET SUB FILE NAME###
def getsubname(dirx):
    subname={}
    cntr=0
    subnmf=os.listdir(dirx)
    for i in subnmf:
        xt=(dirx+"/"+i)
        if xt[-4:]==".srt" :
            subname[cntr]=xt
            cntr+=1
        elif xt[-4:]==".sub":
            subname[cntr]=xt
            cntr+=1
        else:
            pass
        
    return subname

###GET AVI FILE NAME###
def getaviname(dirx):
    aviname={}
    cntrx=0
    subnmf=os.listdir(dirx)
    for i in subnmf:
        xt=(dirx+"/"+i)
        if xt[-4:]==".avi" :
            aviname[cntrx]=xt
            cntrx+=1
        else:
            pass
        
    return aviname


###file - renamer - 1 AVI CASE###



###file - renamer - 2 AVI CASE###






###action-primer###

x=os.getcwd()
y=enumerate(x)
for ix in y:
    dix=(x+"/"+ix)
    if os.path.isdir(dix):
        l=avicount(ix)
        q=getsubname(ix)
        z=getaviname(ix)
        if l==0:
            pass
        elif l==1:
            for ic in q:
                print "promeni ime " , q[ic],z[0][:-4]
                zeq=(z[0][:-4]+q[ic][-4:])
                os.renames(q[ic],zeq)
                f=open((dix+"/"+"dfh.log"), "w")
                Log=""
                Log+="Originalno ime prevoda:"+q[ic]+"\n"
                Log+="Novi naziv prevoda :"+zeq+"\n"
                Log+="File generated by DFH"+"\n"
                now = time.localtime(time.time())
                vreme=time.asctime(now)
                Log+=vreme
                f.write(Log)
                f.close
        elif l==2:
            print "Ima Dva ili vishe avi fajla u direktorijumu"
                
    else:
        pass