def generate_reply(query):
    if len(query) > 70:
        query = query[:70]
    if query == 'help:':
        results = [{
                    'title':'Ellpedia Chat',
                    'help': '[ Ver.1.0 beta  ©2020 Ellpedia ]<br>'\
                    'Ellpedia ChatはWeb検索サイト<a href="https://www.ellpedia.com" target="_blank">Ellpedia.com</a>のチャット版です。<br>'\
                    '標準ではWeb検索モードになっています。<br>オプションとして、<br>'\
                    '・Wikipediaを検索する際は「w:」<br>・ニュースを検索する際は「n:」<br>'\
                    '・画像を検索する際は「i:」<br>・YouTubeを検索する際は「y:」<br>'\
                    '・Ellza (Bot) と会話する際は「b:」<br>を検索ワードの先頭に入れてください。<br>'\
                    '[<a href="https://blog.ellpedia.com/terms/" target="_blank">利用規約</a>]<br>'\
                    '[<a href="https://blog.ellpedia.com/privacy/" target="_blank">プライバシー</a>]<br>'\
                    '[<a href="https://github.com/thunderra1n/Ellvator_English" target="_blank">ソースコード</a>]',
        }]
        return results

    elif re.match('w:', query):
        query = query.lstrip('w:')
        query = 'site:wikipedia.org ' + query
        ua = generate_ua()
        ggl = g_search(query, ua)
        results = ggl[0] + [{}]
        return results

    elif re.match('n:', query):
        query = query.lstrip('n:')
        ua = generate_ua()
        results = bn_search(query, ua)
        return results

    elif re.match('i:', query):
        query = query.lstrip('i:')
        ua = generate_ua()
        results = gi_search(query, ua)
        return results

    elif re.match('y:', query):
        query = query.lstrip('y:')
        query = 'site:youtube.com ' + query
        ua = generate_ua()
        ggl = g_search(query, ua)
        results = [{}] + ggl[1]
        return results

    elif re.match('b:', query):
        query = query.lstrip('b:')
        results = make_reply(query)
        return results

    else:
        ua = generate_ua()
        ggl = g_search(query, ua)
        results = ggl[0] + ggl[1]
        return results
Ejemplo n.º 2
0
def search():
    spel = 0
    if request.method == 'GET':
        if request.args.get('q') and request.args.get('q') != 'i:':
            query = request.args.get('q')
        else:
            return render_template('index.html')
        if request.args.get('p'):
            if int(request.args.get('p')) < 1 or int(
                    request.args.get('p')) > 20:
                page = 1
            else:
                page = int(request.args.get('p'))
        else:
            page = 1
        if request.args.get('spl') and request.args.get('spl') == '1':
            spel = 1
    else:
        query = request.form['q']
        if int(request.form['p']) < 1 or int(request.form['p']) > 20:
            page = 1
        else:
            page = int(request.form['p'])
        if query == 'i:':
            return render_template('index.html')
        if request.form['spl'] == "1":
            spel = 1
    if len(query) > 70:
        query = query[:70]
    top_n = 0
    top_nw = 0
    top_i = 0
    top_iw = 0
    no_ggl1 = 0
    if re.match('n:', query):
        query = query.lstrip('n:')
        top_n = 1
    if re.match('i:', query):
        query = query.lstrip('i:')
        top_i = 1
    if page == 1:
        im_word = [
            'screen', 'photo', 'panorama', 'logo', 'icon', 'wallpaper', 'image'
        ]
        if 'news' in query:
            top_nw = 1
        for i in im_word:
            if i in query.lower():
                top_iw = 1
                break
    ua = generate_ua()
    ggl = g_search(query, page, spel, ua)
    spell = ggl[4]
    orig = ggl[5]
    g_wikis = ggl[0]
    g_urls = ggl[3]
    bng = b_search(query, page, ua, g_urls, g_wikis)
    wiki_results = ggl[0] + bng[0]
    if len(wiki_results) <= 1 and len(ggl[1]) <= 1:
        top_results = ggl[1] + bng[1]
        no_ggl1 = 1
    else:
        top_results = ggl[1]
    if len(wiki_results) >= 3:
        if len(top_results) == 0:
            sec_wiki = wiki_results[3:]
            wiki_results = wiki_results[:3]
        else:
            sec_wiki = wiki_results[2:]
            wiki_results = wiki_results[:2]
    else:
        sec_wiki = []
    if page == 1:
        b_news = bn_search(query, ua)
        notif = int(len(b_news))
    else:
        b_news = []
        notif = 0
    if no_ggl1 == 1:
        if sec_wiki != []:
            g_results = sec_wiki + ggl[2]
        else:
            g_results = ggl[2]
    else:
        if sec_wiki != []:
            g_results = sec_wiki + bng[1] + ggl[2]
        else:
            g_results = bng[1] + ggl[2]
    if page == 1:
        im_results = gi_search(query, ua)
    else:
        im_results = []
    b_results = bng[2]
    if top_n == 1:
        query = 'n:' + query
    if top_i == 1:
        query = 'i:' + query
    if top_nw == 1:
        top_n = 1
    if top_iw == 1:
        top_i = 1
    get_url = "http://localhost:50001/search?" + up.urlencode({
        'q': query,
        'p': page
    })
    if page == 1:
        page_back = 1
        page_next = 2
    elif page == 20:
        page_back = 19
        page_next = 1
    else:
        page_back = page - 1
        page_next = page + 1
    sug = ggl[6]
    if spel == 1:
        get_url = get_url + "&spl=1"
    if ggl == ([], [], [], [], '', '', []) and bng == ([], [], []):
        no_result = {
            'url': '/',
            'descr': 'No Result (An error may have occurred.)',
            'top': 'Back to main page',
        }
    else:
        no_result = {}
    return render_template(
        'search.html',
        query=query,
        spell=spell,
        orig=orig,
        top_n=top_n,
        top_i=top_i,
        no_result=no_result,
        wiki_results=wiki_results,
        top_results=top_results,
        b_news=b_news,
        notif=notif,
        g_results=g_results,
        im_results=im_results,
        b_results=b_results,
        get_url=get_url,
        page_back=page_back,
        page_next=page_next,
        sug=sug,
    )