Remove unnecessary decoding.

This commit is contained in:
oddluck 2020-03-01 21:06:47 +00:00
parent fe6541cac0
commit f4cc96e610
20 changed files with 144 additions and 106 deletions

View File

@ -35,7 +35,7 @@ import supybot.ircutils as ircutils
import supybot.callbacks as callbacks import supybot.callbacks as callbacks
import supybot.conf as conf import supybot.conf as conf
import requests import requests
import json
class Azure(callbacks.Plugin): class Azure(callbacks.Plugin):
@ -68,8 +68,7 @@ class Azure(callbacks.Plugin):
'text' : text 'text' : text
}] }]
response = requests.post(url, headers=headers, json=body) response = requests.post(url, headers=headers, json=body)
response.raise_for_status() result = json.loads(response.content)
result = response.json()
if result[0].get('detectedLanguage'): if result[0].get('detectedLanguage'):
reply = "{0} [{1}~>{2}]".format(result[0]['translations'][0]['text'], result[0]['detectedLanguage']['language'], target) reply = "{0} [{1}~>{2}]".format(result[0]['translations'][0]['text'], result[0]['detectedLanguage']['language'], target)
else: else:

View File

@ -33,7 +33,7 @@ import supybot.utils as utils
import supybot.plugins as plugins import supybot.plugins as plugins
import supybot.callbacks as callbacks import supybot.callbacks as callbacks
import re import re
import json
import requests import requests
try: try:
@ -76,7 +76,7 @@ class BotLibre(callbacks.Plugin):
} }
try: try:
r = requests.post(self.url, json=payload) r = requests.post(self.url, json=payload)
j = r.json() j = json.loads(r.content)
response = j['message'] response = j['message']
self.conversation[channel] = j['conversation'] self.conversation[channel] = j['conversation']
if response: if response:

View File

@ -31,7 +31,7 @@
import pendulum import pendulum
import requests import requests
import collections import collections
import json
from supybot import utils, plugins, ircutils, callbacks, conf, schedule, ircmsgs from supybot import utils, plugins, ircutils, callbacks, conf, schedule, ircmsgs
from supybot.commands import * from supybot.commands import *
try: try:
@ -170,7 +170,8 @@ class CBB(callbacks.Plugin):
data = collections.OrderedDict() data = collections.OrderedDict()
for date in dates: for date in dates:
tmp = requests.get(SCOREBOARD.format(date=date)).json() tmp = requests.get(SCOREBOARD.format(date=date), timeout=10)
tmp = json.loads(tmp.content)
tmp_date = pendulum.parse(tmp['eventsDate']['date'], tmp_date = pendulum.parse(tmp['eventsDate']['date'],
strict=False).in_tz('US/Eastern').format('YYYYMMDD') strict=False).in_tz('US/Eastern').format('YYYYMMDD')
data[tmp_date] = tmp['events'] data[tmp_date] = tmp['events']

View File

@ -37,6 +37,8 @@ import re
import os import os
from supybot import utils, plugins, ircutils, callbacks, schedule from supybot import utils, plugins, ircutils, callbacks, schedule
from supybot.commands import * from supybot.commands import *
import json
try: try:
from supybot.i18n import PluginInternationalization from supybot.i18n import PluginInternationalization
_ = PluginInternationalization('CFB') _ = PluginInternationalization('CFB')
@ -69,7 +71,7 @@ class CFB(callbacks.Plugin):
if not self.abbrv: if not self.abbrv:
self.abbrv = requests.get( self.abbrv = requests.get(
'https://raw.githubusercontent.com/diagonalfish/FootballBotX2/master/abbrv.json') 'https://raw.githubusercontent.com/diagonalfish/FootballBotX2/master/abbrv.json')
self.abbrv = self.abbrv.json() self.abbrv = json.loads(self.abbrv.content)
@wrap @wrap
@ -118,7 +120,7 @@ class CFB(callbacks.Plugin):
try: try:
data = requests.get(url) data = requests.get(url)
data = data.json() data = json.loads(data.content)
except: except:
irc.reply('Error fetching rankings') irc.reply('Error fetching rankings')
return return
@ -224,7 +226,7 @@ class CFB(callbacks.Plugin):
url += '&week={}'.format(week) url += '&week={}'.format(week)
games = requests.get(url) games = requests.get(url)
games = games.json() games = json.loads(games.content)
games = games['events'] games = games['events']

View File

@ -36,6 +36,7 @@ import random
import datetime import datetime
import os import os
import requests import requests
import json
try: try:
from supybot.i18n import PluginInternationalization from supybot.i18n import PluginInternationalization
@ -59,7 +60,8 @@ class Cayenne(callbacks.Plugin):
""" """
Get a random cat fact Get a random cat fact
""" """
data = requests.get("https://catfact.ninja/fact").json() data = requests.get("https://catfact.ninja/fact")
data = json.loads(data.content)
return data['fact'] return data['fact']
def message_contains_trigger_word(self, message): def message_contains_trigger_word(self, message):

View File

@ -39,6 +39,7 @@ from bs4 import BeautifulSoup
import codecs import codecs
import os import os
import collections import collections
import json
try: try:
from supybot.i18n import PluginInternationalization from supybot.i18n import PluginInternationalization
@ -58,7 +59,8 @@ class Fun(callbacks.Plugin):
""" """
channel = msg.args[0] channel = msg.args[0]
data = requests.get("https://api.adviceslip.com/advice").json() data = requests.get("https://api.adviceslip.com/advice")
data = json.loads(data.content)
irc.reply(data['slip']['advice']) irc.reply(data['slip']['advice'])
advice = wrap(advice) advice = wrap(advice)
@ -72,7 +74,8 @@ class Fun(callbacks.Plugin):
headers = { headers = {
'Accept': 'application/json', 'Accept': 'application/json',
} }
data = requests.get('https://icanhazdadjoke.com/', headers=headers).json() data = requests.get('https://icanhazdadjoke.com/', headers=headers)
data = json.loads(data.content)
irc.reply(data['joke'].replace('\n', '').replace('\r', '').replace('\t', '')) irc.reply(data['joke'].replace('\n', '').replace('\r', '').replace('\t', ''))
joke = wrap(joke) joke = wrap(joke)
@ -83,7 +86,8 @@ class Fun(callbacks.Plugin):
""" """
channel = msg.args[0] channel = msg.args[0]
data = requests.get("https://catfact.ninja/fact").json() data = requests.get("https://catfact.ninja/fact")
data = json.loads(data.content)
irc.reply(data['fact']) irc.reply(data['fact'])
catfact = wrap(catfact) catfact = wrap(catfact)
@ -94,7 +98,8 @@ class Fun(callbacks.Plugin):
""" """
channel = msg.args[0] channel = msg.args[0]
data = requests.get("https://uselessfacts.jsph.pl/random.json?language=en").json() data = requests.get("https://uselessfacts.jsph.pl/random.json?language=en")
data = json.loads(data.content)
irc.reply(data['text']) irc.reply(data['text'])
useless = wrap(useless) useless = wrap(useless)
@ -104,7 +109,8 @@ class Fun(callbacks.Plugin):
Corporate buzzord generator Corporate buzzord generator
""" """
channel = msg.args[0] channel = msg.args[0]
data = requests.get("https://corporatebs-generator.sameerkumar.website").json() data = requests.get("https://corporatebs-generator.sameerkumar.website")
data = json.loads(data.content)
irc.reply(data['phrase']) irc.reply(data['phrase'])
buzz = wrap(buzz) buzz = wrap(buzz)
@ -113,7 +119,8 @@ class Fun(callbacks.Plugin):
Startup generator Startup generator
""" """
channel = msg.args[0] channel = msg.args[0]
data = requests.get("http://itsthisforthat.com/api.php?json").json() data = requests.get("http://itsthisforthat.com/api.php?json")
data = json.loads(data.content)
vowels = ('a','e','i','o','u','A','E','I','O','U') vowels = ('a','e','i','o','u','A','E','I','O','U')
if data['this'].startswith(vowels): if data['this'].startswith(vowels):
response = "So, Basically, It\'s Like An {0} for {1}".format(data['this'], data['that']) response = "So, Basically, It\'s Like An {0} for {1}".format(data['this'], data['that'])
@ -127,7 +134,8 @@ class Fun(callbacks.Plugin):
Insult generator. Optionally send insult to <nick> (<nick> must be in channel). Insult generator. Optionally send insult to <nick> (<nick> must be in channel).
""" """
channel = msg.args[0] channel = msg.args[0]
data = requests.get("https://insult.mattbas.org/api/en/insult.json").json() data = requests.get("https://insult.mattbas.org/api/en/insult.json")
data = json.loads(data.content)
if nick: if nick:
response = "{0}: {1}".format(nick, data['insult']) response = "{0}: {1}".format(nick, data['insult'])
irc.reply(response, prefixNick=False) irc.reply(response, prefixNick=False)
@ -328,14 +336,14 @@ class Fun(callbacks.Plugin):
coins = [] coins = []
coins.append(optcoin) coins.append(optcoin)
coins_str = ','.join(c.upper() for c in coins) coins_str = ','.join(c.upper() for c in coins)
coin_data = requests.get(coin_url.format(coins=coins_str)) data = requests.get(coin_url.format(coins=coins_str))
coin_data = coin_data.json() data = json.loads(data.content)
if 'RAW' not in coin_data: if 'RAW' not in data:
irc.reply('ERROR: no coin found for {}'.format(optcoin)) irc.reply('ERROR: no coin found for {}'.format(optcoin))
return return
output = [] output = []
tmp = {} tmp = {}
data = coin_data['RAW'] data = data['RAW']
data2 = collections.OrderedDict.fromkeys(sorted(data)) data2 = collections.OrderedDict.fromkeys(sorted(data))
for k,v in data.items(): for k,v in data.items():
data2.update({k: v}) data2.update({k: v})
@ -350,18 +358,19 @@ class Fun(callbacks.Plugin):
""" """
volm_url = 'https://min-api.cryptocompare.com/data/top/totalvol?limit=10&tsym=USD' volm_url = 'https://min-api.cryptocompare.com/data/top/totalvol?limit=10&tsym=USD'
coin_url = 'https://min-api.cryptocompare.com/data/pricemultifull?fsyms={coins}&tsyms=USD' coin_url = 'https://min-api.cryptocompare.com/data/pricemultifull?fsyms={coins}&tsyms=USD'
volm_data = requests.get(volm_url).json() data = requests.get(volm_url)
data = json.loads(data.content)
coins = [] coins = []
for thing in volm_data['Data']: for thing in data['Data']:
name = thing['CoinInfo']['Name'] name = thing['CoinInfo']['Name']
coins.append(name) coins.append(name)
coins.append('DOGE') coins.append('DOGE')
coins_str = ','.join(c for c in coins) coins_str = ','.join(c for c in coins)
coin_data = requests.get(coin_url.format(coins=coins_str)) data = requests.get(coin_url.format(coins=coins_str))
coin_data = coin_data.json() data = json.loads(data.content)
output = [] output = []
tmp = {} tmp = {}
data = coin_data['RAW'] data = data['RAW']
tmp['BTC'] = data.pop('BTC') tmp['BTC'] = data.pop('BTC')
data2 = collections.OrderedDict.fromkeys(sorted(data)) data2 = collections.OrderedDict.fromkeys(sorted(data))
for k,v in data.items(): for k,v in data.items():
@ -374,9 +383,7 @@ class Fun(callbacks.Plugin):
coins = wrap(coins, [optional('somethingWithoutSpaces')]) coins = wrap(coins, [optional('somethingWithoutSpaces')])
def _parseCoins(self, data, optmarket=None): def _parseCoins(self, data, optmarket=None):
ticker = [] ticker = []
def _humifyCap(cap): def _humifyCap(cap):
if not cap: if not cap:
return cap return cap
@ -394,7 +401,6 @@ class Fun(callbacks.Plugin):
cap = '${:.2f}'.format(cap) cap = '${:.2f}'.format(cap)
return cap return cap
return cap return cap
for symbol in data: for symbol in data:
name = symbol name = symbol
name = ircutils.bold(name) name = ircutils.bold(name)

View File

@ -36,6 +36,7 @@ import supybot.ircmsgs as ircmsgs
import supybot.callbacks as callbacks import supybot.callbacks as callbacks
import supybot.log as log import supybot.log as log
import requests import requests
import json
from fake_useragent import UserAgent from fake_useragent import UserAgent
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse, quote_plus from urllib.parse import urljoin, urlparse, quote_plus
@ -87,7 +88,7 @@ class IMDb(callbacks.Plugin):
try: try:
request = requests.get(omdb_url, timeout=10) request = requests.get(omdb_url, timeout=10)
if request.status_code == requests.codes.ok: if request.status_code == requests.codes.ok:
response = request.json() response = json.loads(request.content)
not_found = "Error" in response not_found = "Error" in response
unknown_error = response["Response"] != "True" unknown_error = response["Response"] != "True"
if not_found or unknown_error: if not_found or unknown_error:

View File

@ -39,6 +39,7 @@ import os
import random import random
import re import re
import requests import requests
import json
import string import string
import supybot.callbacks as callbacks import supybot.callbacks as callbacks
import supybot.conf as conf import supybot.conf as conf
@ -163,9 +164,11 @@ class Jeopardy(callbacks.Plugin):
break break
try: try:
if self.jserviceUrl == 'http://jservice.io': if self.jserviceUrl == 'http://jservice.io':
data = requests.get("{0}/api/random".format(self.jserviceUrl), timeout=5).json() data = requests.get("{0}/api/random".format(self.jserviceUrl), timeout=5)
data = json.loads(data.content)
else: else:
data = requests.get("{0}/api/random?count={1}".format(self.jserviceUrl, self.num + 5), timeout=5).json() data = requests.get("{0}/api/random?count={1}".format(self.jserviceUrl, self.num + 5), timeout=5)
data = json.loads(data.content)
for item in data: for item in data:
if n == self.num: if n == self.num:
break break
@ -207,20 +210,21 @@ class Jeopardy(callbacks.Plugin):
break break
try: try:
category = int(category) category = int(category)
data = requests.get("{0}/api/clues?category={1}".format(self.jserviceUrl, category)).json() data = requests.get("{0}/api/clues?category={1}".format(self.jserviceUrl, category))
data = json.loads(data.content)
cluecount = data[0]['category']['clues_count'] cluecount = data[0]['category']['clues_count']
if cluecount < self.num and len(self.categories) == 1: if cluecount < self.num and len(self.categories) == 1:
self.num = cluecount self.num = cluecount
if cluecount > 100: if cluecount > 100:
data.extend(requests.get("{0}/api/clues?&category={1}&offset=100".format(self.jserviceUrl, category), timeout=5).json()) data.extend(json.loads(requests.get("{0}/api/clues?&category={1}&offset=100".format(self.jserviceUrl, category), timeout=5).content))
if cluecount > 200: if cluecount > 200:
data.extend(requests.get("{0}/api/clues?&category={1}&offset=200".format(self.jserviceUrl, category), timeout=5).json()) data.extend(json.loads(requests.get("{0}/api/clues?&category={1}&offset=200".format(self.jserviceUrl, category), timeout=5).content))
if cluecount > 300: if cluecount > 300:
data.extend(requests.get("{0}/api/clues?&category={1}&offset=300".format(self.jserviceUrl, category), timeout=5).json()) data.extend(json.loads(requests.get("{0}/api/clues?&category={1}&offset=300".format(self.jserviceUrl, category), timeout=5).content))
if cluecount > 400: if cluecount > 400:
data.extend(requests.get("(0}/api/clues?&category={1}&offset=400".format(self.jserviceUrl, category), timeout=5).json()) data.extend(json.loads(requests.get("(0}/api/clues?&category={1}&offset=400".format(self.jserviceUrl, category), timeout=5).content))
if cluecount > 500: if cluecount > 500:
data.extend(requests.get("{0}/api/clues?&category={1}&offset=500".format(self.jserviceUrl, category), timeout=5).json()) data.extend(json.loads(requests.get("{0}/api/clues?&category={1}&offset=500".format(self.jserviceUrl, category), timeout=5).content))
j = 0 j = 0
for item in data: for item in data:
if n == self.num or k > len(self.categories): if n == self.num or k > len(self.categories):
@ -601,7 +605,8 @@ class Jeopardy(callbacks.Plugin):
seed = random.randint(0,184) * 100 seed = random.randint(0,184) * 100
else: else:
seed = random.randint(0,250) * 100 seed = random.randint(0,250) * 100
data = requests.get("{0}/api/categories?count=100&offset={1}".format(self.jserviceUrl, int(seed)), timeout=5).json() data = requests.get("{0}/api/categories?count=100&offset={1}".format(self.jserviceUrl, int(seed)), timeout=5)
data = json.loads(data.content)
random.shuffle(data) random.shuffle(data)
results = [] results = []
for item in data: for item in data:

View File

@ -29,7 +29,8 @@
### ###
import pendulum import pendulum
import requests, json import requests
import json
from roman_numerals import convert_to_numeral from roman_numerals import convert_to_numeral
from supybot import utils, plugins, ircutils, callbacks from supybot import utils, plugins, ircutils, callbacks
@ -97,17 +98,18 @@ class NFL(callbacks.Plugin):
url = BASE_URL.format(f"/schedules/{int(date['year'])-1}") url = BASE_URL.format(f"/schedules/{int(date['year'])-1}")
else: else:
url = BASE_URL.format(f"/schedules/{date['year']}") url = BASE_URL.format(f"/schedules/{date['year']}")
data = requests.get(url).json() data = requests.get(url)
data = json.loads(data.content)
if not week: if not week:
url = BASE_URL.format('/currentWeek') url = BASE_URL.format('/currentWeek')
week = requests.get(url).json()['week'] week = json.loads(requests.get(url).content)['week']
if not season: if not season:
url = BASE_URL.format('/currentWeek') url = BASE_URL.format('/currentWeek')
season = requests.get(url).json()['seasonId'] season = json.loads(requests.get(url).content)['seasonId']
if not seasonType: if not seasonType:
url = BASE_URL.format('/currentWeek') url = BASE_URL.format('/currentWeek')
tmp = requests.get(url).json()['seasonType'] tmp = json.loads(requests.get(url).content)['seasonType']
if tmp == "PRO": if tmp == "PRO":
if not options.get('pro'): if not options.get('pro'):
tmp = "POST" tmp = "POST"
@ -147,7 +149,7 @@ class NFL(callbacks.Plugin):
season, seasonType.upper(), week season, seasonType.upper(), week
)) ))
try: try:
scores = requests.get(url).json()['gameScores'] scores = json.loads(requests.get(url).content)['gameScores']
except json.decoder.JSONDecodeError: except json.decoder.JSONDecodeError:
irc.error('invalid input', Raise=True) irc.error('invalid input', Raise=True)
except Exception as e: except Exception as e:
@ -296,7 +298,7 @@ class NFL(callbacks.Plugin):
gameId = info['gameId'] gameId = info['gameId']
url = BASE_URL.format('/playbyplay/{}/latest'.format(gameId)) url = BASE_URL.format('/playbyplay/{}/latest'.format(gameId))
try: try:
last_play = requests.get(url).json() last_play = json.loads(requests.get(url).content)
last_play = last_play['plays'][-1]['playDescription'] last_play = last_play['plays'][-1]['playDescription']
except: except:
pass pass
@ -342,7 +344,7 @@ class NFL(callbacks.Plugin):
return return
endpoint = '/playerGameStats/{}'.format(player_id) endpoint = '/playerGameStats/{}'.format(player_id)
data = requests.get(BASE_URL.format(endpoint)).json() data = json.loads(requests.get(BASE_URL.format(endpoint)).content)
game_stats = data['playerGameStats'] game_stats = data['playerGameStats']
player_info = data['teamPlayer'] player_info = data['teamPlayer']

View File

@ -154,7 +154,8 @@ class NHL(callbacks.Plugin):
url = 'https://statsapi.web.nhl.com/api/v1/teams' url = 'https://statsapi.web.nhl.com/api/v1/teams'
try: try:
data = requests.get(url).json() data = requests.get(url)
data = json.loads(data.content)
data = data['teams'] data = data['teams']
except: except:
return None return None
@ -316,7 +317,7 @@ class NHL(callbacks.Plugin):
return self._cachedData() return self._cachedData()
def _extractJSON(self, body): def _extractJSON(self, body):
return json.loads(body.decode()) return json.loads(body)
def _parseGames(self, json, team, tz='US/Eastern'): def _parseGames(self, json, team, tz='US/Eastern'):
"""Extract all relevant fields from NHL.com's json """Extract all relevant fields from NHL.com's json

View File

@ -30,7 +30,7 @@
import requests import requests
import pendulum import pendulum
import json
from supybot import utils, plugins, ircutils, callbacks from supybot import utils, plugins, ircutils, callbacks
from supybot.commands import * from supybot.commands import *
try: try:
@ -98,9 +98,11 @@ class Odds(callbacks.Plugin):
'origin': 'https://www.oddsshark.com/', 'origin': 'https://www.oddsshark.com/',
'referer': 'https://www.oddsshark.com/nhl/odds', 'referer': 'https://www.oddsshark.com/nhl/odds',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'} 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
data.append(requests.get('https://io.oddsshark.com/ticker/nhl', headers=headers).json()) request = requests.get('https://io.oddsshark.com/ticker/nhl', headers=headers)
request = json.loads(request.content)
data.append(request)
elif league == 4: elif league == 4:
#print('one') #print('one')
headers = {'accept': 'application/json, text/plain, */*', headers = {'accept': 'application/json, text/plain, */*',
@ -109,14 +111,18 @@ class Odds(callbacks.Plugin):
'origin': 'https://www.oddsshark.com/', 'origin': 'https://www.oddsshark.com/',
'referer': 'https://www.oddsshark.com/nba/odds', 'referer': 'https://www.oddsshark.com/nba/odds',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'} 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
data.append(requests.get('https://io.oddsshark.com/ticker/nba', headers=headers).json()) request = requests.get('https://io.oddsshark.com/ticker/nba', headers=headers)
request = json.loads(request.content)
data.append(request)
else: else:
#print('two') #print('two')
url = base_url.format(league=league, date=today) url = base_url.format(league=league, date=today)
print(url)
data.append(requests.get(url).json()) request = requests.get(headers, timeout=10, headers=headers)
request = json.loads(request.content)
data.append(request)
if league == 2 or league == 1 or league == 3: if league == 2 or league == 1 or league == 3:
if league == 2 or league == 1: if league == 2 or league == 1:
dates = [tdate.add(days=1).format('YYYY-MM-DD'), tdate.add(days=2).format('YYYY-MM-DD'), dates = [tdate.add(days=1).format('YYYY-MM-DD'), tdate.add(days=2).format('YYYY-MM-DD'),
@ -130,8 +136,9 @@ class Odds(callbacks.Plugin):
for nflday in dates: for nflday in dates:
url = base_url.format(league=league, date=nflday) url = base_url.format(league=league, date=nflday)
#print(url) #print(url)
#tdata = requests.get(url).json() request = requests.get(url)
data[idx]['events'].extend(requests.get(url).json()['events']) request = json.loads(request.content)
data[idx]['events'].extend(request['events'])
#print(data) #print(data)
# #
#try: #try:

View File

@ -30,7 +30,7 @@
import pendulum import pendulum
import requests import requests
import json
from supybot import utils, plugins, ircutils, callbacks from supybot import utils, plugins, ircutils, callbacks
from supybot.commands import * from supybot.commands import *
try: try:
@ -51,7 +51,8 @@ class PGA(callbacks.Plugin):
def _fetchCurrent(self, type_='r'): def _fetchCurrent(self, type_='r'):
tmp = None tmp = None
try: try:
jdata = requests.get(CURRENT_URL.format(trn_type=type_)).json() jdata = requests.get(CURRENT_URL.format(trn_type=type_))
jdata = json.loads(jdata.content)
tmp = jdata['tid'] tmp = jdata['tid']
return [type_, tmp] return [type_, tmp]
except: except:
@ -79,17 +80,18 @@ class PGA(callbacks.Plugin):
url = 'https://www.pgatour.com/bin/data/feeds/weather.json/{}{}'.format( url = 'https://www.pgatour.com/bin/data/feeds/weather.json/{}{}'.format(
trn[0], trn[1]) trn[0], trn[1])
print(url) print(url)
idata = requests.get(url).json() idata = requests.get(url, timeout=10)
idata = json.loads(idata.content)
url2 = 'https://statdata.pgatour.com/r/current/schedule-v2.json' #.format(trn[0]) url2 = 'https://statdata.pgatour.com/r/current/schedule-v2.json' #.format(trn[0])
#print(url2) #print(url2)
sdata = requests.get(url2).json() sdata = requests.get(url2, timeout=10)
sdata = json.loads(sdata.content)
#print(sdata) #print(sdata)
# now get the leaderboard json # now get the leaderboard json
try: try:
jdata = requests.get(SCOREBOARD.format(trn_type=trn[0], trn_id=trn[1])) jdata = requests.get(SCOREBOARD.format(trn_type=trn[0], trn_id=trn[1]), timeout=10)
print(jdata.url) jdata = json.loads(jdata.content)
jdata = jdata.json()
except: except:
irc.reply('Something went wrong fetching the leaderboard') irc.reply('Something went wrong fetching the leaderboard')
return return

View File

@ -42,7 +42,7 @@ except ImportError:
import requests import requests
import pendulum import pendulum
import pickle import pickle
import json
class Soccer(callbacks.Plugin): class Soccer(callbacks.Plugin):
"""Fetches soccer scores and other information""" """Fetches soccer scores and other information"""
@ -195,8 +195,7 @@ class Soccer(callbacks.Plugin):
data.url)) data.url))
return return
print(data.url) data = json.loads(data.content)
data = data.json()
if 'leagues' not in data: if 'leagues' not in data:
irc.reply('ERROR: {} not found in valid leagues: {}'.format( irc.reply('ERROR: {} not found in valid leagues: {}'.format(

View File

@ -41,6 +41,7 @@ from urllib.parse import urlencode, urlparse, parse_qsl
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import random import random
import time import time
import json
from jinja2 import Template from jinja2 import Template
import timeout_decorator import timeout_decorator
import unicodedata import unicodedata
@ -167,7 +168,7 @@ class SpiffyTitles(callbacks.Plugin):
ok = request.status_code == requests.codes.ok ok = request.status_code == requests.codes.ok
if ok: if ok:
response = request.json() response = json.loads(request.content)
if response is not None and "title" in response: if response is not None and "title" in response:
video = response video = response
@ -222,7 +223,7 @@ class SpiffyTitles(callbacks.Plugin):
ok = request.status_code == requests.codes.ok ok = request.status_code == requests.codes.ok
if ok: if ok:
response = request.json() response = json.loads(request.content)
if response is not None and "title" in response[0]: if response is not None and "title" in response[0]:
video = response[0] video = response[0]
@ -288,7 +289,7 @@ class SpiffyTitles(callbacks.Plugin):
ok = request.status_code == requests.codes.ok ok = request.status_code == requests.codes.ok
if ok: if ok:
response = request.json() response = json.loads(request.content)
if response: if response:
video = response video = response
@ -673,7 +674,7 @@ class SpiffyTitles(callbacks.Plugin):
ok = request.status_code == requests.codes.ok ok = request.status_code == requests.codes.ok
if ok: if ok:
response = request.json() response = json.loads(request.content)
if response: if response:
try: try:
@ -895,7 +896,7 @@ class SpiffyTitles(callbacks.Plugin):
data = {} data = {}
extract = "" extract = ""
if ok: if ok:
response = request.json() response = json.loads(request.content)
if response: if response:
self.log.debug("SpiffyTitles: twitch - got response:\n%s" % (response)) self.log.debug("SpiffyTitles: twitch - got response:\n%s" % (response))
if 'error' in response: if 'error' in response:
@ -917,7 +918,7 @@ class SpiffyTitles(callbacks.Plugin):
self.log.error("SpiffyTitles: twitch HTTP %s: %s" % self.log.error("SpiffyTitles: twitch HTTP %s: %s" %
(request.status_code, request.content.decode()[:200])) (request.status_code, request.content.decode()[:200]))
else: else:
response = requests.json() response = json.loads(request.content)
if not response: if not response:
self.log.error("SpiffyTitles: Error parsing Twitch JSON response") self.log.error("SpiffyTitles: Error parsing Twitch JSON response")
else: else:
@ -953,7 +954,7 @@ class SpiffyTitles(callbacks.Plugin):
created_at = self._time_created_at(data['started_at']) created_at = self._time_created_at(data['started_at'])
if game_id: if game_id:
get_game = requests.get("https://api.twitch.tv/helix/games?id={}".format(game_id), timeout=10, headers=headers) get_game = requests.get("https://api.twitch.tv/helix/games?id={}".format(game_id), timeout=10, headers=headers)
game_data = get_game.json() game_data = json.loads(get_game.content)
game_name = game_data["data"][0]["name"] game_name = game_data["data"][0]["name"]
template_vars = { template_vars = {
"display_name": display_name, "display_name": display_name,
@ -976,7 +977,7 @@ class SpiffyTitles(callbacks.Plugin):
self.log.error("SpiffyTitles: twitch HTTP %s: %s" % self.log.error("SpiffyTitles: twitch HTTP %s: %s" %
(request.status_code, request.content.decode()[:200])) (request.status_code, request.content.decode()[:200]))
else: else:
response = request.json() response = json.loads(request.content)
if not response: if not response:
self.log.error("SpiffyTitles: Error parsing Twitch JSON response") self.log.error("SpiffyTitles: Error parsing Twitch JSON response")
else: else:
@ -995,7 +996,7 @@ class SpiffyTitles(callbacks.Plugin):
created_at = self._time_created_at(data['created_at']) created_at = self._time_created_at(data['created_at'])
if game_id: if game_id:
get_game = requests.get("https://api.twitch.tv/helix/games?id={}".format(game_id), timeout=10, headers=headers) get_game = requests.get("https://api.twitch.tv/helix/games?id={}".format(game_id), timeout=10, headers=headers)
game_data = get_game.json() game_data = json.loads(get_game.content)
game_name = game_data["data"][0]["name"] game_name = game_data["data"][0]["name"]
template_vars = { template_vars = {
"display_name": display_name, "display_name": display_name,
@ -1018,7 +1019,7 @@ class SpiffyTitles(callbacks.Plugin):
self.log.error("SpiffyTitles: twitch HTTP %s: %s" % self.log.error("SpiffyTitles: twitch HTTP %s: %s" %
(request.status_code, request.content.decode()[:200])) (request.status_code, request.content.decode()[:200]))
else: else:
response = request.json() response = json.loads(request.content)
if not response: if not response:
self.log.error("SpiffyTitles: Error parsing Twitch JSON response") self.log.error("SpiffyTitles: Error parsing Twitch JSON response")
else: else:
@ -1105,7 +1106,7 @@ class SpiffyTitles(callbacks.Plugin):
request = requests.get(omdb_url, timeout=10, headers=headers) request = requests.get(omdb_url, timeout=10, headers=headers)
if request.status_code == requests.codes.ok: if request.status_code == requests.codes.ok:
response = request.json() response = json.loads(request.content)
result = None result = None
imdb_template = Template(self.registryValue("imdb.template")) imdb_template = Template(self.registryValue("imdb.template"))
not_found = "Error" in response not_found = "Error" in response
@ -1224,7 +1225,7 @@ class SpiffyTitles(callbacks.Plugin):
ok = request.status_code == requests.codes.ok ok = request.status_code == requests.codes.ok
if ok: if ok:
response = request.json() response = json.loads(request.content)
if response: if response:
try: try:
@ -1304,7 +1305,7 @@ class SpiffyTitles(callbacks.Plugin):
extract = '' extract = ''
if ok: if ok:
response = request.json() response = json.loads(request.content)
if response: if response:
try: try:

View File

@ -31,7 +31,7 @@
import requests import requests
import pendulum import pendulum
import urllib.parse import urllib.parse
import json
from . import accountsdb from . import accountsdb
from supybot import utils, plugins, ircutils, callbacks, world from supybot import utils, plugins, ircutils, callbacks, world
@ -87,7 +87,8 @@ class TVMaze(callbacks.Plugin):
query = urllib.parse.quote_plus(query) query = urllib.parse.quote_plus(query)
base_url += '/search/shows?q={}'.format(query) base_url += '/search/shows?q={}'.format(query)
try: try:
data = requests.get(base_url).json() data = requests.get(base_url)
data = json.loads(data.content)
except: except:
data = None data = None
elif mode == 'schedule': elif mode == 'schedule':
@ -95,7 +96,8 @@ class TVMaze(callbacks.Plugin):
date = pendulum.now().format('YYYY-MM-DD') date = pendulum.now().format('YYYY-MM-DD')
base_url += '/schedule?country={}&date={}'.format(country, date) base_url += '/schedule?country={}&date={}'.format(country, date)
try: try:
data = requests.get(base_url).json() data = requests.get(base_url)
data = json.loads(data.content)
except: except:
data = None data = None
elif mode == 'shows': elif mode == 'shows':
@ -103,7 +105,8 @@ class TVMaze(callbacks.Plugin):
return return
base_url += '/shows/{}?embed[]=previousepisode&embed[]=nextepisode'.format(id_) base_url += '/shows/{}?embed[]=previousepisode&embed[]=nextepisode'.format(id_)
try: try:
data = requests.get(base_url).json() data = requests.get(base_url)
data = json.loads(data.content)
except: except:
data = None data = None
else: else:

View File

@ -47,6 +47,7 @@ import time
import random as random import random as random
import pyimgur import pyimgur
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import json
try: try:
from supybot.i18n import PluginInternationalization from supybot.i18n import PluginInternationalization
@ -412,7 +413,7 @@ class TextArt(callbacks.Plugin):
payload = {'description':description,'sections':[{'contents':paste}]} payload = {'description':description,'sections':[{'contents':paste}]}
headers = {'X-Auth-Token':apikey} headers = {'X-Auth-Token':apikey}
post_response = requests.post(url='https://api.paste.ee/v1/pastes', json=payload, headers=headers) post_response = requests.post(url='https://api.paste.ee/v1/pastes', json=payload, headers=headers)
response = post_response.json() response = json.loads(post_response.content)
return response['link'].replace('/p/', '/r/') return response['link'].replace('/p/', '/r/')
except: except:
return "Error. Did you set a valid Paste.ee API Key? https://paste.ee/account/api" return "Error. Did you set a valid Paste.ee API Key? https://paste.ee/account/api"

View File

@ -51,8 +51,9 @@ class WebParser():
def getWebData(self, irc, url): def getWebData(self, irc, url):
headers = {'User-Agent' : 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.27 Safari/537.17'} headers = {'User-Agent' : 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.27 Safari/537.17'}
try: try:
content = requests.get(url, headers=headers) content = requests.get(url, headers=headers, timeout=10)
return content.json() content = json.loads(content.content)
return content
except: except:
irc.reply("Error: Couldn't connect to "+url) irc.reply("Error: Couldn't connect to "+url)
return return

View File

@ -139,13 +139,14 @@ class Tweety(callbacks.Plugin):
def _shortenUrl(self, url): def _shortenUrl(self, url):
"""Shortens a long URL into a short one.""" """Shortens a long URL into a short one."""
api_key = self.registryValue('bitlyKey') api_key = self.registryValue('bitlyKey')
url_enc = urllib.parse.quote_plus(url) url_enc = urllib.parse.quote_plus(url)
api_url = 'https://api-ssl.bitly.com/v3/shorten?access_token={}&longUrl={}&format=json' api_url = 'https://api-ssl.bitly.com/v3/shorten?access_token={}&longUrl={}&format=json'
try: try:
data = requests.get(api_url.format(api_key, url_enc)).json() data = requests.get(api_url.format(api_key, url_enc), timeout=10)
data = json.loads(data.content)
url2 = data['data'].get('url') url2 = data['data'].get('url')
if url2.strip(): if url2.strip():
return url2.strip() return url2.strip()
@ -177,7 +178,7 @@ class Tweety(callbacks.Plugin):
data = twitterApi.ApiCall('account/verify_credentials') data = twitterApi.ApiCall('account/verify_credentials')
# check the response. if we can load json, it means we're authenticated. else, return response. # check the response. if we can load json, it means we're authenticated. else, return response.
try: # if we pass, response is validated. set self.twitterApi w/object. try: # if we pass, response is validated. set self.twitterApi w/object.
json.loads(data.read().decode()) json.loads(data.read())
self.log.info("I have successfully authorized and logged in to Twitter using your credentials.") self.log.info("I have successfully authorized and logged in to Twitter using your credentials.")
self.twitterApi = OAuthApi(self.registryValue('consumerKey'), self.registryValue('consumerSecret'), self.registryValue('accessKey'), self.registryValue('accessSecret')) self.twitterApi = OAuthApi(self.registryValue('consumerKey'), self.registryValue('consumerSecret'), self.registryValue('accessKey'), self.registryValue('accessSecret'))
except: # response failed. Return what we got back. except: # response failed. Return what we got back.
@ -303,7 +304,8 @@ class Tweety(callbacks.Plugin):
api_url = 'https://api-ssl.bitly.com/v3/shorten?access_token={}&longUrl={}&format=json' api_url = 'https://api-ssl.bitly.com/v3/shorten?access_token={}&longUrl={}&format=json'
try: try:
data = requests.get(api_url.format(api_key, longurl)).json() data = requests.get(api_url.format(api_key, longurl), timeout=10)
data = json.loads(data.content)
url2 = data['data'].get('url') url2 = data['data'].get('url')
if url2.strip(): if url2.strip():
return url2.strip() return url2.strip()
@ -354,7 +356,7 @@ class Tweety(callbacks.Plugin):
# make API call. # make API call.
data = self.twitterApi.ApiCall('application/rate_limit_status', parameters={'resources':'trends,search,statuses,users'}) data = self.twitterApi.ApiCall('application/rate_limit_status', parameters={'resources':'trends,search,statuses,users'})
try: try:
data = json.loads(data.read().decode()) data = json.loads(data.read())
except: except:
irc.reply("ERROR: Failed to lookup ratelimit data: {0}".format(data)) irc.reply("ERROR: Failed to lookup ratelimit data: {0}".format(data))
return return
@ -423,7 +425,7 @@ class Tweety(callbacks.Plugin):
# now build our API call # now build our API call
data = self.twitterApi.ApiCall('trends/place', parameters=args) data = self.twitterApi.ApiCall('trends/place', parameters=args)
try: try:
data = json.loads(data.read().decode()) data = json.loads(data.read())
except: except:
irc.reply("ERROR: failed to lookup trends on Twitter: {0}".format(data)) irc.reply("ERROR: failed to lookup trends on Twitter: {0}".format(data))
return return
@ -487,7 +489,7 @@ class Tweety(callbacks.Plugin):
# now build our API call. # now build our API call.
data = self.twitterApi.ApiCall('search/tweets', parameters=tsearchArgs) data = self.twitterApi.ApiCall('search/tweets', parameters=tsearchArgs)
try: try:
data = json.loads(data.read().decode()) data = json.loads(data.read())
except: except:
irc.reply("ERROR: Something went wrong trying to search Twitter. ({0})".format(data)) irc.reply("ERROR: Something went wrong trying to search Twitter. ({0})".format(data))
return return
@ -612,7 +614,7 @@ class Tweety(callbacks.Plugin):
# call the Twitter API with our data. # call the Twitter API with our data.
data = self.twitterApi.ApiCall(apiUrl, parameters=twitterArgs) data = self.twitterApi.ApiCall(apiUrl, parameters=twitterArgs)
try: try:
data = json.loads(data.read().decode()) data = json.loads(data.read())
except: except:
irc.reply("ERROR: Failed to lookup Twitter for '{0}' ({1}) ".format(optnick, data)) irc.reply("ERROR: Failed to lookup Twitter for '{0}' ({1}) ".format(optnick, data))
return return

View File

@ -62,7 +62,8 @@ class Weed(callbacks.Plugin):
url = "http://strainapi.evanbusse.com/{0}/strains/search/name/{1}".format(strain_api, strain) url = "http://strainapi.evanbusse.com/{0}/strains/search/name/{1}".format(strain_api, strain)
data = requests.get(url).json() data = requests.get(url)
data = json.loads(data.content)
for item in data: for item in data:
if item['desc'] is not None and item['name'].casefold() == strain: if item['desc'] is not None and item['name'].casefold() == strain:
@ -71,7 +72,8 @@ class Weed(callbacks.Plugin):
type = ircutils.bold(item['race']) type = ircutils.bold(item['race'])
desc = item['desc'] desc = item['desc']
url2 = "http://strainapi.evanbusse.com/{0}/strains/data/flavors/{1}".format(strain_api, id) url2 = "http://strainapi.evanbusse.com/{0}/strains/data/flavors/{1}".format(strain_api, id)
data2 = requests.get(url2).json() data2 = requests.get(url2)
data2 = json.loads(data2.content)
flavor1 = data2[0] flavor1 = data2[0]
flavor2 = data2[1] flavor2 = data2[1]
flavor3 = data2[2] flavor3 = data2[2]
@ -84,7 +86,8 @@ class Weed(callbacks.Plugin):
type = ircutils.bold(item['race']) type = ircutils.bold(item['race'])
desc = item['desc'] desc = item['desc']
url2 = "http://strainapi.evanbusse.com/{0}/strains/data/flavors/{1}".format(strain_api, id) url2 = "http://strainapi.evanbusse.com/{0}/strains/data/flavors/{1}".format(strain_api, id)
data2 = requests.get(url2).json() data2 = requests.get(url2)
data2 = json.loads(data2.content)
flavor1 = data2[0] flavor1 = data2[0]
flavor2 = data2[1] flavor2 = data2[1]
flavor3 = data2[2] flavor3 = data2[2]

View File

@ -37,6 +37,7 @@ import supybot.callbacks as callbacks
import supybot.log as log import supybot.log as log
import requests import requests
import pendulum import pendulum
import json
from jinja2 import Template from jinja2 import Template
from urllib.parse import urlencode from urllib.parse import urlencode
@ -68,8 +69,7 @@ class YouTube(callbacks.Plugin):
try: try:
log.debug("YouTube: requesting %s" % (api_url)) log.debug("YouTube: requesting %s" % (api_url))
request = requests.get(api_url, timeout=10) request = requests.get(api_url, timeout=10)
request.raise_for_status() request = json.loads(request.content)
request = request.json()
video_id = request["items"][0]["id"]["videoId"] video_id = request["items"][0]["id"]["videoId"]
except Exception: except Exception:
log.error("YouTube: YouTube API HTTP %s: %s" % (request.status_code, request.content.decode())) log.error("YouTube: YouTube API HTTP %s: %s" % (request.status_code, request.content.decode()))
@ -131,7 +131,7 @@ class YouTube(callbacks.Plugin):
request = requests.get(api_url, timeout=10) request = requests.get(api_url, timeout=10)
ok = request.status_code == requests.codes.ok ok = request.status_code == requests.codes.ok
if ok: if ok:
response = request.json() response = json.loads(request.content)
if response: if response:
try: try:
if response["pageInfo"]["totalResults"] > 0: if response["pageInfo"]["totalResults"] > 0: