Настольная программа Python с использованием веб-API - PullRequest
2 голосов
/ 14 апреля 2011

У меня очень случайный запрос от клиента, которому нужна программа для настольного компьютера, которая может получать информацию из веб-интерфейсов API, таких как Google Analytics, SEOMoz и других подобных служб.Затем они хотят, чтобы части или все эти результаты были сохранены в центральном местоположении.Они сказали, что им вообще НЕ нужно веб-приложение, но им нужна возможность хранить данные на «сервере» (чтение, серверная версия настольного клиента) в их локальной сети.Программа должна быть в состоянии работать в Windows.Поддержка Linux и OS X была бы хорошей.

У меня есть некоторый опыт программирования и я немного знаком с Python, поэтому я подумывал об его использовании.Моя проблема в том, что я не уверен в связи между клиентами / серверами в локальной сети и связи между клиентом и веб-интерфейсами API.

1) Возможно ли это вообще?Если да, то где лучше искать ресурсы по интеграции API и сетевому взаимодействию / какие-либо хорошие примеры?

2) Любые предложения / советы о том, на что обращать внимание (например, распространенные ошибки, серьезные проблемы безопасности))?

3) Есть ли способы, которые были бы лучше, чем я описал выше?

4) База данных, какие были бы хорошие варианты?Я хотел бы сделать это как можно более независимым и более или менее самодостаточным (полагаясь на минимальное количество установленного программного обеспечения).

Спасибо за любой вклад!

1 Ответ

1 голос
/ 14 апреля 2011
  1. да, urllib, urllib2 и urlparse являются основными библиотеками python для чтения в / из URL.Я бы предложил PyQt для графического фреймворка (pyGTK, wxWidgets и tkinter также подойдут, все они отлично работают на трех упомянутых вами ОС).PyQt включает в себя все, что вам нужно, без доступа к какой-либо другой библиотеке.Он включает в себя элементы управления доступом к сети, QUrl для разбора и построения URL-адресов и множество инструментов с графическим интерфейсом для отображения данных.

  2. ничего сверх нормы, кроме как см. [1] в 4

  3. см. 1 о PyQt.Но в конечном итоге вы создадите URL-адреса, к которым вы хотите получить доступ (включая все параметры get / post), отправляете данные, прослушиваете данные, анализируете данные и помещаете их в db.Клиент просто запросит базу данных, получит результаты, фильтрация / упорядочение / управление будет сделано в коде GUI.QtDeclarative может быть хорошим выбором для того, чтобы позволить пользователям создавать свои собственные запросы (хотя и думал, но еще никогда не реализовывал это), которые вы тоже можете выполнять.

  4. Я бы предложил postgres, mysql илилюбой db, реляционный или нет (см. mongodb, но пока не думайте, что PyQt его поддерживает, но вы можете использовать любую библиотеку python с pyqt).Затем вы можете сохранить данные там, сделать так, чтобы клиенты запрашивали их, а клиент находился на сервере, который имеет дополнительные функции для запроса сайтов и вставки данных. Хотя это может быть лучше использовано как инструмент cli, который получает данные и вставляет их вБД (так что вы можете запустить его на задании cron, если хотите).

Вам потребуется только разработать клиентский код и схему базы данных.[1] Помните, что базы данных могут иметь несколько клиентов, и пользователи могут напрямую подключаться к серверу базы данных.Единственное реальное предостережение - это настроить сервер на прослушивание только по локальной сети для получения клиента, а права пользователей установлены правильно.Это просто косметически отличается от подключения веб-приложения к БД.Вы просто предоставляете доступ большему количеству пользователей и клиентов.

Ваша самая большая проблема должна заключаться в том, чтобы понять, как бороться с утомительным программированием в графическом интерфейсе: P

...