Skip to content

Instantly share code, notes, and snippets.

@kelciour
Last active August 13, 2019 00:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kelciour/41f659a94d045708ace4a847620866c3 to your computer and use it in GitHub Desktop.
Save kelciour/41f659a94d045708ace4a847620866c3 to your computer and use it in GitHub Desktop.
Fast Word Query Pictures
#-*- coding:utf-8 -*-
import os
import json
from ..base import *
@register([u'Adobe-Images', u'Adobe-Images'])
class Adobe_Images(WebService):
adobe_download_img = True
def __init__(self):
super(Adobe_Images, self).__init__()
def _get_from_api(self):
url = u"https://stock.adobe.com/Ajax/Search?filters%5Bcontent_type%3Aphoto%5D=1&filters%5Bcontent_type%3Aillustration%5D=1&filters%5Bcontent_type%3Azip_vector%5D=1&filters%5Bcontent_type%3Avideo%5D=0&filters%5Bcontent_type%3Atemplate%5D=0&filters%5Bcontent_type%3A3d%5D=0&filters%5Bcontent_type%3Aimage%5D=1&k={}&order=relevance&safe_search=1&limit=20".format(self.quote_word)
html = self.get_response(url, timeout=10)
result = {
'img': '',
'images': []
}
data = json.loads(html)
try:
items = data["items"]
for key in items:
if items[key]["order_key"] == 0:
result['img'] = items[key]["thumbnail_url"]
result['images'].append(items[key]["thumbnail_url"])
except:
pass
return self.cache_this(result)
@export([u'图片', u'Image'])
def fld_img(self):
url = self._get_field('img')
if url and self.adobe_download_img:
filename = get_hex_name(self.unique.lower(), url, 'jpg')
if os.path.exists(filename) or self.download(url, filename):
return self.get_anki_label(filename, 'img')
return ''
@export([u'Images', u'Images'])
def fld_images(self):
arr = []
urls = self._get_field('images')
for url in urls[:3]:
if url and self.adobe_download_img:
filename = get_hex_name(self.unique.lower(), url, 'jpg')
if os.path.exists(filename) or self.download(url, filename):
arr.append(self.get_anki_label(filename, 'img'))
return ' '.join(arr)
#-*- coding:utf-8 -*-
import os
import re
import json
from ..base import *
@register([u'Getty-Images', u'Getty-Images'])
class Getty_Images(WebService):
getty_download_img = True
def __init__(self):
super(Getty_Images, self).__init__()
def _get_from_api(self):
url = u"https://www.gettyimages.com/search/2/image?alloweduse=availableforalluses&excludenudity=true&family=creative&license=rf&phrase={}&sort=best&page=1".format(self.quote_word)
html = self.get_response(url, timeout=10)
result = {
'img': '',
'images': [],
}
data = html
if isinstance(data, bytes):
data = html.decode('utf-8')
data = re.sub('"', '"', data)
data = data.encode('utf-8').decode('unicode_escape')
images = re.findall(r'"thumbUrl":"(http.*?)"', data)
try:
result['img'] = images[0]
result['images'] = images
except:
pass
return self.cache_this(result)
@export([u'图片', u'Image'])
def fld_img(self):
url = self._get_field('img')
if url and self.getty_download_img:
filename = get_hex_name(self.unique.lower(), url, 'jpg')
if os.path.exists(filename) or self.download(url, filename):
return self.get_anki_label(filename, 'img')
return ''
@export([u'Images', u'Images'])
def fld_images(self):
arr = []
urls = self._get_field('images')
for url in urls[:3]:
if url and self.getty_download_img:
filename = get_hex_name(self.unique.lower(), url, 'jpg')
if os.path.exists(filename) or self.download(url, filename):
arr.append(self.get_anki_label(filename, 'img'))
return ' '.join(arr)
#-*- coding:utf-8 -*-
import os
import json
from ..base import *
@register([u'Google-Images', u'Google-Images'])
class Google_Images(WebService):
google_download_img = True
def __init__(self):
super(Google_Images, self).__init__()
def _get_from_api(self):
url = u"https://www.google.co.in/search?q={}&source=lnms&tbm=isch".format(self.quote_word)
html = self.get_response(url, timeout=10)
result = {
'img': '',
'images': []
}
try:
soup = parse_html(html)
image_elements = soup.find_all("div", {"class": "rg_meta"})
metadata_dicts = (json.loads(e.text) for e in image_elements)
result['images'] = [d["ou"] for d in metadata_dicts]
result['img'] = result['images'][0]
except Exception as e:
showText(str(e))
pass
return self.cache_this(result)
@export([u'图片', u'Image'])
def fld_img(self):
url = self._get_field('img')
if url and self.google_download_img:
filename = get_hex_name(self.unique.lower(), url, 'jpg')
if os.path.exists(filename) or self.download(url, filename):
return self.get_anki_label(filename, 'img')
return ''
@export([u'Images', u'Images'])
def fld_images(self):
arr = []
urls = self._get_field('images')
for url in urls[:3]:
if url and self.google_download_img:
filename = get_hex_name(self.unique.lower(), url, 'jpg')
if os.path.exists(filename) or self.download(url, filename):
arr.append(self.get_anki_label(filename, 'img'))
return ' '.join(arr)
#-*- coding:utf-8 -*-
import os
import json
from ..base import *
@register([u'Quizlet-Images', u'Quizlet-Images'])
class Quizlet_Images(WebService):
quizlet_download_img = True
def __init__(self):
super(Quizlet_Images, self).__init__()
def _get_from_api(self):
url = u"https://quizlet.com/webapi/3.2/images/search?query={}&perPage=10".format(self.quote_word)
html = self.get_response(url, timeout=10)
result = {
'img': '',
'images': [],
}
data = json.loads(html)
try:
result['img'] = data["responses"][0]["models"]["image"][0]["_legacyUrl"]
for img in data["responses"][0]["models"]["image"]:
result['images'].append(img['_legacyUrl'])
except:
pass
return self.cache_this(result)
@export([u'图片', u'Image'])
def fld_img(self):
url = self._get_field('img')
if url and self.quizlet_download_img:
filename = get_hex_name(self.unique.lower(), url, 'jpg')
if os.path.exists(filename) or self.download(url, filename):
return self.get_anki_label(filename, 'img')
return ''
@export([u'Images', u'Images'])
def fld_images(self):
arr = []
urls = self._get_field('images')
for url in urls[:3]:
if url and self.quizlet_download_img:
filename = get_hex_name(self.unique.lower(), url, 'jpg')
if os.path.exists(filename) or self.download(url, filename):
arr.append(self.get_anki_label(filename, 'img'))
return ' '.join(arr)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment