#!/usr/bin/env python
# hateserv irc bot - developed by acidvegas in python (https://git.acid.vegas/hateserv)
import http.client
import json
import re
import urllib.parse
from googleapiclient.discovery import build # https://pypi.org/project/google-api-python-client/
#import tweepy # https://pypi.org/project/tweepy/
# API Keys
google_api_key = 'redacted' # https://console.developers.google.com/
google_cse_id = 'redacted' # https://cse.google.com/
twitter_bearer_token = 'redacted'
twitter_access_token = 'redacted'
twitter_access_token_secret = 'redacted'
twitter_client_id = 'redacted'
twitter_client_secret = 'redacted'
twitter_api_key = 'redacted'
twitter_api_secret = 'redacted'
def between(source, start, stop):
data = re.compile(start + '(.*?)' + stop, re.IGNORECASE|re.MULTILINE).search(source)
return data.group(1) if data else False
def geturl(url, endpoint, headers={}):
conn = http.client.HTTPSConnection(url, timeout=15)
conn.request('GET', endpoint, headers=headers)
response = conn.getresponse().read()
conn.close()
return response
def google(query):
service = build('customsearch', 'v1', developerKey=google_api_key, cache_discovery=False).cse()
results = service.list(q=query, cx=google_cse_id, num=10).execute()
return results['items'] if results else False
def netsplit(option, query):
if option == 'channels':
data = str(geturl('netsplit.de', '/channels/?chat='+query))
for i in ('','','','','','',''):
data = data.replace(i, '')
results = re.findall('(.*?)
', data, re.IGNORECASE|re.MULTILINE)
if results:
channels = list()
for item in results:
channel = between(item, '', '')
network = between(item, '', '')
users = between(item, ' - ', ' users - ')
if 'current topic:' in item:
topic = between(item, 'current topic: ', '
').replace('','')
else:
topic = 'no topic set for channel'
channels.append({'channel':channel, 'network':network, 'users':users, 'topic':topic})
return channels
else:
return False
elif option == 'networks':
data = str(geturl('netsplit.de', '/networks/'))
results = re.findall('