Advertisement
Guest User

Untitled

a guest
May 21st, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.65 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. import urllib
  4. import json
  5. import xchat
  6. import re
  7. import sys
  8. import requests
  9.  
  10. __module_name__ = "Get Youtube Video Info"
  11. __module_version__ = "0.4"
  12. __module_description__ = "Reads and displays video info from an URL."
  13. __module_author__ = "demi_alucard <alysson87@gmail.com> updated by _Sam--"
  14.  
  15.  
  16.  
  17. def get_yt_info(id):
  18. params = {}
  19. #params['v'] = '3.0'
  20. #params['alt'] = 'json'
  21. #params['safeSearch'] = 'none'
  22. #params['restriction'] = '255.255.255.255'
  23. #params['q'] = '"%s"' % id
  24. params['part'] = 'snippet,id,statistics'
  25. params['id'] = id
  26. #params['fields'] = 'entry[media:group/yt:videoid="%s"]' % id
  27.  
  28. params['key'] = 'XXXXXXXXXXXXXXXXXXXX'
  29. params = urllib.urlencode(params)
  30.  
  31. #print params
  32.  
  33.  
  34. f = urllib.urlopen('https://www.googleapis.com/youtube/v3/videos?%s' % params)
  35. data = json.load(f)
  36. #print data
  37. #if 'entry' not in data['feed']:
  38. # return {}
  39. title = data['items'][0]['snippet']['title']
  40. views = data['items'][0]['statistics']['viewCount']
  41. likes = data['items'][0]['statistics']['likeCount']
  42. dislikes = data['items'][0]['statistics']['dislikeCount']
  43. #print title
  44. info = {}
  45. info['id'] = id
  46. info['title'] = title
  47. info['views'] = views
  48. info['likes'] = likes
  49. info['dislikes'] = dislikes
  50.  
  51.  
  52. return info
  53.  
  54. def show_yt_info(info):
  55. msg = u"\0033\002::\003 YouTube\002 %s " + \
  56. u"\0033\002::\003 URL:\002 https://youtu.be/%s " + \
  57. u"\0033\002::\003 Views:\002 %s " + \
  58. u"\0033\002:: [+]\002 %s likes " + \
  59. u"\002\0034[-]\002 %s dislikes " + \
  60. u"\0033\002::\002"
  61.  
  62. msg = (msg) % (info['title'], info['id'], group(info['views']), group(info['likes']), group(info['dislikes']))
  63. msg = msg.encode('utf-8')
  64. xchat.command("say " + msg)
  65. #print(msg)
  66.  
  67. def get_id_from_url(text):
  68. check = re.compile(r"(?:https?\://)?(?:\w+\.)?(?:youtube|youtu)(?:\.\w+){1,2}/")
  69. normal = re.compile(r"(?:=|%3F)?v(?:=|%3D)([\w\-]+)")
  70. short = re.compile(r"(?:(?:https?\://)?(?:\w+\.)?(?:youtube|youtu)(?:\.\w+){1,2}/)([\w\-]+)")
  71. vid = ""
  72.  
  73. if check.search(text):
  74. normal = normal.search(text)
  75. short = short.search(text)
  76. if normal != None:
  77. vid = normal.group(1)
  78. elif short != None:
  79. vid = short.group(1)
  80.  
  81. return vid
  82.  
  83. def group(n):
  84. return (','.join(re.findall(r"\d{1,3}", str(n)[::-1])))[::-1]
  85.  
  86. def privmsg_cb(word, word_eol, userdata):
  87. id = get_id_from_url(word_eol[3])
  88. if len(id) == 0:
  89. return xchat.EAT_NONE
  90. info = get_yt_info(id)
  91. if len(info) == 0:
  92. return xchat.EAT_NONE
  93. show_yt_info(info)
  94. return xchat.EAT_NONE
  95.  
  96. def ytcmd_cb(word, word_eol, userdata):
  97. if xchat.get_info("channel") == '#bitcoincash':
  98. return xchat.EAT_NONE
  99. if len(word) < 2:
  100. print "/yt <url> to get video info"
  101. return xchat.EAT_NONE
  102. id = get_id_from_url(word_eol[0])
  103. if len(id) == 0:
  104. return xchat.EAT_NONE
  105. info = get_yt_info(id)
  106. if len(info) == 0:
  107. return xchat.EAT_NONE
  108. show_yt_info(info)
  109. return xchat.EAT_NONE
  110.  
  111. for chan in xchat.get_list('channels'):
  112. if chan.channel == "#bitcoincash":
  113. print "douchhhhhe"
  114.  
  115.  
  116. xchat.hook_print("Channel Message",ytcmd_cb)
  117. xchat.hook_command("yt", ytcmd_cb, help="/yt <url> to get video info")
  118. #xchat.hook_server("PRIVMSG", privmsg_cb)
  119.  
  120.  
  121. print "\0034", __module_name__, __module_version__, "has been loaded\003"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement