#!/bin/env python3
import requests
import sys
import re
from bs4 import BeautifulSoup
from urllib.parse import urlencode 
def filt_func(element):
    if element in ['\r','\n','\r\n']:
        return False
    if element.parent.name in ['style', 'script', '[document]', 'head', 'title']:
        return False
    elif re.match('<!--.*-->', str(element.encode('utf-8'))):
        return False
    return True
def main(search_query) :
    if not len(search_query):
        search_query="кротовые норы"
    else:
        search_query=search_query[0]    
    
    #заголовки начальные
    bh={'Host': 'www.twirpx.com','Connection': 'keep-alive','Upgrade-Insecure-Requests':'1','User-Agent': 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Accept-Encoding':'gzip, deflate, br', 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4'}
    #заголовки для поиска
    bh1={'Host':'www.twirpx.com','Connection':'keep-alive','Content-Length':'210','Cache-Control':'max-age=0','Origin':'https://www.twirpx.com','Upgrade-Insecure-Requests':'1','User-Agent': 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)','Content-Type':'application/x-www-form-urlencoded','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Referer':'https://www.twirpx.com/','Accept-Encoding':'gzip,deflate,br','Accept-Language':'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4'}
    #новая сессия
    s=requests.Session()
    s.headers.update(bh)
    #получим страницу  и распарсим ее
    r=s.get('http://www.twirpx.com/')
    bs = BeautifulSoup(r.content,'html.parser')
    #получим значение поля __SART оно дальше передается в запросе
    SART=bs.find("input", {"name":"__SART"})['value']
    #тело запроса 
    sh={'SearchQuery':search_query,'SearchScope':'site','__SART':SART}
    #обновим заголовки на новые
    s.headers.update(bh1)
    r=s.post('https://www.twirpx.com/search/',data=urlencode(sh))
    print(r.status_code)
    #распарсим ответ
    bs = BeautifulSoup(r.content,'html.parser')
    #и уберем лишнее
    data=bs.findAll(text=True)
    lst=list(filter(filt_func, data))
    print(('\n-- '.join(str(p) for p in lst)))
    #TODO: можно добавить по аналогии и авторизацию на сайте
    
if __name__=="__main__" :
    main(sys.argv[1:])