import dns
import dns.resolver
import sched, time
from datetime import datetime

TIME_DELAY = 60 * 5
#DOMAINS = ["google.com","ebay.com","youtube.com","microsoft.com","azure.microsoft.com", "facebook.com","amazom.com","apple.com", "itunes.apple.com", "aws.amazon.com", "tiktok.com"]
#DOMAINS = ['google.com', 'youtube.com', 'baidu.com', 'facebook.com', 'tmall.com', 'taobao.com', 'zhihu.com', 'qq.com', 'amazon.com', 'yahoo.com', 'sogou.com', 'wikipedia.org', 'weibo.com', 'so.com', 'sohu.com', 'live.com', 'zoom.us', 'soso.com', 'jd.com', 'netflix.com', 'bilibili.com', 'sina.com.cn', 'instagram.com', 'tianya.cn', 'microsoft.com', 'reddit.com', 'office.com', 'canva.com', 'bing.com', 'csdn.net', 'google.com.hk', 'myshopify.com', 'alipay.com', 'vk.com', 'naver.com', 'chaturbate.com', 'microsoftonline.com', 'yahoo.co.jp', 'twitter.com', 'bongacams.com', 'force.com', 'twitch.tv', 'amazon.in', 'sharepoint.com', 'amazon.co.jp', 'adobe.com', 'ebay.com']
DOMAINS = ['adobe.com', 'microsoft.com', 'oracle.com', 'usatoday.com', 'nps.gov', 'redhat.com', 'opentable.com', 'ups.com', 'citrix.com', 'ikea.com', 'pwc.com', 'akamai.com', 'forrester.com', 'usda.gov', 'amd.com', 'united.com', 'scholastic.com', 'nyc.gov', 'tesla.com', 'business.com', 'sophos.com', 'adidas.com', 'space.com', 'harmankardon.com', 'ahrq.gov', '3m.com', 'lowes.com', 'kbb.com', 'ti.com', 'bp.com', 'sacbee.com', 'ntt.com', 'businesstimes.com.sg', 'starwars.com', 'malwarebytes.com', 'rakuten.com', 'icicibank.com', 'syfy.com', 'nbcuniversal.com', 'riverbed.com', 'centurydodgechryslerjeep.com', 'stjude.org', 'threadless.com', 'cmegroup.com', 'hermanmiller.com', 'itau.com.br', 'cars.com', 'staples.comTechnology', 'sgs.com']
DOMAINS += ['medium.com', 'getbootstrap.com', 'codepen.io', 'fiverr.com', 'themeforest.net', 'gitlab.com', 'canva.com', 'fontawesome.com', 'upwork.com', 'discord.com']
def get_ips_for_domain(domain):
    google_resolver = dns.resolver.Resolver()
    google_resolver.nameservers = ['8.8.8.8']
    result =  google_resolver.resolve(domain, 'A')
    list_of_results = []
    for ipval in result:
        ip = ipval.to_text()
        list_of_results.append(ip)
    return (list_of_results, result.rrset.ttl)

def save_ips_for_domain(domain, ips, ttl):
    to_write = ','.join(ips) + " " + str(datetime.now().time()) +  " " + str(ttl) + "\n"
    open(domain, "a+").write(to_write)

def get_ips():
    print("Query DNS", str(datetime.now().time()))
    global DOMAINS
    for domain in DOMAINS:
        try:
            ips,ttl = get_ips_for_domain(domain)
            save_ips_for_domain(domain, ips,ttl)
        except Exception as e: 
            print(e, domain)



s = sched.scheduler(time.time, time.sleep)
get_ips()
while True:
    s.enter(TIME_DELAY, 1, get_ips)
    s.run()