photo_vk = models.ImageField(upload_to=photo_vk_path, verbose_name=u' ', max_length = 1000, blank=True) file_vk = models.FileField(upload_to=files_vk_path, verbose_name=u' ', max_length = 1000, blank=True) wall_user_vk = models.BooleanField(verbose_name=u' ', default=False) group_vk = models.ManyToManyField(Vk_groups, verbose_name=u' ', blank=True) group_stat = models.BooleanField(verbose_name=u' ', default=False)
class Vk_groups(models.Model): title = models.CharField(max_length=1000, verbose_name=u' ') gid = models.CharField(max_length=1000, verbose_name=u'ID ') is_closed = models.BooleanField(verbose_name=u' ', default=False) is_admin = models.BooleanField(verbose_name=u' ', default=False) def __str__(self): return self.title.encode('utf8') class Meta: verbose_name = " " verbose_name_plural = " "
class Vk_posts(models.Model): group = models.CharField(max_length=1000, verbose_name=u'/', blank=True) text = HTMLField(verbose_name=u' ', blank=True) date = models.DateTimeField(verbose_name=u' ', blank=True)
def save(self, *args, **kwargs): use_vk(self) model = super(Page, self).save(*args, **kwargs)
# photo_vk_path = 'photo_vk' files_vk_path = 'files_vk' def use_vk(self): # msg = self.title + '\n' + self.text msg = re.sub('<.*?>','',msg) # , post_vk = 0 # groups = [g for g in self.group_vk.all()] if len(groups) or self.wall_user_vk: post_vk = 1 if post_vk: attachments = [] # if self.photo_vk: server = vk.photos.getWallUploadServer(uid = my_id) path = MEDIA_ROOT + photo_vk_path + '/' + re.split('/', self.photo_vk.url)[-1] r = requests.post(server['upload_url'], files={'photo': open(path,"rb")}) params = {'server': r.json()['server'], 'photo': r.json()['photo'], 'hash': r.json()['hash']} wallphoto = vk.photos.saveWallPhoto(**params) attachments.append(wallphoto[0]['id']) # if self.file_vk: server = vk.docs.getWallUploadServer() path = MEDIA_ROOT + files_vk_path + '/' + re.split('/', self.file_vk.url)[-1] r = requests.post(server['upload_url'], files={'file': open(path,"rb")}) params = {'file': r.json()['file']} doc = vk.docs.save(**params) attachments.append('doc' + str(my_id) + '_' + str(doc[0]['did'])) params = {'attachments': ','.join(attachments), 'message': msg} # if self.wall_user_vk: params['owner_id'] = my_id vk.wall.post(**params) # if len(groups): if self.group_stat: params['from_group'] = 1 for g in groups: params['owner_id'] = g.gid vk.wall.post(**params)
import sys import time sys.path = ['C:/site/umc/'] + sys.path from django.core.management import setup_environ import settings setup_environ(settings) from www.models import Vk_groups, Vk_posts from umc.vk_response import * count_posts = 15 def get_posts(owner_id, g_name): """ Vk_posts""" params = {'owner_id': owner_id, 'count': count_posts} answer = vk.wall.get(**params) for i in range(count_posts): params = { 'group': g_name, 'text': answer[i+1]['text'], 'date': time.strftime("%Y-%m-%d %H:%M:%S+06:00", time.localtime(answer[i+1]['date'])) } try: Vk_posts.objects.get_or_create(**params) except: params['text'] = u' ' Vk_posts.objects.get_or_create(**params) # Vk_groups params = {'owner_id': my_id, 'extended': 1, 'filter': 'events, groups, admin'} answer = vk.groups.get(**params) for i in range(answer[0]): Vk_groups.objects.get_or_create(title = answer[i+1]['name'], gid = '-' + str(answer[i+1]['gid']), is_admin = answer[i+1]['is_admin'], is_closed = answer[i+1]['is_closed']) # Vk_posts groups = Vk_groups.objects.all() for g in groups: get_posts(g.gid, g.title) # Vk_posts user = vk.users.get(uid = my_id) get_posts(my_id, user[0]['first_name']+ ' ' + user[0]['last_name'])
Source: https://habr.com/ru/post/236875/