Exemplo n.º 1
0
def getimgur(number):
    """Get list of imgur image-links"""
    images = []

    # ensure api keys are set
    API_KEY, API_SECRET = apiKeys()

    if not API_KEY:
        warnings.warn("API_KEY not set")
    if not API_SECRET:
        warnings.warn("API_SECRET not set")
        return images

    client = ImgurClient(API_KEY, API_SECRET)
    get_images = client.memes_subgallery(sort='viral', page=0, window='week')

    for image in get_images:
        if responseOk(image.link) == True:
            if image.link is not None:
                if len(images) < number:
                    images.append(image.link)
                else:
                    return images
        else:
            for e in imgurScrape(image.link):
                if e is not None:
                    if len(images) < number:
                        images.append(e)
                    else:
                        return images
    return images
Exemplo n.º 2
0
Arquivo: fun.py Projeto: kyanha/Helix3
 async def meme(self):
     """Sends a meme"""
     client = ImgurClient(clientid, clientsecret)
     items = client.memes_subgallery()
     item = random.choice(items)
     await self.bot.say(item.title)
     await self.bot.say(item.link)
Exemplo n.º 3
0
#! /usr/bin/env python

from imgurpython import ImgurClient

client_id = '0f354899f3c1841'

client_secret = '771df959e3b381b5035854dbad02f226abb81ba1'

client = ImgurClient(client_id, client_secret)

# Example request

items = client.memes_subgallery(sort='viral', page=0)

for item in items:

    print(item.link)
            ret[i]['original link'] = item.link
            i = i + 1
    return ret


if __name__ == '__main__':
    memes = top_10('week')
    for m in memes:
        print(m['id'],
              "(",
              len(m['images']),
              "images )",
              m['images'][0],
              sep=" ")

if __name__ == '__test_old__':
    timeframe = 'all'
    search = 'e'

    # Request for viral memes from past timeframe
    items = client.memes_subgallery(sort='viral', page=0, window=timeframe)

    for item in items:
        if search in item.title:
            print(item.title)
            print(type(item.title))
            print(dir(item))
            print(item.link)
            print(item.section)
            print  # Newline
Exemplo n.º 5
0
class ImgurScraper(object):

	#==========[ Parameters ]==========
	client_id = '8e6c102fd0cb416'
	client_secret = 'a2ab9f76a1b6706b00200fa74270a281c32248bb'
	base_data_dir = os.path.join(os.path.split(os.path.abspath(__file__))[0], 'data/imgur/')
	block_size = 500
	print_size = 60

	def __init__(self):

		#=====[ Step 1: get data_dir	]=====
		self.data_dir = os.path.join(self.base_data_dir, str(datetime.datetime.now().date()))
		if not os.path.exists(self.data_dir):
			os.mkdir(self.data_dir)

		#=====[ Step 2: get client	]=====
		self.client = ImgurClient(self.client_id, self.client_secret)
		self.num_scraped  = 0


	################################################################################
	####################[ DATA STORAGE ]############################################
	################################################################################

	def get_dump_filepath(self, memes):
		"""returns filename for scraped memes"""
		filename = '%s-%s.pkl' % (self.num_scraped - len(memes), self.num_scraped)
		filepath = os.path.join(self.data_dir, filename)
		return filepath

	def dump_memes(self, memes, verbose=True):
		"""saves array of memes to disk"""
		path = self.get_dump_filepath(memes)
		print '-----> Saving %d memes to %s...' % (len(memes), path)
		pickle.dump(memes, open(path, 'w'))
		print '\tSuccess.'

	################################################################################
	####################[ GRABBING MEMES ]##########################################
	################################################################################

	def make_image_url(self, image_id):
		return 'http://imgur.com/t/meme/%s' % image_id

	def get_image_page(self, image_id):
		return requests.get(self.make_image_url(image_id))

	def extract_description(self, image_id):
		page = self.get_image_page(image_id)
		tree = html.fromstring(page.text)
		description = tree.xpath('//meta[@name="description"]')[0]
		return description.get('content')

	def image_to_meme(self, image):
		"""GalleryImage -> Meme"""
		content = self.extract_description(image.id)
		return Meme(id=image.id, views=image.views, score=image.score, content=content)

	def get_gallery_page(self, page, verbose=True):
		"""returns list of GalleryImages"""
		# return self.client.memes_subgallery(sort='top', page=page, window="day")
		return self.client.memes_subgallery(sort='time', page=page)		

	def scrape_memes(self, page_ix=0):
		memes = []
		num_failed = 0
		self.num_scraped = 60*page_ix
		while (True):
			
			#=====[ Step 1: get images	]=====
			try:
				images = self.get_gallery_page(page_ix)
			except:
				print '>>gallery failed; continuing<<'
				num_failed += 1
				if num_failed >= 10:
					break
				else:
					continue

			#=====[ Step 2: get memes	]=====
			for image in images:
				try:
					memes.append(self.image_to_meme(image))
					self.num_scraped += 1
					print '.',
				except:
					e = sys.exc_info()[0]
					print 'x',
				time.sleep(0.3)

				#=====[ Step 3: print if appropriate	]=====
				if self.num_scraped % self.print_size == 0:
					print '\nscraped %d' % self.num_scraped

				#=====[ Step 4: dump if appropriate	]=====
				if (self.num_scraped % self.block_size) == 0:
					self.dump_memes(memes)
					memes = []


			page_ix += 1

			if self.num_scraped >= 2000:
				print '\n>>>FINISHED<<<'
				break
			self.dump_memes(memes)
Exemplo n.º 6
0

if __name__ == "__main__":
    try:
        with open(page_path, "rb") as f:
            page_start = pickle.load(f)
            print("Starting at page {}.".format(page_start))
    except FileNotFoundError:
        with open(page_path, "wb") as f:
            pickle.dump(page_start, f, pickle.HIGHEST_PROTOCOL)
            print("Starting fresh at page 0.")

    client = ImgurClient(CLIENT_ID, CLIENT_SECRET)

    for page in range(page_start, page_start + page_range):
        items = client.memes_subgallery(page=page)
        for item in items:
            if isValid(item):
                media_name = media_path + item.link.split("/")[-1]
                r = requests.get(item.link, allow_redirects=True)
                with open(media_name, "wb") as f:
                    f.write(r.content)
                data_name = data_path + item.id + ".pkl"
                with open(data_name, "wb") as f:
                    pickle.dump(item, f, pickle.HIGHEST_PROTOCOL)
                print(page, item.id, item.width, item.height, item.size,
                      item.link, item.score)
        with open(page_path, "wb") as f:
            pickle.dump(page + 1, f, pickle.HIGHEST_PROTOCOL)

    print(client.get_credits())
Exemplo n.º 7
0
            elif score in range(25, 74):
                await client.edit_message(tmp, '**Analysiere Personen auf potenzielle Korpulationschancen:** :hearts:')
                await client.send_message(message.channel, "**" + prince +"** und **" + princess + "** connecten zu **" + str(score) +"\%**!")
            else:
                await client.edit_message(tmp, '**Analysiere Personen auf potenzielle Korpulationschancen:** ::broken_heart:')
                await client.send_message(message.channel, "**" + prince +"** und **" + princess + "** connecten zu **" + str(score) +"\%**!")
        except IndexError:
            text = '\n'.join(("Falscher Input, behinderter Spasti",
                              "`Usage: !loveCheck [Person1] [Person2]`"))
            await client.send_message(message.channel, text)
    
    # !meme
    # Postet ein zufälliges Meme aus Imgur
    elif message.content.startswith('!meme'):
        try:
            memes = imgurclient.memes_subgallery(sort='viral', page=0, window='week')
            await client.send_message(message.channel, random.choice(memes).link)
        except ImgurClientError:
            await client.send_message(message.channel, 'Imgur-Client spinnt. :(')

    # !paragon
    # Postet ein Todd Howard Meme aus Imgur
    elif message.content.startswith('!paragon'):
        try:
            paragon = imgurclient.subreddit_gallery('gayfortodd', sort='time', window='week', page=0)
            await client.send_message(message.channel, random.choice(paragon).link)
        except ImgurClientError:
            await client.send_message(message.channel, 'Imgur-Client spinnt. :(')
    
    # !shibe
    # Postet ein süßes Bild von einem Shiba Inu