---
# System prepended metadata

title: auto search and compare

---

# auto search and compare

```python=
import urllib.request
from urllib.parse import quote
import json
import string

# 第一次使用本程式時，請設為 True，第二次以後，設為 False
first_time = True

# 總共想要幾筆搜尋結果
num_item = 10

# 把 dic 這個 dictionary 裡面的搜尋結果存進檔案
def write_to_file(dic):
    for i in range(num_item):
        
        # 打開一個檔案，在 data 資料夾下，取名為 <現在的i>.text
        f = open("data/%d.txt" % i, 'w')
        
        # lines 是一個 list，內有三個字串：標題、網址、簡介
        lines = [dic["items"][i]["title"] + "\n",
            dic["items"][i]["link"] + "\n",
            dic["items"][i]["snippet"] + "\n"]
        
        # 把 lines 寫入檔案
        f.writelines(lines)
        
        # 關檔案
        f.close()

        

def search():
    # 把 num_item 填入前面 %d 的位置
    url = "https://www.googleapis.com/customsearch/v1?key=[你的API Key]&cx=[你的Search Engine ID]&q=vtuber+福利卡&start=0&num=%d" % num_item

    url = quote(url, safe=string.printable)

    print(url)

    res = urllib.request.urlopen(url).read()
    dic = json.loads(res)

    if first_time:
        for i in range(num_item):
            print(dic["items"][i]["title"])
            print(dic["items"][i]["link"])
            print(dic["items"][i]["snippet"])

        write_to_file(dic)

    else:
        # 把本次的搜尋結果存到 link_to_item 這個 dictionary，方便等一下比較
        # dictionary 的 key 是網址，value 是這筆搜尋結果的全部內容
        link_to_item = {}
        for i in range(num_item):
            link_to_item[dic["items"][i]["link"]] = dic["items"][i]

        # 把之前存在檔案裡的搜尋結果讀出來，放到 link_to_item_in_files 裡
        link_to_item_in_files = {}
        for i in range(num_item):
            f = open("data/%d.txt" % i, 'r')
            lines = [f.readline(), f.readline(), f.readline()]
            link_to_item_in_files[lines[1]] = lines

        # 比對兩者的 key，找出 link_to_item_in_files 沒有但 link_to_item 有的
        # 代表是新的搜尋結果
        for link, value in link_to_item.items():
            if not link + "\n" in link_to_item_in_files:
                print("Found a new mention!\n" + 
                    value["title"] + "\n" +
                    value["link"] + "\n" +
                    value["snippet"] + "\n")

        # 最後一樣要記得把這次的結果存到檔案裡去
        write_to_file(dic)

        
search()

```