Faz anos que uso a Agenda (Address Book) do Mac OS X para guardar nomes, endereços e telefones de todos os meus contatos. Está tudo lá, bem organizado, com grupos, fotinhos, impecável.
Quando ganhei um iPhone de aniversário (valeu Gabriel!), sincronizei alegremente meus contatos e plim!, tudo funcionou perfeitamente. Eu clicava em um contato, ele chamava e eu falava. Normal.
Pelo menos era assim na operadora Oi (Brasil Telecom). Mas recentemente migrei para a TIM para poder usufruir da internet de pobre por 50 centavos/dia no pré-pago. A internet funcionou bem, mas quando fui fazer uma ligação:
“O número chamado não existe. Por favor, verifique o número discado e tente novamente.”
— Mas hein?
— Como assim o meu número de casa não existe?
Tentei ligar para o celular da Mog, e nada, mesma mensagem. Editei o número e tirei o DDD, aí funcionou. Com DDD, só funcionou se o número estiver no formato completo: zero + operadora + DDD + número, mesmo que seja um número local.
Achei bizarro, pois durante anos sempre cadastrei os telefones em minha agenda no formato (DDD) NNNN-NNNN. Então, um telefone de Curitiba, por exemplo, fica como (41) 1234-5678. E pronto. Sem zero e sem operadora, conforme Deus gosta.
Após pesquisas na internet e com a ajuda de amigos no twitter, descobri que na Oi funcionava porque eles são espertos e moderninhos. Eles alteram o número no momento da chamada, para que fique correto:
- Se for uma chamada local, o código DDD é removido.
- Se for chamada à distância, eles colocam o zero e o código de operadora (a deles, claro).
Tudo automaticamente, sem que eu precise sequer saber que isso existe. Simplesmente funciona, conforme Deus gosta também. Na TIM, porém, a central é mais tosca e não sabe o que fazer com o meu número. Daí a tiazinha me fala que o número não existe…
Mas tá, já que a modernização da central da TIM não deve ocorrer a curto prazo, terei que mudar o meu lado e fornecer o número no formato que eles entendem. Em outras palavras, terei que poluir minha agenda colocando o código da operadora em todos os números. Que saco.
A TIM até oferece uma solução para isso, um programinha no Menu TIM chamado Agenda LD, que adiciona o zero e o código da operadora deles (41) em todos os seus contatos do chip. Do chip? Quack!
- O iPhone guarda os contatos em sua memória, e não no chip.
- Não há opção para copiar os contatos do telefone para o chip.
- Quack!
Então, só me restou a última alternativa: eu mesmo modificar manualmente todas as centenas de contatos da minha agenda (Quack²), ou achar algum programa que faça isso automaticamente. Encontrei três na App Store:
Todos parecem funcionar bem e não são caros, e teria sido melhor eu ter simplesmente comprado um deles e pronto. Mas nerd é uma merda. Lendo as descrições dos apps e as opiniões dos usuários, acabei tendo uma ideia que arruinou meus planos de trabalho ontem:
“E se eu pudesse usar expressões regulares para reformatar os números de telefone do jeito que eu quiser?”
A ideia me empolgou, e como anos atrás eu já havia feito um programa em Python que acessa a Agenda do Mac usando PyObjC, não teve mais volta: abre o TextMate, pesquisas no Google, digita daqui, testa dali, e oito horas depois nascia mais um filhote: ab-rephone.py.
ab-rephone: Usa expressões regulares para alterar telefones na Agenda do Mac. Útil para adicionar/remover código de área e código da operadora. Pode editar todos os contatos ou um grupo específico. ATENÇÃO: SOMENTE PARA NERDS. https://github.com/aureliojargas/ab-rephone
Resolveu o meu problema atual e futuros, pois agora tenho a liberdade de modificar os telefones de maneira automática. Assim como agora coloquei o bendito prefixo 041 em todos os telefones, amanhã posso remover, trocar por outro, colocar um +55 na frente, etc. Além disso, com poucas alterações este script pode virar um grep ou alterar outros campos da Agenda.
Se você passa por um problema parecido e o termo “expressões regulares” não lhe causa medo nem estranheza, usa lá que é software livre/aberto/gratuito/casa-da-mãe-Joana. Como o código está limpo e comentado, também serve de aprendizado para usar o PyObjC.
Se você não for nerd, nem perca tempo que este programa só servirá para você voltar aqui e me xingar. Aconselho que você compre um dos programas para iPhone que citei anteriormente.
Ah, esse script marca minha estreia no Git e no GitHub. Sou um feliz usuário do SVN para todos os meus projetos, e num raro acesso de falta de conservadorismo, resolvi experimentar o concorrente. Sinto-me estranho :)




Pingback: Sincronizando dados entre Mac OS X e o Nokia N95 | andrelg.net
HAHAHAHA figura! A TIM eu não recomendo nem pros meus inimigos, vai que preciso ligar pra eles! A VIVO por aqui é a que mais funciona, pelo menos pra plano de dados que é o que me interessa.
Ficou com pato na cabeça, vai adotar um? :) Gostou do git e do github? Criei as contas mas ainda não testei a fundo para ter uma opinião.
Putz, então a culpa é da TIM!! Eu passei pra TIM quando comprei o iPhone e coloquei o 041 na frente de todos os contatos, um saco. No antigo celularzinho peba, na Oi, ele me perguntava qual a operadora eu queria usar numa chamada DDD.
Não sabia dessa falta de interação do iphone com o SIm vard. E quanto ao git, agora sim hein, o poder desse git é absurdo. Abracos
GitHub FTW. Você deveria migrar todos os seus códigos open source para lá e postar o endereco pra gente.
Pois é, é um problema da TIM. No Android a dica é o Operadora DDD, que funciona MUITO bem, e é de graça.
bom dia aurelio.
primeiramento parabens pelo post.
tenho um iphone3gs, gostaria de saber se tem como rodar esse .py direto nele
pois sou usuario linux e o itunes nao roda no mesmo.
qual o procedimento para instalacao desse .py no iphone ou no windows.
Att
Felipe Rossi,
Esse script usa PyObjC para acessar bibliotecas existentes apenas no Mac OS X. E, conforme a descrição do próprio Aurelio, esse script atualiza a agenda de contados do Mac, de modo que os contatos do iPhone serão atualizados na próxima sincronização.
Resumindo, não tem como rodar esse script no Windows ou Linux.
A Vivo também corrige, anoto meus telefones com DDD (mesmo os locais) e funciona sempre. O bom disso é que se for local a operadora tira o DDD, se você estiver fora da área não precisa se preocupar em colocar DDD ou código de operadora, um já esta registrado e o outro a própria operadora se vira.
Pois é, essa é a grande vantagem de cadastrar os telefones somente como DDD + número. É simples para o cliente e é a operadora quem resolve a chatice da dança dos números.
É uma pena que a TIM não faz isso também :(
A Claro não fica muito longe. Enquanto a Oi e a Vivo permitem a adição de números no formato (DD) NNNN-NNNN, na Claro você precisa adicionar o “0″ do DDD e adicionar os números no formato (DDD) NNNN-NNNN (de outro modo as chamadas são recusadas). Usei Vivo e Oi por anos e pensei que todas as operadoras já fossem capazes de rotear os números tranquilamente. Na Claro eu preciso adicionar “0″ em cada entrada da minha agenda de milhares de contatos, o que me irrita não apenas por ser uma solução medieval, mas porque complica bastante o acesso a esses número quando estou fora do país. Outro problema é que o formato +55 DD NNNN-NNNN também não funciona na Claro até que você ative as ligações internacionais. Opa, esse formato não está funcionando nem após a ativação. Seja como for, eu me recuso a sujar minha agenda com códigos de operadora. A ideia da portabilidade é trazer para a nova operadora todos os seus contatos e deixar para eles a opção de colocar uma operadora no default.
E mais um novo usuário de git que abandona cvs/svn…
Correção (após 6 meses do post original):
“usuário de GitHub (não curti o git, mas GitHub é show) que continua usando SVN”
:)
Gravação da TIM: “O número chamado não existe.”
Cliente da TIM: “Oh não! Terei que alterar todos os números na minha agenda! Oh, e agora? Quem poderá me ajudar?”
Aurélio: “Stand back! I know Regular Expressions!”
http://xkcd.com/208/
<big>:D</big>
Ótimo script! Após portar meu número para a TIM, fiquei decepcionado com a falta desse recurso. Vc me fez poupar um bom tempo (800 contatos) com esse script de fácil de adaptar.
Oras, mas você fez a única coisa decente que podia fazer. Se tivesse comprado um programinha mequetrefe, teríamos que confiscar o seu distintivo de nerd.
Pois é. No Galaxy S com Android 2.3.3 tem uma opção colocar prefixo nos números.
http://dl.dropbox.com/u/7340956/prefixo.jpg
É só adicionar o prefixo na listagem e marcar para uso. Pronto.
Muito útil o script e bem fácil de alterar e usar, obrigado =)
Precisei dessa regex aqui:
#Coloca hífen em números do tipo (NNN NN) NNNNNNNN
(‘^(\(\d{3} \d{2}\)) (\d{4})(\d{4})$’, r’\1 \2-\3′),
Obrigado pela contribuição Michel! Coloquei sua regex lá no programa:
https://github.com/oreio/ab-rephone/commit/fdfea14fd6622f050d954820ac4d465f0c7b09a0
Ola Aurélio, obrigado por esse post.
Sou user do Iphone na pessoa física e Blackaberry na jurídica e to precisando de HELP com a TIM, que acabei de fazer a portabilidade.
Minha agenda é do google, e sincronizava até semana passada tudo automaticamente (meu iphone, meu ipad ,meu computador, meu blackberry…) e sempre usei minha agenda como DDDNNNN… (011 e o numero)… assim ficava facil fazer o DDD com o iphone da OI (igual a você), também o DDD do Blackberry da CLARO (igualzinho, com o 21 automatico), e usar meus numeros no skype agenda no computador, ipad, etc, etc…. Ate aí tudo bem, mas tive que fazer a portabilidade do meu iphone da OI para a TIM para usar o liberty (41)… aí meus problemas começaram…
Sim, o Agenda LD da TIM quer sujar a minha agenda, e ao sincronizar, me F…. com todo o resto. Não achei nada parecido com o serviço do Android de preprogramar todos os numeros para usar uma determinada operadora (alias, não achei isso no blackberry também)…
Esse teu negócio pode ser bom, mas ele vai sujar agenda? tem como automatizar isso sem sujar agenda?
Quando mudei, por essa eu não esperava. to quase mudando de volta ….
Valeu qualquer ajuda.
Forte abraço
Fabio
Pois é Fabio, infelizmente a única solução que conheço é essa, que suja todos os contatos da Agenda e acaba quebrando alguns programas que passam a não reconhecer mais o número :/
Muito boa solução, parabéns.
Pra quem não for nerd e não quiser gastar 1 tostão, é só baixar na App Store o Prefix.
Graaaande Aurélio, boa dica pra trocar em massa
mas ainda fica aquele velho problema chato qdo se está navegando no safari e clica para ligar direto do safari pro numero que achamos em algum site ou no google.
Ele nunca formata certo o numero do telefone …….e cai sempre na tiazinha reclamando.
Devia ter algo nas configs do iPhone pra automaticamente detectar e corrigir isso.
O pior é que você copia o numero no safari , cola pra discar, e nem permite editar o numero colado, maior saco. Tem um monte de programas que permite editar o numero a ser discado.
Considero dois erros muito primarios no iPhone
Você tem razão, algo parecido acontece em outros programas também, é um saco.
Mas eu vejo isso como um problema da TIM, já que na Oi eles resolviam isso direto no servidor deles, independente de qual a marca do telefone.
Muito bom seu Script, velho. Como não sabia nada sobre Script nem nunca tinha usado o Terminal de um mac, levei para consertar minha agenda mais do que as 8 horas que você gastou pra produzir o Script. Mas o resultado foi um sucesso. A maior parte dos meus contatos era apenas com números (sem parênteses, espaços ou hífen) e todos estavam com o código da operadora e da cidade. Deu um trabalhão para entender essa linguagem (já que a última vez que mexi com algo semelhante foi há mais de 10 anos, com a configuração de um mirc). Enfim, muito obrigado! Deu certo
Paulo, fiquei feliz em saber que você decidiu encarar o problema sozinho e saiu vitorioso no final! Não é nada fácil alterar um programa que usa expressões regulares se você não tem o conhecimento necessário. Parabéns!
Com essa postura autodidata e de tentativa e erro, você poderia ser programador :)
Valeu! Funcionou que foi uma beleza…
Fail é essa integração com o Skype. Não sei o que é pior.
Alguma sugestão?
É, detona a integração com o Skype. Não sei solução pra isso :(
Minha operadora é OI, e no meu iphone todos os contatos são (xx) xxxx-xxxx , sem nenhum codigo de operadora….
Isso quer dizer com certeza q todos os interurbanos que eu faço são realizados automaticamente pelo 31 da OI ???
Alguem tem a fonte dessas informacoes, pois nem no atendimento da OI eles sabem responder isso …
Muito obrigado
Abracos
Luan, minha experiência com a Oi é que eles colocam o código de operadora (da Oi, é claro) automaticamente, quando necessário. Todas as operadoras deveriam ser assim.
Concordo plenamente com vc, o meu medo é que a bagunça é tanta aqui no brasil que daqui a pouco estou ligando e tah entrando código de qualquer operadora automaticamente entendeu … hehe
Abraços, obrigado pelos esclarecimentos !!!
Grande post, me esclareceu muitas duvidas…
Não moro no brasil, e sempre quando vou ao brasil fico louco tendo sempre que usar a opção “edit before call” ao ligar pra alguém.
A novela já começa quando chego ao brasil ao tentar ligar pra algum familiar com o chip da operadora do país onde moro.
Meus contatos de nr do BR estão desta maneira +55 61 NNNN-NNNN, mesmo assim sai uma mensagem em português dizendo que o nr não e valido, falta a operadora… vai explicar isso pra um estrangeiro.
As duas ultimas vezes peguei chips da TIM, pelo preço de TIM pra TIM e pela internet pra usar o whatsapp… E la vai eu em BSB tentar ligar pra alguém em BSB, tenho que tirar o DDI e o DDD… e se estiver no Goias, melhor ainda, tenho que tirar o DDI, colocar o 41… uma festa.
E isso acaba enlouquecendo programas como o Whatsapp.
Em fim, seria tão mais fácil poder guardar os nr na agenda com o DDI + DDD + nr e pronto, não importe se vc esta em SP, RJ, ou na China, sempre será possível ligar sem problemas.
Ao menos já sei que quando for ao Brasil, melhor pego um chip da Oi
Pois é, é um saco toda essa situação que a TIM criou, bagunça tudo!
Eu não tenho mais chip da Oi pra testar, mas acho que se cadastrar na agenda como “+55 DDD número” vai funcionar sim.
Salve, Verde!!!
Caramba! Faz tempo que não comento no teu blog… Mas agora eu tenho o dever cívico de fazê-lo. :-D
Seu script resolveu um outro problema (para o qual ele não foi pensado na época em q vc o fez…)
Bom, deixa eu explicar melhor… Eu moro em São Paulo e a partir do dia 29/jul/2012 (próx. domingo) todos os números de celular do DDD 11 irão ganhar um dígito, ou seja, vai acontecer isto com os números de celular:
(11) NNNN-NNNN -> (11) 9NNNN-NNNN
Tenho um Defy (com Android 4.0.4) e sempre organizei minha agenda pelo Gmail.
Mas tem um porém… como eu uso o formato (AA) NNNN-NNNN para todos os meus contatos (e o app Operadora DDD para não me preocupar na hora de ligar), nenhum dos Apps criados para fazer esta alteração automaticamente funcionou. Todos eles esperam o número sem os parênteses…
Aí depois de testar todos estes Apps e ver q nenhum me ajudaria, lembrei deste seu post e do seu script… E como a pouco tempo também sou o feliz proprietário de um MacBook Pro :-) coloquei o Address Book pra sincronizar com meus contatos do Gmail.
Eu pensei “Bom… como o script do Aurelio usa regex, acho que posso fuçar um pouco e adaptar para a minha necessidade…”
E é por isso que estou aqui… Pra contar que deu certo e compartilhar a regex que eu fiz:
# (11) NNNN-NNNN -> (11) 9NNNN-NNNN
(‘^\((11)\) ([56789]\d{3}-\d{4})$’, r’(\1) 9\2′),
Espero que isso possa ser útil para mais alguém!
Só tem um detalhe a mais: os números da Nextel (radio) não serão alterados, mas eles normalmente começam com 7 como muitos celulares de outras operadoras…
Nos meus contatos, a label de cada número tem o nome da operadora (feito através do app Qual Operadora?, que descobre a operadora do número e permite gravar o nome na label). Será que existe alguma maneira de filtrar pelos labels dos telefones? (algo parecido com o filtro por grupos que vc fez)
Se não tiver como, paciência… Terei que remover o 9 destes números depois de rodar o script. :-( (bom, pelo menos não são muitos os contatos nesta situação)
De qualquer forma, agradeço por vc ter compartilhado o script. Me quebrou um galhão (evitou que eu tivesse que editar mais de 300 contatos manualmente).
Grande abraço.
Cristiano
Caramba Cristiano, voltou com tudo hein? Esse teu comentário tá maior que o post! Hehe
Muito legal o teu relato, fiquei feliz de saber que o script também vai ajudar nessa hora de enfiar o 9 nos telefones. Por isso que gosto de fazer ferramentas e não apps completos, ai cada um adapta pro seu próprio problema.
Valeu pelo retorno!
Ah… só pra constar, os Apps que eu testei foram os seguintes: 9d+, Nono Dígito SP e 9Plus
Flw
Se tiver tempo, fala pros autores dessa limitação, pra poderem arrumar em versões futuras.
Apenas com o propósito de disseminar a informação…
Estamos em 27/09/2012, ou seja, mais de um ano após o seu post e a TIM AINDA não aceita ligações com o DDD na frente do número.
Tentei diversos formatos como:
+551122223333
551122223333
+5501122223333
5501122223333
1122223333
E a alternativa correta é NENHUMA, a TIM aceita somente o telefone puro.
Digo isso porque eu tentei trocar de operadora da Oi para a TIM e percebi exatamente a mesma coisa e essa foi EXATAMENTE a primeira coisa que eu reclamei :P
E uma observação, a Oi era inteligente, agora com essa brincadeira de 9º dígito, ela não aceita ligações como:
(11) 92222-3333
No entanto, números de fixo ainda funcionam, igual você disse.
(11) 2222-3333
Por enquanto acho que o melhor que encontrei foi +55 11 92222-3333
Enfim, Brasil, vamos padronizar esse formato de telefone? assim fica difícil!
Bem observado Rafael. Eu continuo na TIM e continuo sofrendo dos mesmos problemas. Infelizmente nada mudou neste assunto :/
Sou TIM também e no iphone é um sofrimento isso pois quando vc quer ligar apenas clicando sobre links de numeros de telefones em sites por exemplos, ou em algum e-mail o qual o formato esta (xx) xxxx-xxxx, esquece!!! A praticidade de ter o iphone nessa hora acaba! Você tem que decorar o numero (ter uma boa memória), ir até o telefone digitar 0 + 41 + e o número da sua memória! Legal isso né, pra que ter iphone entao???
Grande Amigo acabei de comprar meu iphone, passei 3 dias digitando minha agenda no Icloud, no formato: +55(dd)nnnnn-nnnn operadora tim…. imagina nada funciona…. Como o seuconhecimento é extremamente superior ao meu nesse caso, sabe de outra operadora que possa absorver o formato que cadastrei? Eu migro agora!!! Obrigado.
Olha Silvio, só tenho experiência com a Oi, e nela sei que o (DDD) NNNN-NNNN funciona.
Mas acredito que a TIM seja a única que exige o código de operadora na agenda. Uma lástima.
Gente do céu… Eu estou a quase 5 dias lendo tudo que há…. e nada de resolver meu problema.
O que está acontecendo é o seguinte:
Nas chamadas locais o iPhone reconhece normalmente…! agora bastou ter 041 na frente pra ligar interurbano, o bina informa o número da pessoa que está ligando, e nao o nome.
Ex: Moro em Salvador aqui é 71, e uso Tim.
Entao fica assim a loucura… no meu telefone ( 04177xxxx-xxxx ) quando a pessoa liga fica assim ( 077xxxx-xxxx ) só a parece os números!
e fora que se eu digitar no teclado do telefone o número
mesmo sendo ( 077xxxx-xxxx ), não aparece o nome da pessoa.
Isso ta um saco, nao sei se é a Tim ou o iPhone que ta doido.
Alguém pode me ajudar? Obrigado
No meu android utilizo Prefixer que funciona com expressão regular para trocar o número na hora da ligação.
https://play.google.com/store/apps/details?id=com.tftbelow.prefixer
O post trata de iphone, como não tenho iphone, apenas lembrei desse APP. Será que não está disponível na apple store?