예제 #1
0
def chagepasswd():
    if request.method == "POST":
        userdict = dict(request.form)
        if userdict['def_passwd'][0] == db.get_by_id(
                request.form.get('id'))['password']:
            if userdict['rep_passwd'][0] == userdict['password'][0]:
                new_password = [
                    "%s='%s'" % (k, v[0]) for k, v in userdict.items()
                ][1]
                db.update_user_data(new_password, userdict['id'][0])
            else:
                return render_template('chage_passwd.html',
                                       user=db.get_by_id(
                                           request.form.get('id')),
                                       info='Two different Password')
        else:
            return render_template('chage_passwd.html',
                                   user=db.get_by_id(request.form.get('id')),
                                   info='error password!')
        return render_template('chage_passwd.html',
                               user=db.get_by_id(request.form.get('id')),
                               info='chage complete!!!')
    else:
        return render_template('chage_passwd.html',
                               user=db.get_by_id(request.args.get('id')))
예제 #2
0
def userchagepasswd():
    if not session.get('name', None) or session.get('role', None) != 'user':
        return redirect('/login')
    if request.method == "POST":
        userdict = dict(request.form)
        if userdict['def_passwd'][0] != get_by_id(
                request.form.get('id'))['password']:
            errmsg = "password error!"
            return json.dumps({'code': '1', 'errmsg': errmsg})
        if userdict['rep_passwd'][0] != userdict['password'][0]:
            errmsg = "the two passwords don't match"
            return json.dumps({'code': '1', 'errmsg': errmsg})
        else:
            new_password = [
                "%s='%s'" % (k, v[0]) for k, v in userdict.items()
            ][1]
            update_user_data(new_password, userdict['id'][0])
            return json.dumps({'code': '0', 'errmsg': "chage password sucess"})
    else:
        roles = session.get('role', None)
        names = session.get('name', None)
        return render_template('user_passwd.html',
                               user=get_by_id(request.args.get('id')),
                               name=names,
                               role=roles)
예제 #3
0
파일: main.py 프로젝트: tareksrour/Samples
def reset_preview(bot, update):
    query = update.callback_query
    data = str(query.data).split("=")[1]
    data = literal_eval(data)
    query_str, result, type = db.get_by_id(data['sId'])
    id = data['id']

    for s in result:
        if s['id'] == id:
            song = s
            break

    keys = [[],
            [
                InlineKeyboardButton("Preview",
                                     callback_data="/preview={}".format(data)),
                InlineKeyboardButton("Download",
                                     callback_data="/download={}".format(data))
            ]]
    size = len(result)
    setup_keyboard(data, keys, size)
    bot.answer_callback_query(callback_query_id=update.callback_query.id)
    bot.edit_message_media(
        timeout=999,
        reply_markup=InlineKeyboardMarkup(keys),
        chat_id=query.message.chat_id,
        message_id=query.message.message_id,
        media=InputMediaPhoto(
            media="https://anghamicoverart.akamaized.net/?id={}".format(
                song["coverArt"]),
            caption="{} - {}".format(song["title"], song["artist"])))
예제 #4
0
def update():
    if request.method == "POST":
	userdict = dict(request.form)
	userlist = ["%s='%s'" % (k,v[0]) for k,v in userdict.items()]
	db.update_user_data(','.join(userlist),userdict['id'][0])
        return redirect('/admin')
    else:
	return render_template('update.html',user=db.get_by_id(request.args.get('id')))
예제 #5
0
def update():
    if not session.get('name',None) or session.get('role',None) != 'admin':
        return redirect('/login')
    if request.method == "POST":
	userdict = dict(request.form)
	userlist = ["%s='%s'" % (k,v[0]) for k,v in userdict.items()]
	update_user_data(','.join(userlist),userdict['id'][0])
        return json.dumps({'code':'0','errmsg':"update sucess"})
    else:
	return render_template('update.html',user=get_by_id(request.args.get('id')))
예제 #6
0
def chagepasswd():
    if not session.get('name', None) or session.get('role', None) != 'admin':
        return redirect('/login')
    if request.method == "POST":
        userdict = dict(request.form)
        new_password = ["%s='%s'" % (k, v[0]) for k, v in userdict.items()][1]
        update_user_data(new_password, userdict['id'][0])
        return json.dumps({'code': '0', 'errmsg': "chage password sucess"})
    else:
        roles = session.get('role', None)
        names = session.get('name', None)
        return render_template('admin_passwd.html',
                               user=get_by_id(request.args.get('id')),
                               name=names,
                               role=roles)
예제 #7
0
파일: main.py 프로젝트: tareksrour/Samples
def get_preview(bot, update):
    query = update.callback_query
    data = str(query.data).split("=")[1]
    data = literal_eval(data)
    id = data['id']
    song_data = get_song_data(id)
    query_str, result, type = db.get_by_id(data['sId'])

    keys = [[],
            [
                InlineKeyboardButton("Reset",
                                     callback_data="/reset={}".format(data)),
                InlineKeyboardButton("Download",
                                     callback_data="/download={}".format(data))
            ]]
    size = len(result)
    setup_keyboard(data, keys, size)
    try:
        open("cache/preview/{}.mp3".format(id), 'rb')
    except Exception as e:
        print(e)
        url = "http://track.anghami.com/rest/v1/GETtrack.view?songid={}".format(
            id)
        r = requests.get(url)

        with open("cache/preview/{}".format(id), "wb") as f:
            f.write(r.content)
            f.flush()
            f.close()
        r.close()
        preview = AudioSegment.from_file("cache/preview/{}".format(id), "m4a")
        preview.export("cache/preview/{}.mp3".format(id), format="mp3")
        os.remove("cache/preview/{}".format(id))
    bot.answer_callback_query(callback_query_id=update.callback_query.id)
    bot.edit_message_media(
        timeout=999,
        reply_markup=InlineKeyboardMarkup(keys),
        chat_id=query.message.chat_id,
        message_id=query.message.message_id,
        media=InputMediaAudio(
            media=open("cache/preview/{}.mp3".format(id), 'rb'),
            title=song_data['title'],
            performer=song_data['artist'],
            thumb="https://anghamicoverart.akamaized.net/?id={}".format(
                song_data["coverArt"])))
예제 #8
0
파일: main.py 프로젝트: tareksrour/Samples
def get_download(bot, update):
    query = update.callback_query
    data = str(query.data).split("=")[1]
    data = literal_eval(data)

    query_str, result, type = db.get_by_id(data['sId'])
    id = data['id']

    for s in result:
        if s['id'] == id:
            song = s
            break
    file = "{} - {}".format(song["title"], song["artist"])
    keys = [[],
            [
                InlineKeyboardButton("Reset",
                                     callback_data="/reset={}".format(data))
            ]]
    size = len(result)
    setup_keyboard(data, keys, size)

    try:
        file = "{} - {}".format(song["title"], song["artist"])
        open("cache/media/{}.mp3".format(file), 'rb')

    except Exception:
        url = get_download_url(id)
        r = requests.get(url, stream=True)
        with open("cache/media/{}".format(file), "wb") as f:
            for chunk in r.iter_content(4096):
                f.write(chunk)
            f.flush()
            f.close()
        r.close()
        url = "https://anghamicoverart.akamaized.net/?id={}".format(
            song["coverArt"])
        r = requests.get(url)
        with open("cache/media/{}.jpg".format(id), "wb") as f:
            f.write(r.content)
            f.flush()
            f.close()
        r.close()
        preview = AudioSegment.from_file("cache/media/{}".format(file), "m4a")
        preview.export("cache/media/{}.mp3".format(file),
                       format="mp3",
                       tags={
                           'artist': song['artist'],
                           'album': song['album'],
                           'title': song['title']
                       },
                       cover="cache/media/{}.jpg".format(id))
        os.remove("cache/media/{}.jpg".format(id))
        os.remove("cache/media/{}".format(file))
    bot.answer_callback_query(callback_query_id=update.callback_query.id)
    bot.send_audio(chat_id=query.message.chat_id,
                   message_id=query.message.message_id,
                   audio=open("cache/media/{}.mp3".format(file), 'rb'),
                   title=song['title'],
                   performer=song['artist'],
                   thumb="https://anghamicoverart.akamaized.net/?id={}".format(
                       song["coverArt"]),
                   timeout=999)
예제 #9
0
파일: main.py 프로젝트: tareksrour/Samples
def search_for(bot,
               update,
               query=None,
               type="song",
               page=0,
               newSearch=False,
               search_id=None):
    if not fingerprint:
        get_fingerprint()
    if search_id:
        query, result, type = db.get_by_id(search_id)
    else:
        search_id, result = db.get_by_query(query, type)
    if newSearch or not result:
        url = "https://api.anghami.com/gateway.php?type=GETsearch&query={}&output=JSONhp&edge=1&count=18&language=en&lang=en&angh_type=GETsearch&fingerprint=65b4e419-ea9d-4d96-905e-a098fdfd6e50R".format(
            query)
        r = requests.get(url, headers=headers)
        result = []
        for section in r.json()["sections"]:
            if not section["type"] == type:
                continue
            for item in section['data']:
                if type == 'song':
                    s = {
                        'id': item['id'],
                        'coverArt': item['coverArt'],
                        'album': item['album'],
                        'artist': item['artist'],
                        'title': item['title']
                    }
                else:
                    if type == 'album':
                        s = {
                            'id': item['id'],
                            'coverArt': item['coverArt'],
                            'artist': item['artist'],
                            'title': item['title']
                        }
                    else:
                        if type == 'artist':
                            s = {
                                'id': item['id'],
                                'coverArt': item['ArtistArt'],
                                'title': item['name']
                            }
                        else:
                            if type == 'playlist':
                                s = {
                                    'id': item['id'],
                                    'coverArt': item['coverArt'],
                                    'artist': item['details'],
                                    'title': item['title']
                                }
                result.append(s)
        search_id = db.insert(query, result, type)
    size = len(result)
    if size == 0:
        bot.answer_callback_query(callback_query_id=update.callback_query.id)
        bot.edit_message_text(
            text='No {} result,Please Choose different Category for "{}"!'.
            format(type, query),
            chat_id=update.callback_query.message.chat_id,
            message_id=update.callback_query.message.message_id,
            reply_markup=InlineKeyboardMarkup(type_menu(query)))
        return
    item = result[page]
    data = {'page': page, 'sId': search_id, 'id': item['id']}

    send_back_result(bot, data, item, newSearch, size, type, update)
예제 #10
0
파일: main.py 프로젝트: tareksrour/Samples
def button(bot, update):
    query = update.callback_query
    if u"/preview" in query.data:
        get_preview(bot, update)
    else:
        if u"/reset" in query.data:
            reset_preview(bot, update)
        else:
            if u"/download" in query.data:
                get_download(bot, update)
            else:
                if u"/song" in query.data:
                    search_for(bot,
                               update,
                               str(query.data).split("=")[1],
                               newSearch=True)
                else:
                    if u'/other_page' in query.data:
                        data = str(query.data).split("=")[1]
                        data = literal_eval(data)
                        search_for(bot,
                                   update,
                                   search_id=data['sId'],
                                   page=data['page'])
                    else:
                        if u'/album' in query.data:
                            search_for(bot,
                                       update,
                                       str(query.data).split("=")[1],
                                       newSearch=True,
                                       type='album')
                        else:
                            if u'/back' in query.data:
                                data = str(query.data).split("=")[1]
                                data = literal_eval(data)
                                query_str, result, type = db.get_by_id(
                                    data['sId'])

                                keys = type_menu(query_str)
                                bot.delete_message(
                                    chat_id=update.callback_query.message.
                                    chat_id,
                                    message_id=update.callback_query.message.
                                    message_id)
                                update.callback_query.message.reply_text(
                                    'Searching for "{}" , choose category!'.
                                    format(query_str),
                                    disable_web_page_preview=False,
                                    parse_mode=ParseMode.HTML,
                                    reply_markup=InlineKeyboardMarkup(keys))
                            else:
                                if u'/open' in query.data:
                                    open_sub(bot, update)
                                else:
                                    if u'/return' in query.data:
                                        data = str(query.data).split("=")[1]
                                        data = literal_eval(data)
                                        ret = db.get_parent([data['sId']])
                                        search_for(bot,
                                                   update,
                                                   search_id=ret[0],
                                                   page=ret[1])
                                    else:
                                        if u'/artist' in query.data:
                                            search_for(
                                                bot,
                                                update,
                                                str(query.data).split("=")[1],
                                                type='artist',
                                                newSearch=True)
예제 #11
0
def get_metadata(id):
    return db.get_by_id(id)
예제 #12
0
 def remove_form_by_id(id):
     good = db.get_by_id(db.open_db(db_url), id)
     return render_template('remove.html', item=good)
예제 #13
0
 def edit_form_by_id(id):
     good = db.get_by_id(db.open_db(db_url), id)
     return render_template('edit.html', item=good)
예제 #14
0
 def details_by_id(id):
     good = db.get_by_id(db.open_db(db_url), id)
     return render_template('details.html', item=good)