/usr/bin/remove-tel is in fso-frameworkd 0.10.1-3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | #!/usr/bin/python
# -*- coding: utf-8 -*-
import dbus
from sys import argv
from time import sleep
# define some nice dbus helper, which I really like, cause make code easier to read :)
def getDbusObject (bus, busname , objectpath , interface):
        dbusObject = bus.get_object(busname, objectpath)
        return dbus.Interface(dbusObject, dbus_interface=interface)
def print_array(array):
  for entry in array:
    print ' - ' + str(entry)
def strip_tel(value):
  if value.startswith('tel:'):
    return value[4:]
  elif value.startswith('mail:'):
    return value[5:]
  else:
    return False
bus = dbus.SystemBus()
initialized = False
print "Waiting for opimd to be ready..."
while (not initialized):
  try:
    interface = getDbusObject (bus, "org.freesmartphone.opimd", "/org/freesmartphone/PIM/Contacts", "org.freesmartphone.PIM.Contacts")
    types = getDbusObject (bus, "org.freesmartphone.opimd", "/org/freesmartphone/PIM/Contacts", "org.freesmartphone.PIM.Fields")
    initialized = True
  except:
    sleep(10)
x = interface.Query({})
query = getDbusObject (bus, "org.freesmartphone.opimd", x, "org.freesmartphone.PIM.ContactQuery")
def list_phone_fields():
  return types.ListFieldsWithType('phonenumber')
def list_mail_fields():
  return types.ListFieldsWithType('email')
def add_phone_field(field):
  global phone_fields
  if not field in phone_fields:
    types.AddField(field, 'phonenumber')
    phone_fields.append(field)
def add_mail_field(field):
  global mail_fields
  if not field in mail_fields:
    types.AddField(field, 'email')
    mail_fields.append(field)
try:
  phone_fields = list_phone_fields()
  mail_fields = list_mail_fields()
except:
  print "Error: Couldn't get field types. Still running old opimd?"
  exit(1)
results = query.GetResultCount()
for i in range(0, results):
  x = query.GetContactPath()
  print 'Processing ' + x
  result = getDbusObject (bus, "org.freesmartphone.opimd", x, "org.freesmartphone.PIM.Contact")
  content = result.GetContent()
  to_update = {}
  for field in content:
    field = str(field)
    if field.lower().endswith('phone'):
      print '  Found field ' + field
      if type(content[field]) == dbus.Array:
        fresult = []
        for entry in content[field]:
          fresult.append(strip_tel(entry))
      else:
        fresult = strip_tel(content[field])
      if fresult:
        to_update[field] = fresult
        add_phone_field(field)
    if field.lower().endswith('e-mail') or field.lower().endswith('email'):
      print '  Found field '+field
      if type(content[field]) == dbus.Array:
        fresult = []
        for entry in content[field]:
          fresult.append(strip_tel(entry))
      else:
        fresult = strip_tel(content[field])
      if fresult:
        to_update[field] = fresult 
        add_mail_field(field)
  try:
    if to_update!={}:
      print to_update
      print ' Updating entry...'
      result.Update(to_update)
    else:
      print " Nothing to update"
  except:
    print ' Failed to update entry!'
print 'Finished'
print 'Fields with phonenumber type:'
print_array( phone_fields )
print 'Fields with email type:'
print_array( mail_fields )
 |