«

»

nov 12

Esportare la rubrica dei vecchi telefoni lg in formato vcard (da csv a vcard)

Finalmente quel maledetto lg8330 ha cotto la sua seconda batteria!
adesso mi posso liberare di lui senza sentirmi dedito al consumismo.

L’ultima cosa da fare e copiare la rubrica…e qui cominciano i problemi
il programma di gestione della lg è il famigerato e multibuggato Lg Phone Manager in particolare la versione 1.3.0.18
Questo esempio di alta tecnologia corana (nn sapevo che ci fossero le scimmie in corea) permette di esportare la rubrica in uno formato csv strutturato nel seguente modo:

Nome,Telefono 1,Telefono 2,Telefono 3,Telefono 4,Telefono 5,E-mail 1,E-mail 2,Ufficio,Ruolo,Indirizzo ufficio,Indirizzo personale,Home Page,Appunti

( quindi con il seguente ordine dei campi

0. Nome

  1. Telefono 1,
  2. Telefono 2,
  3. Telefono 3,
  4. Telefono 4,
  5. Telefono 5,
  6. E-mail 1,
  7. E-mail 2,
  8. Ufficio,
  9. Ruolo,
  10. Indirizzo ufficio,
  11. Indirizzo personale,
  12. Home Page,
  13. Appunti
    )

invece il modo ideale per spostare i contatti verso un altro telefono (qualunque esso sia purchè abbastanza evoluto) è il formato vcard.
quindi ho scritto uno script che passa da quel formato csv al vcard standard.

lo script crea un vcard per ogni contatto. i vcard possono essere aggiunti alla rubrica dal software di gestione del telefono (mandarli tutti via bluetooth potrebbe essere una pessima idea)

#converte le rubriche lg in formato csv in vcards
require 'csv'
#http://www.thedarshan.com/informatica/esportare-la-rubrica-dei-vecchi-telefoni-lg-in-formato-vcard-da-csv-a-vcard/

$version=2.1
$tail="END:VCARD"
$head=<<ammaccabanane
BEGIN:VCARD
UID:
VERSION:2.1
ammaccabanane

def crea_vcard(linea)
    nome=linea[0]
    out=File.new("./vcf/#{nome}.vcf","w")
    out<<$head
    out.puts("N:#{nome};;;;")
    out.puts("TEL;CELL:#{linea[1]}")
    out.puts("TEL;PREF:#{linea[2]}") if linea[2].size>5
    out.puts("TEL;HOME:#{linea[3]}") if linea[3].size>5
    out.puts("X-CLASS:PRIVATE")#non credo sia un tag standard
    out.puts("NOTE:#{linea[13]}") if linea[13].size>5
    out.puts($tail)
    out.close
end

array = CSV::parse(File.open(ARGV[0], 'r') {|f| f.read })
`mkdir vcf`
array.each{|linea| crea_vcard(linea)}


puts "(C) http://www.thedarshan.com "
puts "version #{$version}"

Come potete notare leggendo il codice il vcard viene costruito interpolando i campi della variabile linea nelle varie righe con i vari significati, quindi la riga N conterrà il nome ( campo 0) lariga TEL:CELL conterrà il primo cellulare ( campo 1) e così via. Nel caso il vostro telefono usasse un formato csv diverso da questo basta modificare l’ordine dei campi nella funzione crea_vcard()

Se non sapete come farlo mandatemi le prime righe del file csv e una descrizione del modello del telefono e ci penso io

Ho aggiunto un link per scaricare direttamente il files, visto che lo script per evidenziare il codice di wordpress combina sempre cose strane. [DOWNLOAD]

Share Button

22 comments

1 ping

Vai al modulo dei commenti

  1. Federico

    ciao,
    potresti dirmi come si usa uno script? come lo eseguo? perchè nn sono molto pratico..
    Grazie.

  2. thedarshan

    Dunque. ho fatto delle modifiche allo script.
    adesso si avvia da terminale con:

    ruby vcards.rb filecsv.csv

    dove filecsv.csv è il file esportato con il Lg Phone Manager.
    (se sei sotto windows devi scaricarti l’interprete del ruby)

  3. Marco

    Ciao…anche io ho lo stesso problema..il punto è che nn ho capito niente di quello che hai scritto!! Come posso fare??
    Grazie!

  4. thedarshan

    Dunque…beh è la risposta al commento di prima

    1.Ti scarichi l’interprete del ruby
    2.esporti con il programma della lg la rubrica in formato csv
    3.crei una cartella e ci infili il file csv e lo script
    4.vai col prompt dei comandi in quella cartella e avvii lo script con il comando ruby nomescript nomefilecsv

  5. Marco

    risolto!! grazie mille!! sei un mito!!!

  6. Alessio

    Ciao, avendo ucciso in piscina il mio LG KE970 sono molto interessato a questo script dato che sono riuscito a salvare la rubrica.
    Non riuscendo a farlo funzionare ti chiedo il favore di indicarmi le modifiche da apportare allo script: ecco la prima riga del file CSV

    “Nome,Telefono1,Tipo telefono 1,Telefono2,Tipo telefono 2,Telefono3,Tipo telefono 3,Telefono4,Tipo telefono 4,Telefono5,Tipo telefono 5,E-mail1,E-mail2,Società,Ruolo,Indirizzo ufficio,Indirizzo personale,Indirizzo WEB,Memo”

    Grazie!!!

  7. thedarshan

    io avevo detto le prime righe, non l’intestazione. se non mi dai nessun dato non posso provare il codice.

    falsifica nomi e numeri ma dammi dei dati per provare

    1. Alex

      Ciao Vincenzo,
      prima di disturbarti ho fatto molte prove ma non riesco a venirne a capo!…
      Ho 500 schede provenienti da un LG8550 (era detto Mimmo o musifonino) che devo passare su un Samsung Fame (Android Jelly Bean) e il tuo script non mi funziona… Ho provato persino a modificarlo ma non sono all’altezza di capirci piu’ di un po’…

      il mio famigerato (hai ragione!) Phone Manager ch ha generato il .csv e’ la release 1.4.0.30 (del 2003).

      Ho persino provato a “passare” via Google-Contatti sul web, per poi tentare di sincronizzare il telefonino, ma non mi fa nemmeno vedere i nomi, mentre mi crea, sulla destra, un corretto “biglietto da visita” (ma poi dovrei fare il copia-incolla di OGNI riga, per metterla al posto giusto, moltiplicato 500 schede!!).

      Please, HELP! Mi puoi dare una mano?

      Ciao, Alex

  8. karmy

    ciao ..io ho un lg u8550..l’altra mattina è caduto e si è spezzato a meta’ irreparabilmente ..ma sono riuscita a salvare i dati della rubrica…cosidera che dopo aver letto tutto quello che hai scritto 2 vote(commenti inclusi ) nn c’ho capito nulla …quindi tralasciando la vergogna per la mia inettitudine..vorrei chiederti se per favore potresti spiegarmi di nuovo quello che devo fare per passare i dati sul nokia…nn ho la minima idea di quello che sia un interprete di ruby…e nn so come si usano gli script …immagino sia difficile farlo capire ad una rapa come me ma te ne sarei infinitamente grata. grazie mille!

    1. Leonardo

      Thanks a lot for the help. I have been looking for the tool to covrnet .cvs contacts to vcard to import it to outlook, but nothing helped. Gmail has done a perfect job. Cheers

  9. toni

    Io vorrei fare il contrario, da CSV a ICS, con la libertà di poter segliere di esportare tutti i campi che voglio…saresti in grado (…io non lo sono).
    Grazie comunque!

  10. toni

    Scusa!! Data l’ora mi sono decisamente confuso, volevo dire da VCF a CSV.

  11. manu

    Mitico!! lo script funziona alla grande!! mi hai risolto un bel problema!!
    Unica cosa, per i meno esperti, basta creare una cartella VCF e rinominare il file sorgente da convertire in contatti.csv infine lanciare il ruby da dos con il comando:

    ruby vcards.rb contatti.csv

    grazie ancora!!

  12. toni

    Scusate, ri pongo il mio problema:
    Io vorrei fare il contrario, ovvero da VCF a CSV, con la libertà di poter segliere di esportare tutti i campi che voglio…sareste in grado (…io non lo sono).
    Grazie comunque!

    1. thedarshan

      Si, dal punto di vista tecnico non dovrebbe essere troppo difficile, ma purtroppo in questo momento non ho tempo, anche perché più che uno script per fare una cosa del genere opterei per un applicazione con interfaccia grafica scritta in C# o Java.
      Magari lo scrivo finita la sessione d’esami di Giugno

      1. toni

        Grazie per la risposta! Attenderò la fine della sessione…sperando che gli esami ti vadano bene ovviamente!!
        Se deciderai poi di fare ‘sta cosa, anche senza interfaccia per non romperti troppo (così poi provo ad applicarmi anche io…salvo poi richiedere aiuto) ti sarei super grato!

  13. calascibettati pongo un problema differente, ma credo attinente alla tua capacità di gestire i files vcf e quindi spero per te risolvibile: potresti creare un sistema veloce per modificare in fretta tutti i numeri telefonici in rubrica? Mi spiego meglio,

    scusate se pongo un problema differente, ma credo attinente alla tua capacità di gestire i files vcf e quindi spero per te risolvibile:

    potresti creare un sistema veloce per modificare in fretta tutti i numeri telefonici in rubrica?
    Mi spiego meglio, nel mio cellulare (per l’appunto un Samsung HD) dove è inserita una scheda TIM aziendale, per telefonare a mio carico dovevo inserire nella mia rubrica il numero telefonico col predisso 46; adesso la TIM ha modificato il codice 46 in 4146
    Insomma ho dovuto modificare manualmente (uno per uno) i files vcf della rubrica (considera poi che alcuni comprendono 3 o 4 numeri differenti).

    PS. tra pochi giorni ulteriore beffa devo tornare al gestore Wind che abilita alle chiamate esterne col prefisso 88. Non ci conosciamo ma conto molto su di te. grazie

    1. toni

      secondo me un metodo semplice potrebbe essere quello di aprire il file con un editor di testo (se hai un vcf unico) e usare “trova e sostituisci”, stando attento che il numero da sostituire (ad es. 46) non ricorra all’interno del numero! Ma comunque alcuni editor permettono di impostare una ricerca più mirata, ad esempio cercando solo all’inizio di una stringa ecc. La stessa cosa se hai o esporti un file csv; in quel caso puoi utilizzare anche altre funzioni di “separazione del numero” utilizzando un foglio di calcolo.

  14. dino

    link non funzionante per il download. una domanda: ma ruby è su linux?

    1. Vincenzo La Spesa

      Corretto il link, puntava ancora al vecchio sito.
      Ruby è multipiattaforma, esiste anche per windows.
      l’installer della versione windows lo trovi qui http://rubyinstaller.org/ le altre versioni qui http://www.ruby-lang.org/
      su linux possibilmente è pure preinstallato, se non ricordo male è una dipendenza di pacchetti fondamentali di kde

  15. Ciro

    Ciao, grazie se mi indichi come procedere con RUBY, il mio cell è Samsung C5212, e questa è una riga del file csv esportato in un file excel

    S-nientedatipersonali-o,”Enzo”,”Enzo S-nientedatipersonali-o”,””,””,””,””,”Comune ercolano”,”Landline.Business”,”3470000000″,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,”1900-01-01 00:00:00″,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””,””

    1. Vincenzo La Spesa

      suppongo si possa interpretare come un

      2 -> Nome
      10-> Telefono1
      9-> Appunti

      il resto non saprei dove posizionarle, quindi dovremmo ottenere qualcosa del tipo:

      #converte le rubriche lg in formato csv in vcards
      require ‘csv’

      $tail=”END:VCARD”
      $head=< 5
      out.puts($tail)
      out.close
      end

      array = CSV::parse(File.open(ARGV[0], ‘r’) {|f| f.read })
      `mkdir vcf`
      array.each{|linea| crea_vcard(linea)}

      la riga che mi hai dato contiene pochissimi dati, controlla come si comportano quelle con più di un numero di telefono.

      Ho aggiunto una descrizione di come fare

  1. Follia Numero 1: Importare una vecchia rubrica… | A Windows Phone odyssey

    [...] Sta in un file vcards gigantesco che contiene tutti i contatti, in questo modo posso tenerla sincronizzata anche con i dumbphone; e in effetti il files me lo porto dietro dalla notte dei tempi. [...]

Commenti disabilitati.