Еще раз подумал.. Вот к примеру..
def is_mobile():
devises=['Series','Mini','Motorola','SonyEricsson']
for x in devises:if x in os.environ['USER_AGENT']:return True
return False
Уже покроет 70%… Ведь если в юзер агенте присутствует слово Series значит мы имеем Symbian смартфон коих большинство, со звонилок обычно юзают operamini.
Насчет КПК… они же на windows mobile, а это должно быть видно в строке юзер агента, примерно как строка Windows NT 5.1 говорит о том что мы под Windows xp сидим не зависимо от браузера.
То есть не обязательно знать что за модель или производитель для смартов и комуникаторов, а для звонилок достаточно производителя, коих не много (всякие Fly Sagem Pantech можно не считать вообще, основная масса их пользователей инет не используют)
Добавлено погуглив:
Вот первая попавшаяся ссылка, там описание браузеров от старых сименсом до iphone с примерами user agenta
http://www.zytrax.com/tech/mobile_ids.htmlиз этого делаем вывод что слово MIDP присутствует почти во всех звонилках, Series в смартах (не только nokia ), Windows CE сам говорит за себя… Вообщем то почти все охватили, даже у таких редкостей как Sharp Sanyo в user agent есть заветное MIDP…
Спасибо за внимание, исследование для себя закончил и окончательно убедился в правильности своего варианта :)