Пример #1
0
def __main__():
    os.makedirs(conf['images_dir'], exist_ok=True)
    os.makedirs('vk_loader/loaded_ids', exist_ok=True)
    posts = get_new_posts()
    posts = filter(is_post_meme, posts)

    for post in posts:
        photo = post['attachments'][0]['photo']
        ptr = len(PHOTO_URL_FIELDS) - 1

        while ptr >= 0 and PHOTO_URL_FIELDS[ptr] not in photo:
            ptr -= 1

        if ptr < 0:
            continue

        photo_url = photo[PHOTO_URL_FIELDS[ptr]]
        assert (photo_url.endswith('.jpg'))

        photo_id = get_random_id()

        try:
            print('loading', photo_id, photo_url)
            download(photo_url, conf['images_dir'] + photo_id + '.jpg')
        except IOError:
            print('Downloading/saving an image failed!')
            continue

        session.add(Meme(img=photo_id))

    session.commit()
Пример #2
0
def upload_memes(tags, url, all_tags):
    meme = Meme(image_url=url).put()
    meme_tag_objects = []
    for tag in tags:
        if not tag in all_tags:
            all_tags[tag] = Tag(tag_name=tag).put()
        temp_meme_tag = Meme_and_Tag(meme=meme, tag=all_tags[tag]).put()
Пример #3
0
 def post(self):
     meme = Meme(line1=self.request.get('user-first-ln'),
                 line2=self.request.get('user-second-ln'),
                 img_choice=self.request.get('meme-type'))
     meme_key = meme.put()
     self.response.write("Meme created: " + str(meme_key) + "<br>")
     self.response.write("<a href='/allmemes'>All memes</a>")
Пример #4
0
    def post(self):
        ''' Endpoint for registering a meme '''
        parser = reqparse.RequestParser()
        parser.add_argument('url', required=True)
        parser.add_argument('title')
        args = parser.parse_args()

        if Meme.query.filter_by(url=args.url).first():
            return send_error("This meme has already been submitted! "
                              "Lay off the stale memes.", 400)
        try:
            args.url = validate_imgur_link(args.url)
        except ValueError as e:
            logger.info('%s sent an invalid imgur link.' % flask.g.netid)
            return send_error(str(e))

        meme = Meme(
            url=args.url,
            title=args.title,
            netid=flask.g.netid
        )
        db.session.add(meme)
        db.session.commit()
        logger.info("%s created new meme with id %s" %
                    (flask.g.netid, meme.id))
        return jsonify(meme.to_dict())
Пример #5
0
 def post(self):
     """Handles POST requests for /memes endpoint
 
 Returns:
     dict -- Status or error message
 """
     try:
         args = parser.parse_args()
         auth = args['meme_auth']
         temp = args['temp'] is '1' or args['temp'] is None
         if auth != auth_key:
             return {'message': 'Bad meme authentication'}, 401
         meme_url = args['url']
         if not meme_url:
             return {'message': 'No empty memes'}, 401
         existing = Meme.query.filter_by(url=meme_url).first()
         if not existing:
             meme = Meme(url=meme_url, temp=temp)
             db.session.add(meme)
             db.session.commit()
             return {'status': 'success'}
         return {'message': 'Meme already exists!'}, 401
     except Exception as e:
         traceback.print_exc()
         return generic_400(e)
Пример #6
0
def seed_data():
    fry_key = Image(name="fry_squint", image_file="fry.png").put()
    jc_key = Image(name="jackie_chan_wtf", image_file="jackie.png").put()
    tears_key = Image(name="tears_in_the_rain", image_file="tears.png").put()
    pika_key = Image(name="surprised_pikachu", image_file="surprised_pikachu.png").put()
    buzz_key = Image(name="buzz_everywhere", image_file="buzz_everywhere.jpg").put()
    roll_safe_key = Image(name="roll_safe", image_file="roll_safe.jpg").put()


    Meme(top_text="Not sure if meme app", bottom_text="or black hole",
         image=fry_key, creator="*****@*****.**",
         created_at=datetime.datetime(2018, 07, 23, 05, 23, 0, 0)).put()
    Meme(top_text="Meme app", bottom_text="doesn't save memes?",
         image=jc_key, creator="*****@*****.**",
         created_at=datetime.datetime(2018, 06, 23, 05, 23, 0, 0)).put()
    Meme(top_text="All these memes", bottom_text="lost like tears in the rain.",
         image=tears_key, creator="*****@*****.**",
         created_at=datetime.datetime(1984, 07, 23, 05, 23, 0, 0)).put()
Пример #7
0
def populate_db():
    with open('memes.json', 'r') as f:
        with app.app_context():
            memes = json.loads(f.read())
            for meme in memes:
                try:
                    db.session.add(Meme(url=meme['url'], temp=False))
                    db.session.commit()
                except:
                    pass
Пример #8
0
 def post(self):
     user = users.get_current_user()
     image_name = self.request.get('image')
     image_key = Image.query(Image.name == image_name).fetch(1)[0].key
     Meme(top_text=self.request.get('top_text'),
          middle_text=self.request.get('middle_text'),
          bottom_text=self.request.get('bottom_text'),
          image=image_key,
          creator=user.user_id()).put()
     self.redirect('/')
    def post(self):
        checkLoggedInAndRegistered(self)

        user = users.get_current_user()

        meme = Meme(line1=self.request.get('user-first-ln'),
                    line2=self.request.get('user-second-ln'),
                    owner=user.nickname(),
                    img_choice=self.request.get('meme-type'))
        meme_key = meme.put()
        self.response.write("Meme created: " + str(meme_key) + "<br>")
        self.response.write("<a href='/allmemes'>All memes</a> | ")
        self.response.write("<a href='/usermemes'>My memes</a>")
Пример #10
0
    def post(self):  
        results_template = the_jinja_env.get_template('templates/results.html')
        meme_first_line = self.request.get('user-first-ln')
        meme_second_line = self.request.get('user-second-ln')
        meme_img_choice = self.request.get('meme-type')

        user_meme = Meme(first_line = meme_first_line, 
                         second_line = meme_second_line,
                         pic_type = meme_img_choice)
        user_meme.put()
        the_variable_dict = {"line1": meme_first_line, 
                             "line2": meme_second_line, 
                             "img_url": user_meme.get_meme_url()}
        self.response.write(results_template.render(the_variable_dict)) 
Пример #11
0
 def post(self):
     top_line = self.request.get("top-line")
     bottom_line = self.request.get("bottom-line")
     meme_url = self.request.get("template")
     newMeme = Meme(url = meme_url, top_text = top_line,bottom_text = bottom_line)
     newMeme.put()
     results = {
         "top" : top_line,
         "bottom" : bottom_line,
         "url" : meme_url
     }
     result_template = jinja_env.get_template('result.html')
     self.response.write(result_template.render(results))
     print(top_line)
Пример #12
0
 def post(self):
     top_line = self.request.get("top-line")
     bottom_line = self.request.get("bottom-line")
     meme_url = self.request.get("template")
     data_dict = {
         "top_line": top_line,
         "bottom_line": bottom_line,
         "url": meme_url
     }
     meme1 = Meme(first_line=data_dict["top_line"],
                  second_line=data_dict["bottom_line"],
                  pic_type=data_dict["url"])
     meme1.put()
     result_template = the_jinja_env.get_template('templates/result.html')
     self.response.write(result_template.render(data_dict))
Пример #13
0
    def post(self):
        user = users.get_current_user() # get current logged in user
        meme_key_string = self.request.get('meme_key')
        image_name = self.request.get('image')
        image_key = Image.query(Image.name == image_name).fetch(1)[0].key # get the key of the correct image by nickname

        if meme_key_string:
            meme = get_meme_from_key(meme_key_string)
            if meme.creator != user.user_id():
                self.response.status = "403 Forbidden"
                return
        else:
            meme = Meme()

        meme.top_text=self.request.get('top_text')
        meme.middle_text=self.request.get('middle_text')
        meme.bottom_text=self.request.get('bottom_text')
        meme.image=image_key
        meme.creator=user.user_id() # grab the user ID from currently logged in user, store with Meme

        meme_key = meme.put()
        self.redirect('/view?meme_key=' + meme_key.urlsafe())
Пример #14
0
    def meme_handler(self, message: telebot.types.Message):
        telegram_id = message.from_user.id
        chat_id = str(message.chat.id)
        msg_id = message.message_id
        username = '******' + message.from_user.username if message.from_user.username else message.from_user.first_name

        get_cached_meme_posted_at(chat_id, telegram_id)
        if (datetime.utcnow() -
                last_meme_posted_at_cache[chat_id][telegram_id]).seconds > 10:
            if message.content_type != 'text':
                last_meme_posted_at_cache[chat_id][
                    telegram_id] = datetime.utcnow().replace(microsecond=0)
                user = User(telegram_id, chat_id,
                            username).save_if_not_exists()

                meme = Meme(user.id, msg_id, chat_id).save()
                print('new meme', meme.id, flush=True)
                self.send_message(chat_id,
                                  'Mark this meme',
                                  reply_to_message_id=msg_id,
                                  reply_markup=vote_keyboard())
            else:
                if message.text.startswith('/'):
                    self.command_handler(message)
Пример #15
0
def run_query(first_line, second_line, pic_type):
    meme = Meme(line1=first_line, line2=second_line, img_choice=pic_type)
    meme_key = meme.put()
    print("&&&&&&&&&&&&&&&&&&&&&&&&&")
    print meme_key
Пример #16
0
 def rose_meme_delete(self, a_meme):
     if not a_meme.from_datastore:
         raise endpoints.NotFoundException('Meme not Found')
     a_meme.key.delete()
     return Meme(image_url='Deleted')
Пример #17
0
 def save_meme(self, user_id, file_type, file_id, msg_id):
     meme = Meme(user_id, file_type, file_id, msg_id).save()
     user = User.get(user_id)
     print(f'{user} have posted {meme}', flush=True)
Пример #18
0
 def post(self):
     new_message = Meme(image_url=self.request.get('image_url'),
                        caption=self.request.get('caption'))
     new_message.put()
     time.sleep(0.5)
     self.redirect('/')