跳转到主要内容

Django实现Vkontakte API Groups

项目描述

Django Vkontakte Groups
=======================

[![PyPI版本](https://badge.fury.io/py/django-vkontakte-groups.png)](http://badge.fury.io/py/django-vkontakte-groups) [![构建状态](https://travis-ci.org/ramusus/django-vkontakte-groups.png?branch=master)](https://travis-ci.org/ramusus/django-vkontakte-groups) [![覆盖率状态](https://coveralls.io/repos/ramusus/django-vkontakte-groups/badge.png?branch=master)](https://coveralls.io/r/ramusus/django-vkontakte-groups)

应用程序允许通过Vkontakte API使用标准Django模型与Vkontakte群组、它们的统计信息和用户进行交互

安装
---------

pip安装django-vkontakte-groups

在`settings.py`中需要添加

INSTALLED_APPS = (
...
'oauth_tokens',
'taggit',
'vkontakte_api',
'vkontakte_groups',
)

# oauth-tokens 设置
OAUTH_TOKENS_HISTORY = True # 在数据库中保留过期的访问令牌
OAUTH_TOKENS_VKONTAKTE_CLIENT_ID = '' # 应用程序ID
OAUTH_TOKENS_VKONTAKTE_CLIENT_SECRET = '' # 应用程序密钥
OAUTH_TOKENS_VKONTAKTE_SCOPE = ['ads,wall,photos,friends,stats'] # 应用程序作用域
OAUTH_TOKENS_VKONTAKTE_USERNAME = '' # 用户登录名
OAUTH_TOKENS_VKONTAKTE_PASSWORD = '' # 用户密码
OAUTH_TOKENS_VKONTAKTE_PHONE_END = '' # 用户手机号码最后四位

API方法覆盖
--------------------

* [groups.getById](http://vk.com/dev/groups.getById) – 根据标识符返回群组信息;
* [groups.search](http://vk.com/dev/groups.search) – 根据指定子字符串搜索群组;

计划中

* [groups.getMembers](http://vk.com/dev/groups.getMembers) – 返回群组成员列表;

使用示例
---------------------

### 获取群组

>>> from vkontakte_groups.models import Group
>>> Group.remote.fetch(ids=[16297716])
[<Group: Coca-Cola>]

### 通过群组方法获取群组讨论

为此需要安装额外应用程序
将[`django-vkontakte-board`](http://github.com/ramusus/django-vkontakte-board/)添加到`INSTALLED_APPS`中。

>>> from vkontakte_groups.models import Group
>>> group = Group.remote.fetch(ids=[16297716])[0]
>>> group.fetch_topics()
[<主题:奥林匹克圣火接力 ► 在这个主题中提出问题>,
<主题:迎新年促销活动 "与Coca-Cola一起迎接新年,带上一群可爱的小熊!" ► 提问和讨论>,
'...(其余元素省略)...']

通过管理器访问小组讨论。

>>> group.topics.count()
12

通过管理器访问所有讨论的评论。

>>> group.topics_comments.count()
23854

### 通过小组方法获取群组墙上的消息

为此需要安装额外应用程序
将[`django-vkontakte-wall`](http://github.com/ramusus/django-vkontakte-wall/)添加到`INSTALLED_APPS`中。

>>> from vkontakte_groups.models import Group
>>> group = Group.remote.fetch(ids=[16297716])[0]
>>> group.fetch_posts()
[<帖子:Coca-Cola: ...>,<帖子:Coca-Cola: ...>,'...(其余元素省略)...']

通过管理器访问群组消息。

>>> group.wall_posts.count()
5498

通过管理器访问所有消息的评论。

>>> group.wall_comments.count()
73637

### 通过小组方法获取群组的相册

为此需要安装额外应用程序
将[`django-vkontakte-photos`](http://github.com/ramusus/django-vkontakte-photos/)添加到`INSTALLED_APPS`中。

>>> from vkontakte_groups.models import Group
>>> group = Group.remote.fetch(ids=[16297716])[0]
>>> group.fetch_albums()
[<相册:Coca-Cola带来了FIFA世界杯奖杯>,
<相册:Coca-Cola的旧广告>,
'...(其余元素省略)...']

通过管理器访问群组相册。

>>> group.photo_albums.count()
47

通过管理器访问所有相册的照片。

>>> group.photos.count()
4432

### 获取群组统计信息

为此需要安装额外应用程序
将[`django-vkontakte-groups-statistic`](http://github.com/ramusus/django-vkontakte-groups-statistic/)添加到`INSTALLED_APPS`中。

通过API获取群组统计信息

>>> from vkontakte_groups.models import Group
>>> group = Group.remote.fetch(ids=[16297716])[0]
>>> group.fetch_statistic(api=True)

通过API获取的统计信息可通过管理器访问

>>> stat = group.statistics_api.all()[0]
>>> stat.__dict__
{'_state': <django.db.models.base.ModelState at 0xa2812ac>,
'age_18': 240,
'age_18_21': 86,
'age_21_24': 75,
'age_24_27': 59,
'age_27_30': 31,
'age_30_35': 23,
'age_35_45': 9,
'age_45': 13,
'date': datetime.date(2012, 3, 14),
'females': 295,
'fetched': datetime.datetime(2012, 9, 12, 0, 50, 42, 597930),
'group_id': 14,
'id': 182,
'males': 406,
'views': 1401,
'visitors': 702}

通过解析器获取群组统计信息

>>> from vkontakte_groups.models import Group
>>> group = Group.remote.fetch(ids=[16297716])[0]
>>> group.fetch_statistic()

通过解析器获取的统计信息可通过管理器访问

>>> stat = group.statistics.all()[0]
>>> stat.__dict__
{'_state': <django.db.models.base.ModelState at 0xa28168c>,
'act_members': None,
'act_visitors': None,
'activity_photo_comments': None,
'activity_photos': None,
'activity_topic_comments': None,
'activity_topics': None,
'activity_video_comments': None,
'activity_videos': None,
'activity_wall': None,
'ads_members': None,
'ads_visitors': None,
'age_18': None,
'age_18_21': None,
'age_21_24': None,
'age_24_27': None,
'age_27_30': None,
'age_30_35': None,
'age_35_45': None,
'age_45': None,
'comments': 298,
'date': datetime.date(2011, 8, 25),
'ex_members': 595,
'females': None,
'group_id': 14,
'id': 2410,
'likes': 26,
'males': None,
'members': 335748,
'new_members': 143,
'reach': None,
'reach_age_18': None,
'reach_age_18_21': None,
'reach_age_21_24': None,
'reach_age_24_27': None,
'reach_age_27_30': None,
'reach_age_30_35': None,
'reach_age_35_45': None,
'reach_age_45': None,
'reach_females': None,
'reach_males': None,
'reach_subsribers': None,
'references': None,
'section_applications': None,
'section_audio': None,
'section_discussions': None,
'section_documents': None,
'section_photoalbums': None,
'section_video': None,
'shares': 4,
'views': 1188,
'visitors': 603,
'widget_ex_users': None,
'widget_members_views': None,
'widget_new_users': None,
'widget_users_views': None}

### 获取群组订阅者概览

为此需要安装额外的应用程序
`django-vkontakte-groups-migration` 并将其添加到 `INSTALLED_APPS`

>>> from vkontakte_groups.models import Group
>>> group = Group.remote.fetch(ids=[16297716])[0]
>>> group.update_users()

订阅者通过管理器可用

>>> migration = group.migrations.all()[0]
>>> len(migration.members_ids)
5277888
>>> migration.members_count
5277888

订阅者通过管理器可用。为此需要安装额外的应用程序
`django-vkontakte-users` 并将其添加到 `INSTALLED_APPS`

>>> group.users.count()
5277888

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

django-vkontakte-groups-0.7.2.tar.gz (32.7 kB 查看哈希值)

上传时间