[Risolto] [Proposta] Implementiamo i tag in Nautilus

Iniziative e progetti della comunità legati a Ubuntu.
Regole della sezione
Questa sezione ha lo scopo di raccogliere le iniziative/progetti della nostra Comunità legati ad Ubuntu. I progetti ospitati nascono da iniziative degli utenti o gruppi di utenti. In futuro i progetti potrebbero rimanere iniziative "personali" o essere integrate nella distribuzione, sponsorizzate da Ubuntu o da Canonical a discrezione dei responsabili. All'interno di essa sarà possibile inserire delle discussioni che hanno la funzione di pubblicizzare avvenimenti, iniziative e progetti software su Ubuntu e GNU/Linux in generale. Sarà inoltre possibile per gli utenti proporre lo sviluppo di nuovi software e in questo caso la discussione di richiesta avrà la funzione di generare un requisito funzionale del prodotto da sviluppare.

Sezione I - Iniziative
  • Fanno parte di iniziative, ad esempio, le seguenti categorie: corsi, progetti editoriali, libri.
  • La segnalazione di un'iniziativa avviene creando una discussione con l'annuncio.
  • Una volta effettuata la segnalazione, la discussione viene chiusa dal Gruppo Forum.
  • Se l'iniziativa esposta comporta un costo di adesione o fruizione, questo deve essere esplicitamente riportato all'interno della discussione.
  • È obbligatorio segnalare all'interno della discussione i riferimenti per poter contattare/partecipare all'iniziativa.
Sezione II - Progetti
  • La segnalazione di un progetto software, come per le iniziative, avviene e si sviluppa all'interno di una singola discussione.
  • Sarà consentito l'inserimento di software solo se rilasciati sotto licenza GPL (in tutte le sue versioni) o equivalente FOSS, tale da garantire agli utenti l'utilizzo del prodotto senza restrizioni e agli sviluppatori la proprietà intellettuale del codice prodotto.
  • Nell'oggetto della discussione dovrà essere riportata la categoria (es. [Iniziativa], [Progetto] o [Proposta]) e una semplice descrizione del progetto.
  • Se il progetto ha già un sito che lo ospita sarà a discrezione del Gruppo Forum chiuderla come segnalazione o lasciarla aperta.
  • Se il progetto non ha un sito che lo ospita si potranno aprire due discussioni, una per proporre modifiche/implementazioni (dove nel titolo occorre specificare [sviluppo]) ed una per segnalare problemi (e nel titolo dovrà comparire [supporto]).
  • Non è consentita l'apertura di nuove discussioni in riferimento a versioni superiori o modificate di un prodotto già riportato in precedenza.
  • Se il software oggetto del progetto ha una dimensione non superiore ai 128 kB, per prodotti che non hanno un sito che li ospita, sarà possibile allegarlo alla discussione.
Sezione III - Proposte
  • Una proposta deve essere eseguita e si svilupperà all'interno di una singola discussione.
  • Le proposte dovranno essere inserite direttamente nella sezione "Progetti della Comunità".
  • Dovranno essere specificate le funzionalità che devono essere sviluppate.
  • Non dovranno essere riportate diciture tipo "...deve fare come questo software...", ma indicare nel miglior modo possibile i requisiti.
  • Una volta segnalata la discussione resterà aperta per consentire uno scambio di idee su come sviluppare il codice o finché gli sviluppatori non forniranno una soluzione (da pubblicizzare poi, come visto prima, nella sezione Progetti) che ne soddisfi il requisito.
Per quanto non esposto sopra, si fa comunque riferimento al Regolamento del forum ed al Codice di Condotta della Comunità.
The Wise Dj

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da The Wise Dj »

swalf ha scritto:
The Wise Dj ha scritto:
swalf ha scritto: Visto che pare non venga preso in considerazione dal team di Gnome, c'è qualche programmatore disposto a fare una modifica "casereccia"?
Scusa se chiedo, ma che linguaggio servirebbe?
Credo il C++ ma non vorrei dire cavolate immani...
In cpp allora potrei dare una mano io =)
Piccola eh!
Avatar utente
swalf
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1123
Iscrizione: sabato 19 maggio 2007, 19:33
Desktop: Gnome 2.x/Shell
Distribuzione: Debian 6.0/Arch
Località: Muggiò (MI)
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da swalf »

Il problema è che io proprio non saprei da dove iniziare a mettere le mani ???

Grazie al tuo contributo (b2b) Se poi c'è qualcosa a cui posso collaborare in qualcosina (C, java) sarò ben lieto di sporcarmi le mani ;D
La mente è come un paracadute. Funziona solo se si apre. - Albert Einstein
The Wise Dj

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da The Wise Dj »

swalf ha scritto: Il problema è che io proprio non saprei da dove iniziare a mettere le mani ???

Grazie al tuo contributo (b2b) Se poi c'è qualcosa a cui posso collaborare in qualcosina (C, java) sarò ben lieto di sporcarmi le mani ;D
(rotfl)
Siamo in due a non sapere da dove iniziare  :'(
Ma sarebbe tosto =)
Avatar utente
swalf
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1123
Iscrizione: sabato 19 maggio 2007, 19:33
Desktop: Gnome 2.x/Shell
Distribuzione: Debian 6.0/Arch
Località: Muggiò (MI)
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da swalf »

C'è nessuno? :-\
La mente è come un paracadute. Funziona solo se si apre. - Albert Einstein
Avatar utente
jurgo
Prode Principiante
Messaggi: 73
Iscrizione: venerdì 27 ottobre 2006, 3:31
Località: Udine
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da jurgo »

Non mi è chiara una cosa, cosa succede se in una directory contiene sia un file musicale che una immagine?
Questo penso potrebbe essere un problema.
"Duc' a jan la lôr crosute. A chel ch'a no l'ûl puartâle ai tocje di strissinâle"
Avatar utente
swalf
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1123
Iscrizione: sabato 19 maggio 2007, 19:33
Desktop: Gnome 2.x/Shell
Distribuzione: Debian 6.0/Arch
Località: Muggiò (MI)
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da swalf »

jurgo ha scritto: Non mi è chiara una cosa, cosa succede se in una directory contiene sia un file musicale che una immagine?
Questo penso potrebbe essere un problema.
No nessun problema, se provi a visualizzare su win una cartella mista e visualizzi la colonna artista ad esempio, nei file musicali ci sarà l'artista ovviamente, negli altri la colonna rimarrà vuota, stessa cosa accadeva in Kde 3.5
La mente è come un paracadute. Funziona solo se si apre. - Albert Einstein
Avatar utente
jurgo
Prode Principiante
Messaggi: 73
Iscrizione: venerdì 27 ottobre 2006, 3:31
Località: Udine
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da jurgo »

allora questo potrebbe interessarti (per gli mp3):

http://ubuntuforums.org/showthread.php?t=878683
"Duc' a jan la lôr crosute. A chel ch'a no l'ûl puartâle ai tocje di strissinâle"
Avatar utente
swalf
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1123
Iscrizione: sabato 19 maggio 2007, 19:33
Desktop: Gnome 2.x/Shell
Distribuzione: Debian 6.0/Arch
Località: Muggiò (MI)
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da swalf »

Grazie mille per la segnalazione
Mmm sembrerebbe molto interessante, però non riesco a farlo andare probabilmente è per il fatto che dovrei aggiungere il percorso di python-library a PYTHONPATH il problema e che non so che variabile sia né dove si trovi ???
La mente è come un paracadute. Funziona solo se si apre. - Albert Einstein
Avatar utente
jurgo
Prode Principiante
Messaggi: 73
Iscrizione: venerdì 27 ottobre 2006, 3:31
Località: Udine
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da jurgo »

Siccome mi sono reso conto che ci vuole un secondo per installarlo, ecco una piccola guida su come installarlo:

prima di tutto scarica le dipendenze:
sudo aptitude install python-nautilus
sudo aptitude install python-id3
sudo aptitude install python-mutagen
sudo aptitude install python-pyexiv2
(anche se non sono sicuro coe id3 serva)

poi salva in un file questo script:
#!/usr/bin/python

# this script can installed to the current user account by running the following commands:

# sudo apt-get install python-nautilus python-mutagen python-pyexiv2
# mkdir ~/.nautilus/python-extensions
# cp bsc-v2.py ~/.nautilus/python-extensions
# chmod a+x ~/.nautilus/python-extensions/bsc-v2.py

# alternatively, you may be able to place the script in:
# /usr/lib/nautilus/extensions-2.0/python/

# change log:
# jmdsdf: version 2 adds extra ID3 and EXIF tag support
# jmdsdf: added better error handling for ID3 tags, added mp3 length support, distinguished
#         between exif image size and true image size
# SabreWolfy: set consistent hh:mm:ss format, fixed bug with no ID3 information
#             throwing an unhandled exception
# jmdsdf: fixed closing file handles with mpinfo (thanks gueba)

import os
import urllib
import nautilus
# for id3 support
from mutagen.easyid3 import EasyID3
from mutagen.mp3 import MPEGInfo
# for exif support
import pyexiv2

# for reading image dimensions
import Image

class ColumnExtension(nautilus.ColumnProvider, nautilus.InfoProvider):
def __init__(self):
pass

def get_columns(self):
return (
# id3 support
nautilus.Column("NautilusPython::title_column",
"title",
"Title",
"Song title"),
nautilus.Column("NautilusPython::album_column",
"album",
"Album",
"Album"),
nautilus.Column("NautilusPython::artist_column",
"artist",
"Artist",
"Artist"),
nautilus.Column("NautilusPython::tracknumber_column",
"tracknumber",
"Track",
"Track number"),
nautilus.Column("NautilusPython::genre_column",
"genre",
"Genre",
"Genre"),
nautilus.Column("NautilusPython::date_column",
"date",
"Date",
"Date"),
nautilus.Column("NautilusPython::bitrate_column",
"bitrate",
"Bitrate",
"Audio Bitrate in kilo bits per second"),
nautilus.Column("NautilusPython::length_column",
"length",
"Length",
"Length of audio"),
# exif support
nautilus.Column("NautilusPython::exif_datetime_original_column",
"exif_datetime_original",
"EXIF Dateshot ",
"Get the photo capture date from EXIF data"),
nautilus.Column("NautilusPython::exif_software_column",
"exif_software",
"EXIF Software",
"EXIF - software used to save image"),
nautilus.Column("NautilusPython::exif_flash_column",
"exif_flash",
"EXIF flash",
"EXIF - flash mode"),
nautilus.Column("NautilusPython::exif_pixeldimensions_column",
"exif_pixeldimensions",
"EXIF Image Size",
"EXIF Image size - pixel dimensions"),
nautilus.Column("NautilusPython::pixeldimensions_column",
"pixeldimensions",
"Image Size",
"Image size - pixel dimensions"),
)

def update_file_info(self, file):
if file.get_uri_scheme() != 'file':
return

filename = urllib.unquote(file.get_uri()[7:])

# video handling
#if file.is_mime_type('video/x-msvideo'):

# mp3 handling
if file.is_mime_type('audio/mpeg'):
# attempt to read ID3 tag
try:
audio = EasyID3(filename)
# sometimes the audio variable will not have one of these items defined, that's why
# there is this long try / except attempt
try:
file.add_string_attribute('title', audio["title"][0])
except:
file.add_string_attribute('title', "[n/a]")
try:
file.add_string_attribute('album', audio["album"][0])
except:
file.add_string_attribute('album', "[n/a]")
try:
file.add_string_attribute('artist', audio["artist"][0])
except:
file.add_string_attribute('artist', "[n/a]")
try:
file.add_string_attribute('tracknumber', audio["tracknumber"][0])
except:
file.add_string_attribute('tracknumber', "[n/a]")
try:
file.add_string_attribute('genre', audio["genre"][0])
except:
file.add_string_attribute('genre', "[n/a]")
try:
file.add_string_attribute('date', audio["date"][0])
except:
file.add_string_attribute('date', "[n/a]")
except:
# [SabreWolfy] some files have no ID3 tag and will throw this exception:
file.add_string_attribute('title', "[no ID3]")
file.add_string_attribute('album', "[no ID3]")
file.add_string_attribute('artist', "[no ID3]")
file.add_string_attribute('tracknumber', "[no ID3]")
file.add_string_attribute('genre', "[no ID3]")
file.add_string_attribute('date', "[no ID3]")

# try to read MP3 information (bitrate, length)
try:
mpfile = open (filename)
mpinfo = MPEGInfo (mpfile)
file.add_string_attribute('bitrate', str(mpinfo.bitrate/1000) + " Kbps")
# [SabreWolfy] added consistent formatting of times in format hh:mm:ss
# [SabreWolfy[ to allow for correct column sorting by length
mp3length = "%02i:%02i:%02i" % ((int(mpinfo.length/3600)), (int(mpinfo.length/60%60)), (int(mpinfo.length%60)))
mpfile.close()
file.add_string_attribute('length', mp3length)
except:
file.add_string_attribute('bitrate', "[n/a]")
file.add_string_attribute('length', "[n/a]")
else:
# not a song
file.add_string_attribute('title', '')
file.add_string_attribute('album', '')
file.add_string_attribute('artist', '')
file.add_string_attribute('tracknumber', '')
file.add_string_attribute('genre', '')
file.add_string_attribute('date', '')
file.add_string_attribute('bitrate', '')
file.add_string_attribute('length', '')

# image handling
if file.is_mime_type('image/jpeg') or file.is_mime_type('image/png') or file.is_mime_type('image/gif') or file.is_mime_type('image/bmp'):
# EXIF handling routines
try:
img = pyexiv2.Image(filename)
img.readMetadata()
file.add_string_attribute('exif_datetime_original',str(img['Exif.Photo.DateTimeOriginal']))
file.add_string_attribute('exif_software',str(img['Exif.Image.Software']))
file.add_string_attribute('exif_flash',str(img['Exif.Photo.Flash']))
file.add_string_attribute('exif_pixeldimensions',str(img['Exif.Photo.PixelXDimension'])+'x'+str(img['Exif.Photo.PixelYDimension']))
except:
# no exif data?
file.add_string_attribute('exif_datetime_original',"")
file.add_string_attribute('exif_software',"")
file.add_string_attribute('exif_flash',"")
file.add_string_attribute('exif_pixeldimensions',"")
# try read image info directly
try:
im = Image.open(filename)
file.add_string_attribute('pixeldimensions',str(im.size[0])+'x'+str(im.size[1]))
except:
file.add_string_attribute('pixeldimensions',"[image read error]")
else:
# not an image
file.add_string_attribute('exif_datetime_original', '')
file.add_string_attribute('exif_software', '')
file.add_string_attribute('exif_flash', '')
file.add_string_attribute('exif_pixeldimensions', '')
file.add_string_attribute('pixeldimensions', '')

self.get_columns()
salvalo ad esempio sul tuo desktop come tags.py

ora devi dargli i permessi di esecuzione, creare la directory ./.nautilus/python-extensions e copiarcelo tentro, quindi apri il terminale e scrivi:
chmod +x ./Desktop/tags.py
mkdir ./nautilus/python-extensions
cp ./Desktop/tags.py ./nautilus/python-extensions
termina tutti in nautilus attivi:
sudo killall -9 nautilus
e riavvialo.

se vai in Edit->Preferences -> List Colums vedrai che puoi aggiungere le colonne con i tags.
"Duc' a jan la lôr crosute. A chel ch'a no l'ûl puartâle ai tocje di strissinâle"
Avatar utente
jurgo
Prode Principiante
Messaggi: 73
Iscrizione: venerdì 27 ottobre 2006, 3:31
Località: Udine
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da jurgo »

lascia perdere la strada che ti consigliano loro e fidati di aptitude :-)
"Duc' a jan la lôr crosute. A chel ch'a no l'ûl puartâle ai tocje di strissinâle"
Avatar utente
swalf
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1123
Iscrizione: sabato 19 maggio 2007, 19:33
Desktop: Gnome 2.x/Shell
Distribuzione: Debian 6.0/Arch
Località: Muggiò (MI)
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da swalf »

Io mi fiderei anche, però non cambia nulla :-[
La mente è come un paracadute. Funziona solo se si apre. - Albert Einstein
The Wise Dj

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da The Wise Dj »

swalf ha scritto: Io mi fiderei anche, però non cambia nulla :-[
Manco a me va =D
Avatar utente
jurgo
Prode Principiante
Messaggi: 73
Iscrizione: venerdì 27 ottobre 2006, 3:31
Località: Udine
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da jurgo »

allora lanciate nautilus da terminale e postate i log...
"Duc' a jan la lôr crosute. A chel ch'a no l'ûl puartâle ai tocje di strissinâle"
Avatar utente
jurgo
Prode Principiante
Messaggi: 73
Iscrizione: venerdì 27 ottobre 2006, 3:31
Località: Udine
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da jurgo »

Tra l'altro, guardando le mie ultime righe, mi sono accorto che sono sbagliate:
quelle giuste sono:
chmod +x ./Desktop/tags.py
mkdir ./.nautilus/python-extensions
cp ./Desktop/tags.py ./.nautilus/python-extensions
la cartella giusta è .nautilus (con il punto davanti) e non nautilus (senza punto davanti)
sorry
"Duc' a jan la lôr crosute. A chel ch'a no l'ûl puartâle ai tocje di strissinâle"
Avatar utente
swalf
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1123
Iscrizione: sabato 19 maggio 2007, 19:33
Desktop: Gnome 2.x/Shell
Distribuzione: Debian 6.0/Arch
Località: Muggiò (MI)
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da swalf »

Beh io l'ho fatto da via grafica e ho messo i file proprio nella cartella nascosta .nautilus presente nella home quindi non penso sia quello il problema.
ora ti posto il log di Nautilus:

Codice: Seleziona tutto

Initializing nautilus-open-terminal extension
Initializing nautilus-image-converter extension

** (nautilus:9968): WARNING **: Unable to add monitor: Non supportato
Nautilus-Share-Message: Called "net usershare info" but it failed: «net usershare» ha restituito l'errore 255: net usershare: cannot open usershare directory /var/lib/samba/usershares. Error Nessun file o directory
Please ask your system administrator to enable user sharing.
Preciso che mi pare dia da sempre questi log
La mente è come un paracadute. Funziona solo se si apre. - Albert Einstein
The Wise Dj

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da The Wise Dj »

jurgo ha scritto: Tra l'altro, guardando le mie ultime righe, mi sono accorto che sono sbagliate:
quelle giuste sono:
chmod +x ./Desktop/tags.py
mkdir ./.nautilus/python-extensions
cp ./Desktop/tags.py ./.nautilus/python-extensions
la cartella giusta è .nautilus (con il punto davanti) e non nautilus (senza punto davanti)
sorry
Infatti ora va =D

Swalf fallo per via grafica il drag and drop e ricontrolla!
E controlla di aver dato 777 al file
Avatar utente
jurgo
Prode Principiante
Messaggi: 73
Iscrizione: venerdì 27 ottobre 2006, 3:31
Località: Udine
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da jurgo »

si, infatti dai log che hai postato, non c'è nessun errore riguardante quel plug-in
"Duc' a jan la lôr crosute. A chel ch'a no l'ûl puartâle ai tocje di strissinâle"
Avatar utente
swalf
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1123
Iscrizione: sabato 19 maggio 2007, 19:33
Desktop: Gnome 2.x/Shell
Distribuzione: Debian 6.0/Arch
Località: Muggiò (MI)
Contatti:

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da swalf »

Ma ho fatto tutto per via grafica e infatii in /home/swalf/.nautilus/python-extensions ora c'è un file tags.py con i permessi -rwxrwxr-x , si è anche creato un file tags.pyc ma le colonne non compaiono, ho anche riavviato ma nulla. Pardon ma voi come le fate comparire? Da aggiungi colonne visibili  e da preferenze/colonne come faccio io?
La mente è come un paracadute. Funziona solo se si apre. - Albert Einstein
The Wise Dj

Re: [Proposta] Implementiamo i tag in Nautilus

Messaggio da The Wise Dj »

Esattamente!
Controlla di aver copiato bene tutto il file in file.py
Avatar utente
swalf
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1123
Iscrizione: sabato 19 maggio 2007, 19:33
Desktop: Gnome 2.x/Shell
Distribuzione: Debian 6.0/Arch
Località: Muggiò (MI)
Contatti:

Re: [Risolto] [Proposta] Implementiamo i tag in Nautilus

Messaggio da swalf »

Quando si dice un pirla... avevo lasciato il file vuoto difatti.
Ora funziona a meraviglia, davvero grazie (b2b)

Avete risolto uno dei problemi che mi rendevano la vita molto scomoda sotto Gnome. (good)
Ora chiederei una cosa all'autore dello script, penso che tutta la comunità ne tragga beneficio se quello script venisse integrato direttamente in Ubuntu, potrebbe quindi proporlo su Ubuntu Brainstorming (yes) (yes) (yes)
La mente è come un paracadute. Funziona solo se si apre. - Albert Einstein
Scrivi risposta

Ritorna a “Progetti della Comunità”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 11 ospiti