Skip to content

Commit

Permalink
- Add my subscriptions support
Browse files Browse the repository at this point in the history
- Add universal method for social objects
  • Loading branch information
KOL committed Apr 12, 2015
1 parent 77b2be8 commit 6abd2d9
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 60 deletions.
146 changes: 91 additions & 55 deletions Contents/Code/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ def VideoMainMenu():
key=Callback(VideoListFriends, uid=Dict['user_id']),
title=u'%s' % L('My friends')
))
oc.add(DirectoryObject(
key=Callback(VideoListSubscriptions, uid=Dict['user_id']),
title=u'%s' % L('My subscriptions')
))

oc.add(InputDirectoryObject(
key=Callback(
Expand All @@ -109,6 +113,11 @@ def VideoListGroups(uid, offset=0):
return GetGroups(VideoAlbums, VideoListGroups, uid, offset);


@route(PREFIX_V + '/subscriptions')
def VideoListSubscriptions(uid, offset=0):
return GetSubscriptions(VideoAlbums, VideoListSubscriptions, uid, offset)


@route(PREFIX_V + '/friends')
def VideoListFriends(uid, offset=0):
return GetFriends(VideoAlbums, VideoListFriends, uid, offset)
Expand Down Expand Up @@ -304,6 +313,10 @@ def MusicMainMenu():
key=Callback(MusicListFriends, uid=Dict['user_id']),
title=u'%s' % L('My friends')
))
oc.add(DirectoryObject(
key=Callback(MusicListSubscriptions, uid=Dict['user_id']),
title=u'%s' % L('My subscriptions')
))

oc.add(InputDirectoryObject(
key=Callback(
Expand All @@ -322,6 +335,11 @@ def MusicListGroups(uid, offset=0):
return GetGroups(MusicAlbums, MusicListGroups, uid, offset)


@route(PREFIX_M + '/subscriptions')
def MusicListSubscriptions(uid, offset=0):
return GetSubscriptions(MusicAlbums, MusicListSubscriptions, uid, offset)


@route(PREFIX_M + '/friends')
def MusicListFriends(uid, offset=0):
return GetFriends(MusicAlbums, MusicListFriends, uid, offset)
Expand Down Expand Up @@ -484,6 +502,10 @@ def PhotoMainMenu():
key=Callback(PhotoListFriends, uid=Dict['user_id']),
title=u'%s' % L('My friends')
))
oc.add(DirectoryObject(
key=Callback(PhotoListSubscriptions, uid=Dict['user_id']),
title=u'%s' % L('My subscriptions')
))

return AddPhotoAlbums(oc, Dict['user_id'])

Expand All @@ -493,6 +515,11 @@ def PhotoListGroups(uid, offset=0):
return GetGroups(PhotoAlbums, PhotoListGroups, uid, offset)


@route(PREFIX_P + '/subscriptions')
def PhotoListSubscriptions(uid, offset=0):
return GetSubscriptions(PhotoAlbums, PhotoListSubscriptions, uid, offset)


@route(PREFIX_P + '/friends')
def PhotoListFriends(uid, offset=0):
return GetFriends(PhotoAlbums, PhotoListFriends, uid, offset)
Expand Down Expand Up @@ -692,42 +719,32 @@ def GetGroups(callback_action, callback_page, uid, offset):
title2=u'%s' % L('My groups'),
replace_parent=(offset > 0)
)
groups = ApiRequest('groups.get', {
'user_id': uid,
'extended': 1,
'count': VK_LIMIT,
'offset': offset
})
if groups and groups['count']:
for item in groups['items']:
title = u'%s' % item['name']
if 'photo_200' in item:
thumb = item['photo_200']
else:
thumb = R(ICON)

oc.add(DirectoryObject(
key=Callback(
callback_action,
uid=(item['id']*-1),
title=title,
),
title=title,
thumb=thumb
))
return AddSocialObjects(
oc=oc,
method='groups.get',
callback_action=callback_action,
callback_page=callback_page,
uid=uid,
offset=offset
)

offset = int(offset)+VK_LIMIT
if offset < groups['count']:
oc.add(NextPageObject(
key=Callback(
callback_page,
uid=uid,
offset=offset
),
title=u'%s' % L('More groups')
))

return oc
def GetSubscriptions(callback_action, callback_page, uid, offset):
'''Get Subscriptions container with custom callback'''
oc = ObjectContainer(
title2=u'%s' % L('My subscriptions'),
replace_parent=(offset > 0)
)

return AddSocialObjects(
oc=oc,
method='users.getSubscriptions',
callback_action=callback_action,
callback_page=callback_page,
uid=uid,
offset=offset
)


def GetFriends(callback_action, callback_page, uid, offset):
Expand All @@ -736,33 +753,32 @@ def GetFriends(callback_action, callback_page, uid, offset):
title2=u'%s' % L('My friends'),
replace_parent=(offset > 0)
)
friends = ApiRequest('friends.get', {
return AddSocialObjects(
oc=oc,
method='friends.get',
callback_action=callback_action,
callback_page=callback_page,
uid=uid,
offset=offset
)


def AddSocialObjects(oc, method, callback_action, callback_page, uid, offset):
items = ApiRequest(method, {
'user_id': uid,
'fields': 'photo_200_orig',
'order': 'hints',
'extended': 1,
'fields': 'photo_200',
'count': VK_LIMIT,
'offset': offset
})
if friends and friends['count']:
for item in friends['items']:
title = u'%s %s' % (item['first_name'], item['last_name'])
if 'photo_200_orig' in item:
thumb = item['photo_200_orig']
else:
thumb = R(ICON)
'offset': offset,
'order': 'hints',

oc.add(DirectoryObject(
key=Callback(
callback_action,
uid=item['id'],
title=title,
),
title=title,
thumb=thumb
))
})
if items and items['count']:
for item in items['items']:
oc.add(SocialDirectoryObject(callback_action, item))

offset = int(offset)+VK_LIMIT
if offset < friends['count']:
if offset < items['count']:
oc.add(NextPageObject(
key=Callback(
callback_page,
Expand All @@ -775,6 +791,26 @@ def GetFriends(callback_action, callback_page, uid, offset):
return oc


def SocialDirectoryObject(callback_action, item):

if 'name' in item: # Group or page
title = u'%s' % item['name']
uid = (item['id']*-1)
else:
title = u'%s %s' % (item['first_name'], item['last_name'])
uid = item['id']

return DirectoryObject(
key=Callback(
callback_action,
uid=uid,
title=title,
),
title=title,
thumb=item['photo_200'] if 'photo_200' in item else R(ICON)
)


def ApiRequest(method, params):
params['access_token'] = Dict['token']
params['v'] = VK_VERSION
Expand Down
2 changes: 1 addition & 1 deletion Contents/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<key>CFBundleSignature</key>
<string>hook</string>
<key>CFBundleVersion</key>
<string>2.6</string>
<string>3.0</string>

<key>PlexClientPlatforms</key>
<string>*</string>
Expand Down
2 changes: 1 addition & 1 deletion Contents/Strings/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
"Authorization complete" : "Authorization complete",
"Error" : "Error",
"More albums" : "More albums",
"More groups" : "More groups",
"MusicTitle": "VKontakte Music",
"My friends" : "My friends",
"My groups" : "My groups",
"My subscriptions" : "My subscriptions",
"Next page" : "Next page",
"No entries found" : "No entries found",
"PhotosTitle": "VKontakte Photos",
Expand Down
2 changes: 1 addition & 1 deletion Contents/Strings/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
"Authorization complete" : "Авторизация завершена",
"Error" : "Ошибка",
"More albums" : "Еще альбомы",
"More groups" : "Еще группы",
"MusicTitle": "ВКонтакте Аудиозаписи",
"My friends" : "Мои Друзья",
"My groups" : "Мои Группы",
"My subscriptions" : "Мои подписки",
"Next page" : "Далее",
"No entries found" : "Ничего не нашлось",
"PhotosTitle": "ВКонтакте Фотографии",
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

* Видеозаписи, аудиозаписи, фотографии
* Альбомы
* Группы и друзья
* Группы, друзья, подписки
* Поиск видео и аудиозаписей


Expand All @@ -33,7 +33,7 @@ Current status

* Support video, music and photos
* Support albums
* Support friends and groups media content
* Support friends, groups and subscriptions media content
* Support video and music searching


Expand Down

0 comments on commit 6abd2d9

Please sign in to comment.