ID3 Tag Editor(GUI) using wxPython


უმრავლესობა(გარდა wave-ისა და სხვა რამოდენიმესი) აუდიო ფაილს აქვს ტეგები, რომლებიც აღწერენ ფაილს(უფრო სწორად სიმღერას/მუსიკას) მისი შემსრულებლის, შესრულების დროის(წლით), ალბომის სახელის, სიმღერის სახელის და სხვის მიხედვით. ასევე კომენტარების ჩაწერაც შეიძლება ტეგებში.

ხოდა ბევრი პროგრამით შეიძლება მათი შეცვლა, ერთ-ერთი ესაა :D

პროგის გასაშვებად აუცილებლად უნდა გეყენოთ wxPython,ვიწერთ აქედან.
არ იმუშავებს python 3.x ვერსიებზე(2to3-ც არ უშველის), ნუ თუ რამეა python 2.5 გამოიყენეთ,საიდან ვიწერთ ვიცით : )).მადლობა პატრულს :D
ხო, დანარჩენი რაღა გითხრათ პროგა რო გაეშვება იქნება რამოდენიმე ღილაკი:open,lets do it,clear tags,close.პირველი ხსნის ფაილის გასახსნელ დიალოგს,მეორე შეცლილ ტეგებს გადააკეთებს ფაილში, მესამე მიწერია ზევით,ბოლო ხურავს პროგას.

ნუ შეგიძლიათ სორსს გადახედოთ(პატარაა ;))
კლას ID3Editor-ში
open-ს აკისრია დიალოგური ბოქსის მეშვეობით აუდიო ფაილის გახსნა.

ClearTAGS ფუნქცია შლის რამე თუა ჩაწერილი ტექსტ ადგილებში

redact ფუნქცია იღებს ტექსტარეა-ებიდან მონაცემებს და მის მიხედვით არედაქტირებს ტეგებს.

source:

####Hi!
####mail me: D_dixtosa@posta.ge
####By Dixtosa
####Lead Programmer: Dixtosa
####Helper Programmer: DOSENT NEEDED
####ID3 Editor.py Final(maybe:))

#####Peoples Era
#### XXI century
###25.11.2008
##10:00
#55 second

import wx

coding=['utf-8','cp1251']

LIST=[u'saxeli',u'momgerali',u'albomi',u'tseli (4)',u'komentari',u'kodireba: '+coding[0]]

class ID3Editor(wx.Frame):
    def __init__(self, parent, id,title):
        wx.Frame.__init__(self, parent, id,title,size=(650,650))
        p=wx.Panel(self,-1)
        VBOX=wx.BoxSizer(wx.VERTICAL)
        vbox=wx.BoxSizer(wx.VERTICAL)
        hbox=wx.BoxSizer(wx.HORIZONTAL)
        vbox2=wx.BoxSizer(wx.VERTICAL)
        
        P_2=wx.Panel(p,-1)
        P_2_2=wx.Panel(P_2,-1)
        P_2_1=wx.Panel(P_2,-1)
        
        openBT=wx.Button(p,1,'Gaxsna')
        openBT.SetFocus()
        self.title=wx.TextCtrl(P_2_2,-1,'')
        self.artist=wx.TextCtrl(P_2_2,-1,'')
        self.album=wx.TextCtrl(P_2_2,-1,'')
        self.year=wx.TextCtrl(P_2_2,-1,'')
        self.comment=wx.TextCtrl(P_2_2,-1,'')
        self.coding=wx.ComboBox(P_2_2,-1,pos=(10,90),size=(100,10),choices=coding,style=wx.CB_READONLY)
        self.coding.SetValue(coding[0])
        OK_BT=wx.Button(p,10,'Lets Do It')
        closeBT=wx.Button(P_2,20,"Close")
        clearBT=wx.Button(P_2,100,"gawmenda")
        
        titl=wx.StaticText(P_2_1, -1, 'Titli:')
        artmen=wx.StaticText(P_2_1, -1, 'Artisti:')
        albumi=wx.StaticText(P_2_1, -1, 'Albomi:')
        weli=wx.StaticText(P_2_1, -1, 'weli:')
        koment=wx.StaticText(P_2_1, -1, 'Komentari:')
        koding=wx.StaticText(P_2_1, -1, 'Kodireba')
        vbox2.Add(titl,1)
        vbox2.Add(artmen,1)
        vbox2.Add(albumi,1)
        vbox2.Add(weli,1)
        vbox2.Add(koment,1)
        vbox2.Add(koding,1)
        P_2_1.SetSizer(vbox2)
        
        hbox.Add(closeBT,1,wx.EXPAND)
        hbox.Add(P_2_1,2,wx.EXPAND | wx.ALL,15)
        hbox.Add(P_2_2,2,wx.EXPAND | wx.ALL,15)
        hbox.Add(clearBT,2,wx.EXPAND |wx.LEFT,25)
        P_2.SetSizer(hbox)

        vbox.Add(self.title,2,wx.EXPAND)
        vbox.Add(self.artist,2,wx.EXPAND)
        vbox.Add(self.album,2,wx.EXPAND)
        vbox.Add(self.year,2,wx.EXPAND)
        vbox.Add(self.comment,2,wx.EXPAND)
        vbox.Add(self.coding,2,wx.EXPAND)
        P_2_2.SetSizer(vbox)

        VBOX.Add(openBT,1,wx.EXPAND)
        VBOX.Add(P_2,1,wx.EXPAND)
        VBOX.Add(OK_BT,2,wx.EXPAND)
        p.SetSizer(VBOX)
        
        ###########################################
        p.Bind(wx.EVT_BUTTON, self.open,id=1)
        p.Bind(wx.EVT_BUTTON, self.redact,id=10)
        p.Bind(wx.EVT_BUTTON, self.ClearTAGS,id=100)
        p.Bind(wx.EVT_BUTTON, self.close,id=20)
        ###########################################
        self.Centre()
    def open(self, event):
        global path
        wcd = ''
        dlg = wx.FileDialog(self, "airchie faili", wcd, "", "*.mp3;*.wav", wx.OPEN)
        if dlg.ShowModal()==wx.ID_OK:
            path=dlg.GetPath()
        dlg.Destroy()

        
        f=open(path,'r+')
        t=f.read(3)
        if t=='ID3':
            f.seek(0)
            f.write('\x00\x00\x00')
        f.seek(-128,2)
        t=f.read(3)
        if t!='TAG':
            f.seek(0,2)
            f.write('eJwLcXRnGDDwo9QGAHG/AoY='.decode('base64').decode('zlib'))
        f.close()
        #################
        for i in range(5):
            f=open(path,'r+')
            p,c=[(-125,30),(-95,30),(-65,30),(-35,4),(-31,28)][i]
            f.seek(p,2)
            fr=f.read(c)
            if i==0:
                self.title.SetValue(unicode(fr,coding[0],'ignore'))
            elif i==1:
                self.artist.SetValue(unicode(fr,coding[0],'ignore'))
            elif i==2:
                self.album.SetValue(unicode(fr,coding[0],'ignore'))
            elif i==3:
                self.year.SetValue(unicode(fr,coding[0],'ignore'))
            elif i==4:
                self.comment.SetValue(unicode(fr,coding[0],'ignore'))
        f.close()
    def ClearTAGS(self, event):
        self.title.SetValue("")
        self.artist.SetValue("")
        self.album.SetValue("")
        self.year.SetValue("")
        self.comment.SetValue("")
        self.coding.SetValue("")

    def redact(self, event):
        global path
        titli=self.title.GetValue()
        artist=self.artist.GetValue()
        albumi=self.album.GetValue()
        yaer=self.year.GetValue()
        koment=self.comment.GetValue()
        cod=self.coding.GetValue()
        f=open(path,'r+')
        for i in range(5):
            p,c=[(-125,30),(-95,30),(-65,30),(-35,4),(-31,28)][i]
            if i==0:
                t=titli
            if i==1:
                t=artist
            if i==2:
                t=albumi
            if i==3:
                t=yaer
            if i==4:
                t=koment
            f.seek(p,2)
            f.write('\x00'*c)
            f.seek(p,2)
            f.write(t.encode(cod)[:c])
        f.close()
    def close(self, event):
        self.Close()

class MyApp(wx.App):
    def OnInit(self):
        frame = ID3Editor(None, -1, 'ID3Editor')
        frame.Show(True)
        return True
app = MyApp(0)
app.MainLoop()

Advertisements

1 Response to “ID3 Tag Editor(GUI) using wxPython”


  1. 1 ირაკლი ქოიავა დეკემბერი 5, 2013, 06:42

    C-ზე მაქვს დაწერილი 4 წლის წინ ეს. ჩეგეძლო შემსრულებლის ალბომის, სიმღელის და ბევრი სხვა ინფორმაციის წაკითხვა და შეცვლა. ალბომის სურათები დამატებაც შეგეძლო :D ახალგაზრდობის წლები გამახსენდა


კომენტარის დატოვება

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s




სტატისტიკა:

  • 26,748 hits

free counters

აბირჟავებენ


%d bloggers like this: