View previous topic :: View next topic |
Author |
Message |
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Thu Sep 08, 2005 3:53 pm Post subject: [OT] - 321GtK |
|
|
Se i moderatori reputano questo thread troppo OT datemi una zappata sui piedi e chiudetelo pure. (e mi scuso)
Il motivo per cui posto e' perche' magari a qc interessa collaborare alla costruzione del mio player mp3 (e solo mp3)
Cosa e' e che funzioni ha?
1 - E' un mp3 player alla rhytmbox con ricerche e cose simili basato sul mitico mpg321
2 - Supporta diversi tipi di visualizzazione
3 - E' abbastanza "verboso" sugli mp3 che passano
4 - Supporta alcune funzioni per ispezioni veloci ma approfondite di cartelle di mp3 (con DragNDrop)
5 - Puo' scrivere/leggere il database su diversi file
6 - Ha una comoda e personalizzabile funzione di sorting (In Sviluppo)
7 - Ha una semplice playlist riorganizzabile(In Sviluppo)
8 - Supporta archivi compressi (In Sviluppo)
9 - NON ha editing TAG (per ora )
10 - NON supporta ogg :S (colpa di mpg321)
Perche' lo sto scrivendo?
1 - Perche' devo provare un po' GTK (pyGTK per essere precisi)
2 - Perche' non amo nessun player in particolare sotto Linux (e al momento non mi piace neanche il mio... per par-condicio)
3 - Perche' questa estate mi sono preso una spina sotto il piede che mi ha costretto a stare un po' fermo e non potevo continuare Auntmary
4 - Mi diverto cosi' (bhe non solo..)
A che punto siamo?
- e' in fase veramente ALFA... ma veramente!
- ha molti bug e mi farebbe comodo scovarli con dei volenterosi alfa-tester (si... ALFA!)
- devo riscrivere le routine di Resync (e' lenta ora)
- devo fare la sezione di modifica TAG con musicbrainz
- tanto tanto altro
il Nome
dai... almeno questo passatemelo!
ScreenShots
Vi mostro qualche screenshot (aggiornati alla 0.1a)
http://www.xchris.net/download.php?file=screenshots/321GtK-new-1.png
http://www.xchris.net/download.php?file=screenshots/321GtK-new-2.png
http://www.xchris.net/download.php?file=screenshots/321GtK-new-3.png
http://www.xchris.net/download.php?file=screenshots/321GtK-new-4.png
http://www.xchris.net/download.php?file=screenshots/321GtK-new-5.png
http://www.xchris.net/download.php?file=screenshots/321GtK-new-6.png
Versione in sviuppo
http://www.xchris.net/download.php?file=screenshots/321GtK-new-7.png
Dipendenze
-mpg321
-eyeD3-0.6.8
-pyGTK
-python.. (bhe)
FAQ
Mi paciuga da qualche parte il sistema?
-nella vostra home .321GtK/
-in /tmp mette una immagine (devo riscrivere la routine per l'immagine... al momento la scrivo e la leggo :S)
Feedback
ci sono ancora un po' di bug! (alcuni noti...)
Mandatemi un PM quando li trovate per favore... oppure una mail. (ancora meglio)
Bhe ma dove sta?
http://www.xchris.net/download.php?file=files/321GtK/321GtK-eyeD3-foroverlay.tar.bz2
Code: |
wget http://www.xchris.net/download.php?file=files/321GtK/321GtK-eyeD3-foroverlay.tar.bz2 -O 321GtK-eyeD3-foroverlay.tar.bz2
|
Andate nella vostra dir di overlay,starrate e eliminate il file.
(il tar contiene l'ebuild per 321GtK e per eyeD3 aggiornato)
Spero non ci siano pb con l'ebuild.
Per assurdo pur avendoci lavorato molto con Unclepine non ne ho mai scritto uno. :S
Feedback,SUGGERIMENTI,insulti e quanto altro sempre ben accetti.
Un grazie in anticipo a chi lo prova. _________________ while True:Gentoo()
Last edited by xchris on Thu Sep 22, 2005 6:45 am; edited 5 times in total |
|
Back to top |
|
|
Ic3M4n Advocate
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Thu Sep 08, 2005 4:07 pm Post subject: |
|
|
adesso me lo scarico e preparati ad essere inondato di richieste di ogni tipo...
intanto... grazie! |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Thu Sep 08, 2005 4:10 pm Post subject: |
|
|
vedrai che piu' che altro saranno bug report...
anche se decisamente alfa ho preferito postare perche' n-tester sono meglio di uno
(bhe almeno siamo in 2 )
ciao e grazie _________________ while True:Gentoo() |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Thu Sep 08, 2005 4:14 pm Post subject: |
|
|
Hai valutato per caso l'idea di sfruttare un player in python piuttosto che mpg321? Cosa ti ha fatto pendere per questa soluzione?
Ti posto inoltre quello di cui ti avevo accennato in privato, si tratta di una classe per leggere gli id di qualsiasi versione (per quanto sono riuscito a provare) di ID3 , il codice è un po' sporcato da cose che non vengono utilizzate nella classe ma solo nel resto del programma, ma se ti sembera' interessante posso anche vedere di sistemarlo. Purtroppo non sono del tutto sicuro che la stringa di normalizzazione dei nomi venga letta correttamente nel forum phpBB, per sicurezza uppo il file anche su www.sideralis.net/blackman/philips.py
Come dipendenza ha mad e id3reader, l'indirizzo e' nei commenti.
Allego anche il normalizer.py per la normalizzazione dei nomi qualora intendessi utilizzare questo codice.
Code: |
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
# Code from Federico Galli <fede@sideralis.net>
# Many bugs solved by Riccardo Galli <riquito@sideralis.net>
# Developed for Sideralis Programs - http://www.sideralis.net
# Write songs on Philips HDD <100 (60,65,70 ...)
# Thanks to http://nedbatchelder.com/ for the id3reader module
# and to http://dhat.webpark.cz/ for his sourcecode.
# Beta Version -First time full running : mon 10 jan 2005
# jan 11 2005 code cleand and more power to the parser
import os,sys,re, shutil
import sqlite
import mad,id3reader
from normalizer import fix_unicode
from time import time
MOUNT_POINT='/mnt/philipsMp3_1'
HDD_DIR='_system/media/audio'
#MOUNT_POINT='tmp'
#HDD_DIR=''
MAX_QUERY="\
SELECT cSongTitle,cArtistName,cAlbumTitle,iTrackNr,iTrackLength,iNrPlayed,\
cFilename,iDirId,iYear,cGenreName,iBitRate,iSampleRate,iFileSize,iMediaType \
FROM SongTable \
INNER JOIN GenreTable ON SongTable.iGenreId=GenreTable.iGenreId \
INNER JOIN ArtistTable ON SongTable.iArtistId=ArtistTable.iArtistId \
INNER JOIN AlbumTable ON SongTable.iAlbumId=AlbumTable.iAlbumId\
"
verbose=1
#This is for normalizing names
noaccents="""\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\
\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789\
:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\
\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\
\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ\
¶·¸¹º»¼½¾¿AAAAAA\xc6CEEEEIIII\xd0NOOOOO\xd7\xd8UUUUY\xde\xdfaaaaaa\xe6ceeeeiiii\
\xf0nooooo\xf7\xf8uuuuy\xfey"""
#Regular Ex about music genres
reGenre=re.compile('\((?P<idIfName>\d+)\)\s?(?P<nameIfId>.+)|\((?P<idNoName>\d+)\)|(?P<nameNoId>.+)')
class MP3(object):
__slots__=['Artist','Album','Title','FileName','TrackNum','Genre',
'Year','Bitrate','Samplerate','Length','Size','MediaType']
def __str__(self):
text=[]
for i in MP3.__slots__:
value=getattr(self,i)
if i in ('Year','TrackNum','Length','Size','Samplerate','Bitrate','MediaType'):
text.append(('%s: %s' % (i,value)).encode('ascii','replace'))
else:
if isinstance(value,unicode):
text.append('%s: %s' % (i,value.encode('iso-8859-1','replace')))
else:
text.append('%s: %s' % (i,value.decode('iso-8859-1','replace').encode('iso-8859-1','replace')))
try:
bau='\n'.join(text)
except UnicodeDecodeError,e:
for line in text:
sys.stdout.write(repr(line))
print
raise e
return bau
def __cmp__(self,other):
if isinstance(other,MP3):
for i in MP3.__slots__:
if cmp(getattr(self,i),getattr(other,i))!=0:
return cmp(getattr(self,i),getattr(other,i))
return 0
else:
return cmp(self,other)
def debug(text):
global verbose
if verbose:
print text
RISCHIOOO=[]
def read_id3(dirname,filename):
#
# STRONG AND POWERFUL PARSER
#
#debug('Dirname: '+dirname) #Strippare a 260 caratteri
pathToFile=os.path.join(dirname,filename)
mp3File=MP3()
now=time()
print 'ID3 READER'
id3r = id3reader.Reader(pathToFile)
tot=time()-now
print ' ',tot
if tot>2:
global RISCHIOOO
RISCHIOOO.append(pathToFile)
#mp3File.FileName=filename[:100].translate(noaccents)
mp3File.FileName=fix_unicode(filename[:100].decode(sys.getfilesystemencoding()))
mp3File.Album=(id3r.getValue('album') or 'No Album Found').lower().strip()
if isinstance(mp3File.Album,str):
mp3File.Album=mp3File.Album.translate(noaccents)
else:
mp3File.Album=mp3File.Album.encode('latin-1').translate(noaccents)
mp3File.Artist=(id3r.getValue('performer') or 'No Artist Found').lower().strip()
if isinstance(mp3File.Artist,str):
mp3File.Artist=mp3File.Artist.translate(noaccents)
else:
mp3File.Artist=mp3File.Artist.encode('latin-1').translate(noaccents)
# Se 'No Title Found' Il nome del titolo è strippato a 100 caratteri, lo strip a 4 toglie l'estensione.
# Qui mettiamo il file name per rendere migliore la lettura
mp3File.Title=(id3r.getValue('title') or filename[:-4][:100]).lower().strip()
if isinstance(mp3File.Title,str):
mp3File.Title=mp3File.Title.translate(noaccents)
else:
mp3File.Title=mp3File.Title.encode('latin-1').translate(noaccents)
# Procedura per "tuplare" le tracce :) Il secondo dato, la traccia finale, qualora presente,
# viene perso durante la procedura. Il software del lettore utilizza solo il primo campo.
mp3File.TrackNum=id3r.getValue('track')
if mp3File.TrackNum:
track = mp3File.TrackNum.split('/')
if int(track[0])=='0': # La traccia 0 è un po' stupida :)
#debug('Porto la traccia 0 a 1')
track[0]=1
mp3File.TrackNum=int(track[0])
else:
mp3File.TrackNum=1
year=id3r.getValue('year')
if year:
try:
year+1
except TypeError:
year=year.strip()
if not year: year=0
else:
try: year=int(year)
except ValueError:
year=0
else:
year=0
mp3File.Year=year #Se non presente il lettore accetta 0
# Parsing del genere
mp3File.Genre=id3r.getValue('genre') or '(255)' #No Genre Found
tmpGenre=reGenre.findall(mp3File.Genre)[0]
if tmpGenre[1]:
mp3File.Genre=tmpGenre[1]
elif tmpGenre[2]:
if tmpGenre[2]=='255':
mp3File.Genre='No Genre Found'
else:
tmpGenreIso=int(tmpGenre[2].encode('iso-8859-1','replace'))
mp3File.Genre=id3reader._genres[tmpGenreIso]
elif tmpGenre[3]:
mp3File.Genre=tmpGenre[3]
# Formattazione lower strip e translate del genere
mp3File.Genre=mp3File.Genre.lower().strip()
if isinstance(mp3File.Genre,str):
mp3File.Genre=mp3File.Genre.translate(noaccents)
else:
mp3File.Genre=mp3File.Genre.encode('latin-1').translate(noaccents)
now=time()
print 'MAD'
madr = mad.MadFile(pathToFile)
mp3File.Bitrate=madr.bitrate()/1000
mp3File.Samplerate=madr.samplerate()
mp3File.Length=madr.total_time()/1000
print ' ',time()-now
mp3File.Size=os.path.getsize(pathToFile)/1024
mp3File.MediaType=1 # 1=MP3, 0=WMA. Attualmente e probabilmente anche in futuro supporterò solo mp3.
return mp3File
|
normalizer.py
Code: |
#code found in the Python CoockBook. It's a comment in the recipe
#http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/251871
#wrote by Andrew Dalke
# If the character doesn't exist in the dictionary, add it as None
# and also return None. This tells the translate to delete the character
# and makes the next lookup for that character faster.
class XLate(dict):
def __getitem__(self, c):
try:
return dict.__getitem__(self, c)
except KeyError:
self[c] = None
return None
# Define the translation table. I needed to hammer unicode going to
# NCBI's web services (for Biopython's EUtils package) so I used the
# table defined at
# http://www.nlm.nih.gov/databases/dtd/medline_character_database.utf8
# This is not as extensive as the original conversion set.
class XLate(dict):
def __getitem__(self, c):
try:
return dict.__getitem__(self, c)
except KeyError:
self[c] = None
return None
# Convert these unicode characters into ASCII
xlate = XLate({
# The note at the bottom of the page says "the inverted question
# mark represents a questionable character found as a result of
# NLM's conversion from its legacy extended EBCDIC character set
# to UNICODE UTF-8." I do not use it but leave it here for
# completeness.
ord(u"\N{INVERTED QUESTION MARK}"): None,
ord(u"\N{LATIN CAPITAL LETTER O WITH STROKE}"): u"O",
ord(u"\N{LATIN SMALL LETTER A WITH GRAVE}"): u"a",
ord(u"\N{LATIN SMALL LETTER A WITH ACUTE}"): u"a",
ord(u"\N{LATIN SMALL LETTER A WITH CIRCUMFLEX}"): u"a",
ord(u"\N{LATIN SMALL LETTER A WITH TILDE}"): u"a",
ord(u"\N{LATIN SMALL LETTER A WITH DIAERESIS}"): u"a",
ord(u"\N{LATIN SMALL LETTER A WITH RING ABOVE}"): u"a",
ord(u"\N{LATIN SMALL LETTER C WITH CEDILLA}"): u"c",
ord(u"\N{LATIN SMALL LETTER E WITH GRAVE}"): u"e",
ord(u"\N{LATIN SMALL LETTER E WITH ACUTE}"): u"e",
ord(u"\N{LATIN SMALL LETTER E WITH CIRCUMFLEX}"): u"e",
ord(u"\N{LATIN SMALL LETTER E WITH DIAERESIS}"): u"e",
ord(u"\N{LATIN SMALL LETTER I WITH GRAVE}"): u"i",
ord(u"\N{LATIN SMALL LETTER I WITH ACUTE}"): u"i",
ord(u"\N{LATIN SMALL LETTER I WITH CIRCUMFLEX}"): u"i",
ord(u"\N{LATIN SMALL LETTER I WITH DIAERESIS}"): u"i",
ord(u"\N{LATIN SMALL LETTER N WITH TILDE}"): u"n",
ord(u"\N{LATIN SMALL LETTER O WITH GRAVE}"): u"o",
ord(u"\N{LATIN SMALL LETTER O WITH ACUTE}"): u"o",
ord(u"\N{LATIN SMALL LETTER O WITH CIRCUMFLEX}"): u"o",
ord(u"\N{LATIN SMALL LETTER O WITH TILDE}"): u"o",
ord(u"\N{LATIN SMALL LETTER O WITH DIAERESIS}"): u"o",
ord(u"\N{LATIN SMALL LETTER O WITH STROKE}"): u"o",
ord(u"\N{LATIN SMALL LETTER U WITH GRAVE}"): u"u",
ord(u"\N{LATIN SMALL LETTER U WITH ACUTE}"): u"u",
ord(u"\N{LATIN SMALL LETTER U WITH CIRCUMFLEX}"): u"u",
ord(u"\N{LATIN SMALL LETTER U WITH DIAERESIS}"): u"u",
ord(u"\N{LATIN SMALL LETTER Y WITH ACUTE}"): u"y",
ord(u"\N{LATIN SMALL LETTER Y WITH DIAERESIS}"): u"y",
ord(u"\N{LATIN SMALL LETTER A WITH MACRON}"): u"a",
ord(u"\N{LATIN SMALL LETTER A WITH BREVE}"): u"a",
ord(u"\N{LATIN SMALL LETTER C WITH ACUTE}"): u"c",
ord(u"\N{LATIN SMALL LETTER C WITH CIRCUMFLEX}"): u"c",
ord(u"\N{LATIN SMALL LETTER E WITH MACRON}"): u"e",
ord(u"\N{LATIN SMALL LETTER E WITH BREVE}"): u"e",
ord(u"\N{LATIN SMALL LETTER G WITH CIRCUMFLEX}"): u"g",
ord(u"\N{LATIN SMALL LETTER G WITH BREVE}"): u"g",
ord(u"\N{LATIN SMALL LETTER G WITH CEDILLA}"): u"g",
ord(u"\N{LATIN SMALL LETTER H WITH CIRCUMFLEX}"): u"h",
ord(u"\N{LATIN SMALL LETTER I WITH TILDE}"): u"i",
ord(u"\N{LATIN SMALL LETTER I WITH MACRON}"): u"i",
ord(u"\N{LATIN SMALL LETTER I WITH BREVE}"): u"i",
ord(u"\N{LATIN SMALL LETTER J WITH CIRCUMFLEX}"): u"j",
ord(u"\N{LATIN SMALL LETTER K WITH CEDILLA}"): u"k",
ord(u"\N{LATIN SMALL LETTER L WITH ACUTE}"): u"l",
ord(u"\N{LATIN SMALL LETTER L WITH CEDILLA}"): u"l",
ord(u"\N{LATIN CAPITAL LETTER L WITH STROKE}"): u"L",
ord(u"\N{LATIN SMALL LETTER L WITH STROKE}"): u"l",
ord(u"\N{LATIN SMALL LETTER N WITH ACUTE}"): u"n",
ord(u"\N{LATIN SMALL LETTER N WITH CEDILLA}"): u"n",
ord(u"\N{LATIN SMALL LETTER O WITH MACRON}"): u"o",
ord(u"\N{LATIN SMALL LETTER O WITH BREVE}"): u"o",
ord(u"\N{LATIN SMALL LETTER R WITH ACUTE}"): u"r",
ord(u"\N{LATIN SMALL LETTER R WITH CEDILLA}"): u"r",
ord(u"\N{LATIN SMALL LETTER S WITH ACUTE}"): u"s",
ord(u"\N{LATIN SMALL LETTER S WITH CIRCUMFLEX}"): u"s",
ord(u"\N{LATIN SMALL LETTER S WITH CEDILLA}"): u"s",
ord(u"\N{LATIN SMALL LETTER T WITH CEDILLA}"): u"t",
ord(u"\N{LATIN SMALL LETTER U WITH TILDE}"): u"u",
ord(u"\N{LATIN SMALL LETTER U WITH MACRON}"): u"u",
ord(u"\N{LATIN SMALL LETTER U WITH BREVE}"): u"u",
ord(u"\N{LATIN SMALL LETTER U WITH RING ABOVE}"): u"u",
ord(u"\N{LATIN SMALL LETTER W WITH CIRCUMFLEX}"): u"w",
ord(u"\N{LATIN SMALL LETTER Y WITH CIRCUMFLEX}"): u"y",
ord(u"\N{LATIN SMALL LETTER Z WITH ACUTE}"): u"z",
ord(u"\N{LATIN SMALL LETTER W WITH GRAVE}"): u"w",
ord(u"\N{LATIN SMALL LETTER W WITH ACUTE}"): u"w",
ord(u"\N{LATIN SMALL LETTER W WITH DIAERESIS}"): u"w",
ord(u"\N{LATIN SMALL LETTER Y WITH GRAVE}"): u"y",
})
# These are the ASCII characters NCBI knows about. Note that I'm
# building one unicode string here, and not a tuple of unicode
# characters.
for c in (u"\N{SPACE}"
u"\N{EXCLAMATION MARK}"
u"\N{QUOTATION MARK}"
u"\N{NUMBER SIGN}"
u"\N{DOLLAR SIGN}"
u"\N{PERCENT SIGN}"
u"\N{AMPERSAND}"
u"\N{APOSTROPHE}"
u"\N{LEFT PARENTHESIS}"
u"\N{RIGHT PARENTHESIS}"
u"\N{ASTERISK}"
u"\N{PLUS SIGN}"
u"\N{COMMA}"
u"\N{HYPHEN-MINUS}"
u"\N{FULL STOP}"
u"\N{SOLIDUS}"
u"\N{DIGIT ZERO}"
u"\N{DIGIT ONE}"
u"\N{DIGIT TWO}"
u"\N{DIGIT THREE}"
u"\N{DIGIT FOUR}"
u"\N{DIGIT FIVE}"
u"\N{DIGIT SIX}"
u"\N{DIGIT SEVEN}"
u"\N{DIGIT EIGHT}"
u"\N{DIGIT NINE}"
u"\N{COLON}"
u"\N{SEMICOLON}"
u"\N{LESS-THAN SIGN}"
u"\N{EQUALS SIGN}"
u"\N{GREATER-THAN SIGN}"
u"\N{QUESTION MARK}"
u"\N{COMMERCIAL AT}"
u"\N{LATIN CAPITAL LETTER A}"
u"\N{LATIN CAPITAL LETTER B}"
u"\N{LATIN CAPITAL LETTER C}"
u"\N{LATIN CAPITAL LETTER D}"
u"\N{LATIN CAPITAL LETTER E}"
u"\N{LATIN CAPITAL LETTER F}"
u"\N{LATIN CAPITAL LETTER G}"
u"\N{LATIN CAPITAL LETTER H}"
u"\N{LATIN CAPITAL LETTER I}"
u"\N{LATIN CAPITAL LETTER J}"
u"\N{LATIN CAPITAL LETTER K}"
u"\N{LATIN CAPITAL LETTER L}"
u"\N{LATIN CAPITAL LETTER M}"
u"\N{LATIN CAPITAL LETTER N}"
u"\N{LATIN CAPITAL LETTER O}"
u"\N{LATIN CAPITAL LETTER P}"
u"\N{LATIN CAPITAL LETTER Q}"
u"\N{LATIN CAPITAL LETTER R}"
u"\N{LATIN CAPITAL LETTER S}"
u"\N{LATIN CAPITAL LETTER T}"
u"\N{LATIN CAPITAL LETTER U}"
u"\N{LATIN CAPITAL LETTER V}"
u"\N{LATIN CAPITAL LETTER W}"
u"\N{LATIN CAPITAL LETTER X}"
u"\N{LATIN CAPITAL LETTER Y}"
u"\N{LATIN CAPITAL LETTER Z}"
u"\N{LEFT SQUARE BRACKET}"
u"\N{REVERSE SOLIDUS}"
u"\N{RIGHT SQUARE BRACKET}"
u"\N{LOW LINE}"
u"\N{LATIN SMALL LETTER A}"
u"\N{LATIN SMALL LETTER B}"
u"\N{LATIN SMALL LETTER C}"
u"\N{LATIN SMALL LETTER D}"
u"\N{LATIN SMALL LETTER E}"
u"\N{LATIN SMALL LETTER F}"
u"\N{LATIN SMALL LETTER G}"
u"\N{LATIN SMALL LETTER H}"
u"\N{LATIN SMALL LETTER I}"
u"\N{LATIN SMALL LETTER J}"
u"\N{LATIN SMALL LETTER K}"
u"\N{LATIN SMALL LETTER L}"
u"\N{LATIN SMALL LETTER M}"
u"\N{LATIN SMALL LETTER N}"
u"\N{LATIN SMALL LETTER O}"
u"\N{LATIN SMALL LETTER P}"
u"\N{LATIN SMALL LETTER Q}"
u"\N{LATIN SMALL LETTER R}"
u"\N{LATIN SMALL LETTER S}"
u"\N{LATIN SMALL LETTER T}"
u"\N{LATIN SMALL LETTER U}"
u"\N{LATIN SMALL LETTER V}"
u"\N{LATIN SMALL LETTER W}"
u"\N{LATIN SMALL LETTER X}"
u"\N{LATIN SMALL LETTER Y}"
u"\N{LATIN SMALL LETTER Z}"
u"\N{VERTICAL LINE}"
u"\N{TILDE}"):
xlate[ord(c)] = c
def fix_unicode(s):
return str(s.translate(xlate))
|
_________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
|
Ic3M4n Advocate
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Thu Sep 08, 2005 4:17 pm Post subject: |
|
|
beh, diciamo allora che iniziamo domani... perchè adesso ho da:
Code: | [ebuild U ] x11-libs/gtk+-2.8.3-r1 [2.6.8]
[ebuild N ] media-libs/libao-0.8.5
[ebuild N ] media-sound/mpg321-0.2.10-r2
[ebuild N ] dev-python/eyeD3-0.6.2
[ebuild N ] dev-python/pycairo-0.9.0
[ebuild U ] dev-python/pygtk-2.7.4 [2.6.1]
[ebuild N ] media-sound/321GtK-0.1 |
emergere queste simpatiche cosette... cmq una cosa: solitamente programmi in alfa ci si aspetterebbe anche un ~x86 come minimo, invece me lo fa emergere senza aggiungerlo all /etc/portage/package.keywords. così è più comodo, di sicuro, però di solito li si mette masked no? |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Thu Sep 08, 2005 4:21 pm Post subject: |
|
|
ho usato come player mpg321 perche':
1 - generalmente funziona bene
2 - supporta diversi sound-system
3 - ha un modo di funzionamento REMOTE fatto apposta
4 - un po' cosi'...
id3reader me lo avevi consigliato ma ha un problema a mio avviso.
Legge solo i tag e non puo' scriverli.
Siccome in futuro li scrivero' penso che rimarro' su eyeD3.
Ho contattato lo sviluppatore di eyeD3 e mi ha detto che supportera i 2.2 in lettura.
Visto che i 2.2 sono deprecati penso che li leggero' e li riscrivero' nella versione + appropriata.
Se dovessi aver casini con eyeD3 e' un attimo cambiare (il tutto e' principalmente in 4 file: gui,mpg321_lib (creata ad hoc),aux_class (un po' di roba),321gtk (la principale)
Grazie mille!
Christian _________________ while True:Gentoo() |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Thu Sep 08, 2005 4:24 pm Post subject: |
|
|
Ic3M4n wrote: |
emergere queste simpatiche cosette... cmq una cosa: solitamente programmi in alfa ci si aspetterebbe anche un ~x86 come minimo, invece me lo fa emergere senza aggiungerlo all /etc/portage/package.keywords. così è più comodo, di sicuro, però di solito li si mette masked no? |
hai pienamente ragione.
Pero' considerato il fatto che al momento e' un pacchetto decisamente "sotto controllo" (da parte di chi lo installa) e non e' distribuito in modo ampio l'ho lasciato x86 per non sporcarvi il sistema. (io spesso mi rompo le palle se per provare un ebuild devo andare a sminchiare 3000 cose)
pycairo & co sono dovuti al nuovo pygtk credo...
io non lo uso perche' sono fermo a quello prima.
Mi auguro non ci siano pb... _________________ while True:Gentoo() |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Thu Sep 08, 2005 4:32 pm Post subject: |
|
|
Chi ha pygtk e gtk nuove (per intenderci quelle derivanti dall'utilizzo dell'ultimo gnome) dovrebbe verde al limite un po' di warning, voci mi han gia' detto che su sidesms per esempio saltano fuori una paccata di warning ma che continua a funzionare tutto.
Per il resto, ho emerso il programma senza problemi e mi e' partito pure, ora lo provo un po' e vediamo se riesco a schiantarlo
Fede _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Thu Sep 08, 2005 4:34 pm Post subject: |
|
|
federico wrote: |
Per il resto, ho emerso il programma senza problemi e mi e' partito pure, ora lo provo un po' e vediamo se riesco a schiantarlo
Fede |
di sicuro riuscirai...
alcuni bug li conosco pure io..
ma ho preferito iniziare a renderlo pub per raccoglieri abbastanza in fretta.
Spero non vi offendiate se vi sfrutto un pochino
Grazie Mille!!!! _________________ while True:Gentoo() |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Thu Sep 08, 2005 4:46 pm Post subject: |
|
|
Anche io amo sfruttare la gente di questo forum perche' sono tutti ottimi tester .)
Dunque, PENSO di aver configurato correttamente il programma prima dell'utilizzo, e poi sono passato ad un sync del database.
Inesorabilmente ad un certo punto, sempre lo stesso il programma inizia a consumare il 100% di cpu e buonanotte al secchio. Ecco un po' di debug:
Code: |
utf8 problems with /home/blackman/share/mp3/HardCore/HARDCORE - Gabber - Neophyte - Antimix.mp3
utf8 problems with /home/blackman/share/mp3/HardCore/Rotterdam Terror Corps - Motherfuckers.mp3
--> stop
--> quit
User Abort Request!
Cannot retrive file info: /home/blackman/share/mp3/HardCore/Rotterdam terror corps - Industrial life 2040.mp3
--> stop
--> quit
|
(Cavoli se passo per tabbozzo, questa e' la dir della festa )
Ho provato a passare quella canzone al mio macinatore postato sopra e la prende correttamente, forse c'e' un qualche tipo di errore di parsing nel codice? _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Thu Sep 08, 2005 4:53 pm Post subject: |
|
|
credo di no...
a parte i warning su utf8.
Ho idea che eyeD3 si blocchi su un mp3 specifico.
magari prova a modificare /usr/local/share/321GtK/aux_class.py
e in linea 68 metti (sotto def retrieve)
print self.file
cosi' vediamo che mp3 e'... e poi se me lo passi vedo cosa c'e' che non va.
(e poi lo cancello signori della SIAE)
ciao e grazie
eventualmente prova quickscandir su altra dir... tanto per vederlo andare. _________________ while True:Gentoo() |
|
Back to top |
|
|
.:deadhead:. Advocate
Joined: 25 Nov 2003 Posts: 2963 Location: Milano, Italy
|
Posted: Thu Sep 08, 2005 5:27 pm Post subject: |
|
|
Fede fede, secondo me il gtk321 dopo una sana infanzia a suon di rock [basta vedere gli screen di xchris per capire che è cresciuto bene], appena ha messo piede in quella cartella da girone infernale, s'è spaventato Metti il solito, lascia stare la festa. Punk & Rock fanno bene al python _________________ Proudly member of the Gentoo Documentation Project: the Italian Conspiracy ! |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Thu Sep 08, 2005 5:31 pm Post subject: |
|
|
.:deadhead:. wrote: | Fede fede, secondo me il gtk321 dopo una sana infanzia a suon di rock [basta vedere gli screen di xchris per capire che è cresciuto bene], appena ha messo piede in quella cartella da girone infernale, s'è spaventato |
Si, infatti ora gli ho dato in pasto i "Funeral for a friend" ( http://www.funeralforafriend.com/ ) un gruppo che ha una sonorita' punk melodico con qualche spruzzo di doppio pedale e growl alla black metal (li ho sentiti al rock in idro e mi strippano) e funziona il programma Farei un po' di modifiche ma mi rendo conto che ci saranno prima altre priorita'
Fede _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
|
codadilupo Advocate
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Thu Sep 08, 2005 5:48 pm Post subject: |
|
|
per ora tutto bene
per cui mi permetto la prima richiesta (nel caso, prenditela con randomaze, che me l'ha involontariamente suggerito ): che sarebbe possibile dare in pasto anche archivi ? tipo, io ho molte canzoni archiviate in tar.bz2, o zip, o tar,gz, (per risparmiare spazio, e per rendere le cose piu' semplici agl'EMuliani, e sarebbe comodo non dover decomprimere a mano quello che voglio sentire, ma, ad esempio, farglielo decomprimere al volo, magari in swap, o RAM.
Coda |
|
Back to top |
|
|
.:deadhead:. Advocate
Joined: 25 Nov 2003 Posts: 2963 Location: Milano, Italy
|
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Thu Sep 08, 2005 9:12 pm Post subject: |
|
|
@coda: la feature e' interessante anche se a dire il vero non so quanto possa interessare... (e' un po' di nicchia)
e poi quanto spazio salvi?? ok per emule...
earcar mi ha fatto notare un bug: non salva il db dopo il resync.E' una stupidata di bug.. domani posto una ver corretta. (ora basta pigiare save)
grazie a tutti
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
Ic3M4n Advocate
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Fri Sep 09, 2005 12:26 am Post subject: |
|
|
una domanda... forse mi è sfuggito, ma è normale che tutti gli mp3 rimangano mischiati insieme? e soprattutto: è normale che me li elenchi in base al nome del file e non seguendo artista e titolo? più che altro mi sembra scomodo dover cercare in un elenco lunghissimo una canzone, contando anche che se utilizzo la funzione "cerca" non mi seleziona il file che vorrei sentire ma sembra non fare niente. |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Fri Sep 09, 2005 7:10 am Post subject: |
|
|
le colonne sono "sortabili" cliccando sul nome della colonna.
In alto poi puoi fare la ricerca secondo diversi criteri.
Ultimo tipo di ricerca...e' quella offerta da gtk stessa. (anche se devo ammettere che devo risolvere un bug stupido)
Ovvero...
Cambiando nella combobox su artista ad esempio e cliccando su un elemento della lista e iniziando a digitare...
fa il match dalla prima lettera.
(il bug e' che di default non lo fa subito sul titolo...dovete spostarlo su artist e rimetterlo su title... coreggo...)
Ciao
EDIT: in che senso la funzione ricerca non va? a me pare vada... altre esperienze in merito?
EDIT2: con eyeD3-0.6.8 (non presente in portage :S ... legge i tag 2.2) _________________ while True:Gentoo() |
|
Back to top |
|
|
earcar Guru
Joined: 20 Sep 2004 Posts: 425 Location: Bologna, Italy
|
Posted: Fri Sep 09, 2005 8:10 am Post subject: |
|
|
Oltre a qualche buggetto di gioventù, 321GtK (cambia nome per favore! ) è un'app che promette bene! Poi considerando il tempo in cui è stata scritta...
Per farla promettere anche meglio mi piacerebbe che avesse un paio di funzionalità in più:
Avete presente la funzione "Tieni organizzata la cartella iTunes Music"?
Code: | <cartella musica>/<artista>/<album>/<numero della traccia> <titolo del brano>.mp3 |
In aggiunta a "Copia i file nella cartella iTunes Music quando vengono aggiunti alla libreria" IMHO diventa fondamentale x l'organizzazione della musica (specie se si ha qlcs com 3000 mp3) anche xkè è molto comodo fare doppio click (o drag n drop) sul brano e vederselo già copiato nella partizione dedicata alla musica, sotto la cartella giusta (per non parlare del fatto che quando cambi un tag id3 come artista o album cambia anche la cartella....)
L'altra funzione che su linux trovo indispensabile è un'interfaccia con l'esterno stile dcop...
Ho una tastiera mutimediale e uso hotkeys configurato in maniera che quando premo un tasto tra quelli stop, play ecc. si avvia uno script che verifica quale player è attivo (uso amarok e mpd in genere) e lancia il comando apposito per quel programma.
Poi ho la mania di avere sotto controllo il mio sistema tramite torsmo e non può certo mancare il nome della canzone che sta suonando!
Ultima cosa: l'icona nella taskbar! così clicchi e sparisce la finestra dal desktop
Sono un pigrone eh?
Ciauz
earcar _________________ Bip... bip... bip... -- Sputnik 1 |
|
Back to top |
|
|
neon l33t
Joined: 04 Aug 2003 Posts: 759 Location: Catania, Italy, Europe
|
Posted: Fri Sep 09, 2005 12:36 pm Post subject: |
|
|
earcar wrote: | Avete presente la funzione "Tieni organizzata la cartella iTunes Music"?
Code: | <cartella musica>/<artista>/<album>/<numero della traccia> <titolo del brano>.mp3 |
In aggiunta a "Copia i file nella cartella iTunes Music quando vengono aggiunti alla libreria" IMHO diventa fondamentale x l'organizzazione della musica (specie se si ha qlcs com 3000 mp3) anche xk� � molto comodo fare doppio click (o drag n drop) sul brano e vederselo gi� copiato nella partizione dedicata alla musica, sotto la cartella giusta (per non parlare del fatto che quando cambi un tag id3 come artista o album cambia anche la cartella....) |
Si, sono delle funzioni molto comode ma vedendo che ultimamente si discute anche su come vengono implementate le playlist nei lettori mp3 e chi ne detiene il brevetto non vorrei che il povero xchris si vedesse accusato dalla mammina di itunes di scopiazzatura di idee o simili... _________________ Io credo che le tecnologie siano moralmente neutrali fino a quando non le utilizziamo - William Gibson
LINEE GUIDA DEL FORUM |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Fri Sep 09, 2005 1:30 pm Post subject: |
|
|
Io tra le features che ho desiderato ieri utilizzandolo parecchio ci sarebbero:
-Maggiore funzionalita' dello skip
-Leggere il titolo della canzone nell'icona relativa alla finestra nella taskbar
MA SOPRATTUTTO
Vorrei che le canzoni con lo stesso album venissero caricate sortate in ordine di numero e non in ordine di nome Questo sarebbe figo.
Fede _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Fri Sep 09, 2005 1:35 pm Post subject: |
|
|
senza tener conto che io quella funzionalità la disabilito subito su Itunes...
l'idea dei tar.gz & co non e' male ma non la vedo come una priorita adesso. (potrei eventualmente fare una versione iniziale con lo scompattamento in /tmp (o dir personalizzata) e l'aggiunta delle song in modalita' quickscan e poi si eventualmente si fa pulizia alla chiusura/apertura del prg.
le priorita' sono:
- la stabilità di questa versione
- il corretto funzionamento dei tag
- eventualmente una trayicon (e la scelta di chiusura o minimizzazione su on_delete)
- l'editing dei tag con musicbrainz
DCOP se non sbaglio e' roba di kde... (quindi...)
eventualmente metto come opzione il salvataggio del brano corrente (e di tutte le info relative) in un file temporaneo in modo tale da essere recuperato in modo agevole per qualunque scopo.Per il controllo ci penso su.. _________________ while True:Gentoo() |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Fri Sep 09, 2005 1:40 pm Post subject: |
|
|
federico wrote: | Io tra le features che ho desiderato ieri utilizzandolo parecchio ci sarebbero:
-Maggiore funzionalita' dello skip
|
in che senso? (ah.. ho aggiustato la barra ballerina)
federico wrote: |
-Leggere il titolo della canzone nell'icona relativa alla finestra nella taskbar
|
ok.. ci avevo gia' pensato.. ma me so' dimentica'
federico wrote: |
MA SOPRATTUTTO
Vorrei che le canzoni con lo stesso album venissero caricate sortate in ordine di numero e non in ordine di nome Questo sarebbe figo.
Fede |
questo e' sicuramente realizzabile ma richiede degli extra-cicli che mal si sposerebbero con delle prestazioni decenti.
Cmq ci penso su...
eventualmente chi si intende di GTK o pyGTK mi puo' dire come caspita faccio a salvare un ListStore di botto?
(ora io salvo un "dict" con shelve e ripristino da quello...ma non e' velocissimo e mi spiace... perche' prima di tutto vorrei favorire le prestazioni)
Ciauz e grazie _________________ while True:Gentoo() |
|
Back to top |
|
|
flocchini Veteran
Joined: 17 May 2003 Posts: 1124 Location: Milano, Italy
|
Posted: Fri Sep 09, 2005 1:53 pm Post subject: |
|
|
provato ora... Direi che e' stabile, l'ho maltrattato un po' ma non crasha (amd64), peccato per l'assenza di playlist (lo so che e' una scelta, ma te lo dico lo stesso ) ma risulta comodo comunque seppur essendo gtk non credo diventera' mai la mia scelta preferenziale. Ho anche io un po' di warning sui caratteri utf-8 ma alla fine si mangia tutto.
veniamo ai bachi:
- problemi con l'ordinamento per titolo, stranamente per lui la "u" viene prima della "A".
- problemi con i db: lo crea, dice di salvarlo all'uscita ma alla riapertura
Code: | * Loading preferences
adjust redirect!!!
* Loading from /home/flocchini/.321GtK/database
!!! Problem reading Database
|
E mi chiedo anche cosa voglia dire "adjust redirect!"
Il resto e' gia' stato detto
Mi associo anche io a coloro che richiedono una funzione per gli albun zippati, e poi potresti trovare un nome piu' in linea alle tue consuetudini _________________ ~~ Per amore della rosa si sopportano le spine... ~~ |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|