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 = ['utexas.edu', 'slate.com', 'storage.canalblog.com', 'cisco.com', 'stuff.co.nz', 'fifa.com', 'home.neustar', 'nhk.or.jp', 'thestar.com', 'noaa.gov', 'theglobeandmail.com', 'kotaku.com', 'politico.com', 'amazon.in', 'qz.com', 'box.com', 'nifty.com', 'python.org', 'ibtimes.com', 'rottentomatoes.com', 'ieee.org', 'imageshack.com', 'statista.com', 'fastcompany.com', 'blog.fc2.com', 'prnewswire.com', 'naver.jp', 'last.fm', '123rf.com', 'thehill.com', 'blackberry.com', 'a8.net', 'foursquare.com', 'sakura.ne.jp', 'weforum.org', 'dell.com', 'bbci.co.uk', 'usda.gov', 'house.gov', 'rfi.fr', 'jstor.org', 'kompas.com', 'unsplash.com', 'stores.jp', 'nvidia.com', 'ftc.gov', 'com.com', 'howstuffworks.com', 'pnas.org']

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()