Guest User

Untitled

a guest
Jul 18th, 2015
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.99 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3.  
  4. import sys
  5. import json
  6. import random
  7. import requests
  8. from urllib.request import urlopen, urlretrieve
  9. from html2text import html2text
  10. import vk
  11.  
  12. TOKEN = ''
  13. GROUP_ID = '98015944'
  14. BOARDS = ['au', 'bi', 'biz', 'bo', 'c', 'em', 'fa', 'fiz', 'fl', 'ftb', 'hh',
  15.           'hi', 'me', 'mg', 'mlp', 'mo', 'mov', 'mu', 'ne', 'psy', 're', 'sci',
  16.           'sf', 'sn', 'sp', 'spc', 'tv', 'un', 'w', 'wh', 'wm', 'wp', 'di',
  17.           'diy', 'mus', 'pa', 'p', 'wrk', 'gd', 'hw', 'mobi', 'pr', 'ra', 's',
  18.           't', 'bg', 'cg', 'es', 'mmo', 'moba', 'tes', 'vg', 'wr', 'a', 'fd',
  19.           'ja', 'ma', 'vn', 'd', 'b', 'soc', 'media', 'r', 'abu', 'rf', 'fg',
  20.           'fur', 'g', 'ga', 'h', 'ho', 'e', 'fet', 'sex', 'fag', 'po', 'wn']  # remove 'hc', 'd'
  21.  
  22.  
  23. def load_json(url):
  24.     data = urlopen(url).read().decode('utf-8', 'ignore')
  25.     return(json.loads(data))
  26.  
  27.  
  28. def top_tread(board):
  29.     url = ('https://2ch.hk/%s/threads.json' % (board))
  30.     jdata = load_json(url)
  31.  
  32.     max_score = (max(jdata['threads'], key=lambda x: x['score']))
  33.     tread = max_score['num']
  34.     score = ('[Просм. %s, рейтинг %s]' % (max_score['views'], max_score['score']))
  35.     return(tread, score)
  36.  
  37.  
  38. def tread_data(board, tread):
  39.     url = ('https://2ch.hk/%s/res/%s.json' % (board, tread))
  40.     jdata = load_json(url)
  41.  
  42.     board_name = ('/%s/ %s' % (board, jdata['BoardName']))
  43.     tread_title = html2text(jdata['title'])
  44.     tread_title = tread_title.rstrip('\n')
  45.     op_post = html2text(jdata['threads'][0]['posts'][0]['comment'])
  46.     op_pic = jdata['threads'][0]['posts'][0]['files'][0]['path']
  47.     op_pic = ('https://2ch.hk/%s/%s' % (board, op_pic))
  48.     return(board_name, tread_title, op_post, op_pic)
  49.  
  50.  
  51. def post_vk(text, url, op_pic):
  52.     urlretrieve(op_pic, 'pic.jpg')
  53.  
  54.     vkapi = vk.API(access_token=TOKEN)
  55.     server = vkapi.photos.getWallUploadServer(group_id=GROUP_ID)
  56.     req = requests.post(server['upload_url'], files={'photo': open('pic.jpg', "rb")})
  57.     req = req.json()
  58.     print(req)
  59.     data = vkapi.photos.saveWallPhoto(group_id='98015944', photo=req['photo'],
  60.                                       server=req['server'], hash=req['hash'])
  61.  
  62.     img_url = ('photo%s_%s,%s' % (data[0]['owner_id'], data[0]['id'], url))
  63.     post = vkapi.wall.post(owner_id='-98015944', from_group='1', message=text, attachments=img_url)
  64.     print(post)
  65.  
  66.  
  67. def main():
  68.     if len(sys.argv) <= 1:
  69.         board = random.choice(BOARDS)
  70.     else:
  71.         board = sys.argv[1]
  72.     print('Board:', board)
  73.  
  74.     tread, score = top_tread(board)
  75.  
  76.     board_name, tread_title, op_post, op_pic = tread_data(board, tread)
  77.     if tread_title in op_post:
  78.         text = ('%s\n%s\n%s' % (board_name, score, op_post))
  79.     else:
  80.         text = ('%s\n%s\n%s\n%s' % (board_name, tread_title, score, op_post))
  81.     print(text)
  82.  
  83.     tread_url = ('https://2ch.hk/%s/res/%s.html' % (board, tread))
  84.     post_vk(text, tread_url, op_pic)
  85.  
  86.  
  87. if __name__ == '__main__':
  88.     main()
Advertisement
Add Comment
Please, Sign In to add comment