コード例 #1
0
def graph_endpoint(sub):
    """Get graph based on subreddit. ?limit=int for the number of threads to crawl"""
    limit = request.args.get('limit')
    limit = int(request.args.get('limit')) if limit else 100
    data = crawler.get_data(sub, limit=limit)
    results = graph.get_heighest_weight_neighbour(
        graph.create_graph(data), sub, 10)
    return jsonify(results)
コード例 #2
0
from crawler import get_data

keyword = ''
result_path = ''

if __name__ == "__main__":
    config = configparser.ConfigParser()
    config.read('./setting.txt')
    keyword = config['CRAWLER']['KEYWORD']
    result_path = config['EXCEL']['RESULT_PATH']
    print('============================')
    print('키워드 :', keyword)
    print('결과물 :', result_path)
    print('============================')

    try:
        make_excel(result_path)
        print('엑셀 파일 생성됨.')
    except PermissionError:
        print('엑셀 파일 생성 불가. 열려 있는 엑셀 파일을 종료해주세요.')
        sys.exit(1)
    print('============================')

    start_idx = 1
    with tqdm(total=100, ncols=80, desc='작업 진행') as pbar:
        for item in get_data(keyword):
            start_idx = append_excel(result_path, item, start_idx)
            pbar.update(1)
    print('============================')
    print('작업 완료됨. 프로그램을 종료해주세요.')
    input()
コード例 #3
0
    def handle_message(event):
        global data_time
        global data_index
        global air_data
        global user_data

        global user_data_filename

        if not (event.source.user_id in user_data):
            user_data[event.source.user_id] = {
                "subscribe_site": [],
                "aqi_format": "simple"
            }
            #rewrite_user_data(user_data_filename,user_data) #write the data in storage

        if datetime.datetime.now(
        ) - delta > data_time or data_time.hour != datetime.datetime.now(
        ).hour:
            air_data = get_data()
            data_index = get_data_index(air_data)
            data_time = datetime.datetime.now()

        input_text = event.message.text
        input_texts = input_text.split(' ')
        out_text = ""
        try:
            if input_texts[0] == "add":
                if input_texts[1] in data_index:
                    if not (input_texts[1] in user_data[event.source.user_id]
                            ["subscribe_site"]):
                        user_data[
                            event.source.user_id]["subscribe_site"].append(
                                input_texts[1])
                        #rewrite_user_data(user_data_filename,user_data) #write the data in storage
                        out_text = "add success"
                    else:
                        out_text = "site already exist"
                else:
                    out_text = "add fail, name error"
            elif input_texts[0] == "delete":
                if input_texts[1] in user_data[
                        event.source.user_id]["subscribe_site"]:
                    user_data[event.source.user_id]["subscribe_site"].remove(
                        input_texts[1])
                    #rewrite_user_data(user_data_filename,user_data) #write the data in storage
                    out_text = "remove " + input_texts[1] + " from subscribe"
                else:
                    out_text = "delete fail, site doesn't exist"
            elif input_texts[0] == "get":
                out_text = ""
                if user_data[event.source.user_id]["aqi_format"] == "simple":
                    for i in user_data[event.source.user_id]["subscribe_site"]:
                        #result = json.dumps(air_data[data_index[i]], ensure_ascii=False)
                        out_text = out_text + Aqi.aqi_with_simple_format(
                            air_data[data_index[i]])
                elif user_data[
                        event.source.user_id]["aqi_format"] == "complex":
                    for i in user_data[event.source.user_id]["subscribe_site"]:
                        #result = json.dumps(air_data[data_index[i]], ensure_ascii=False)
                        out_text = out_text + Aqi.aqi_with_complex_format(
                            air_data[data_index[i]])
                else:
                    out_text = "format error"
                if out_text == "":
                    out_text = "subscribe is empty"
            elif input_texts[0] == "list":
                out_text = "aqi format : " + str(user_data[
                    event.source.user_id]["aqi_format"]) + "\nsubscribed : "
                for i in user_data[event.source.user_id]["subscribe_site"]:
                    out_text = out_text + str(i) + ","
                out_text = out_text + "\nall site:"
                for i in data_index.keys():
                    out_text = out_text + str(i) + ","
            elif input_texts[0] == "help":
                out_text = "Usage:\n    <command> [options]\nCommands:\n    add \n    delete\n    list\n    get\n    help\n    set format\n"
            elif input_texts[0] == "who":
                out_text = event.source.user_id
            elif input_texts[0] == "alluser":

                #u=get_user_data(user_data_filename)
                out_text = json.dumps(user_data, ensure_ascii=False)
            elif input_texts[0] == "set":
                if input_texts[1] == "format":
                    if input_texts[2] == "simple":
                        user_data[
                            event.source.user_id]["aqi_format"] = "simple"
                        out_text = "set format to simple"
                        #rewrite_user_data(user_data_filename,user_data) #write the data in storage
                    elif input_texts[2] == "complex":
                        user_data[
                            event.source.user_id]["aqi_format"] = "complex"
                        out_text = "set format to complex"
                        #rewrite_user_data(user_data_filename,user_data) #write the data in storage
                    else:
                        out_text = "input error"
                else:
                    out_text = "input error"
            elif input_texts[0] == "fsm":
                message = ImageSendMessage("https://i.imgur.com/3YGE57U.png",
                                           "https://i.imgur.com/08uqJTl.png")
                line_bot_api.reply_message(event.reply_token, message)
                return
            else:
                out_text = "command not found"
        except IndexError:
            out_text = "input error"

        message = TextSendMessage(out_text)
        line_bot_api.reply_message(event.reply_token, message)
コード例 #4
0
from utils import send_text_message
from aqi import Aqi
from env import YOUR_CHANNEL_ACCESS_TOKEN, YOUR_CHANNEL_SECRET
import json
#=====initialize=====
user_data_filename = "user_data.json"
#user_data=get_user_data(user_data_filename)
user_data = {}
delta = timedelta(days=0,
                  seconds=0,
                  microseconds=0,
                  milliseconds=0,
                  minutes=0,
                  hours=1,
                  weeks=0)
air_data = get_data()
#air_data is a list with dictionaries
data_index = get_data_index(air_data)
#data_index is to indicade the order of site in air_data
data_time = datetime.datetime.now()
#====================

# Channel Access Token
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
# Channel Secret
handler = WebhookHandler(YOUR_CHANNEL_SECRET)


def lambda_handler(event, context):
    # 處理訊息
    @handler.add(MessageEvent, message=TextMessage)
コード例 #5
0
import datetime
from pyecharts.charts import Map
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from crawler import get_data, get_article

today_url = get_article()
if today_url is not None:
    data = get_data(today_url)

    summary = "更新日期:" + str(datetime.date.today()) + ", 数据来源:十堰市政府官网\n累计确诊:" + data[0][1] + "例, 累计出院:" + data[1][1] + "例, 累计死亡:" + data[2][1] + "例"

    map = (
        Map(init_opts=opts.InitOpts(bg_color="#FFFAFA", theme=ThemeType.ROMANTIC, width=1000))
            .add("确诊人数", data, "十堰", is_map_symbol_show=False, )
            .set_global_opts(
            title_opts=opts.TitleOpts(title="十堰疫情确诊人数分布图 (By: Microyu)", subtitle=summary, pos_left="left"),
            visualmap_opts=opts.VisualMapOpts(
                is_piecewise=True,
                pieces=[
                    {"min": 201, "label": '>200人', "color": "#4F060d"},
                    {"min": 101, "max": 200, "label": '101-200人', "color": "#CB2A2F"},
                    {"min": 51, "max": 100, "label": '51-100人', "color": "#E45A4F"},
                    {"min": 10, "max": 50, "label": '10-50人', "color": "#F79D83"},
                    {"min": 1, "max": 9, "label": '1-9人', "color": "#FCEBCF"},
                ],
                range_text=['高', '低'],
            ),
        )
    )
    map.render(path="./index.html")
コード例 #6
0
            weapon[key] = value
    return dict


def create_tuple(weapon, keys):
    tuple = ()
    for key in keys:
        if key != 'Disposition':
            tuple = tuple + (weapon[key], )
    return tuple


########################################################################################################################

warframe_db = sqlite3.connect('db/warframe.sqlite')

i_table = 0
for type in crawler.category:
    guns, keys = crawler.get_data(crawler.url_data, type)
    clean_dict(guns, keys)
    for weapon in guns:
        tuple = create_tuple(weapon, keys)
        try:
            warframe_db.execute('INSERT INTO ' + tables[i_table] +
                                '_weapon VALUES ' + str(tuple))
            warframe_db.commit()
        except Exception as e:
            print("Cannot insert tuple: " + str(e))

warframe_db.close()
コード例 #7
0
        no2aqi = Aqi.get_no2aqi(data['NO2'])
        aqi = max(pm25aqi, pm10aqi, o3aqi, coaqi, so2aqi, no2aqi)
        out = ""
        out=data["SiteName"]+"\n    AQI : "+data["AQI"]+"\n    Now AQI : "\
        +str(aqi)+"\n    空氣品質 : "+data["Status"]+"\n"\
        +"    PM2.5:%8.2f"%pm25aqi+"%6s"%data['PM2.5']+"μg/m3\n"\
        +"    PM10: %8.2f"%pm10aqi+"%6s"%data['PM10']+"μg/m3\n"\
        +"    O3:   %8.2f"%o3aqi+"%6s"%data['O3']+"ppb\n"\
        +"    CO:   %8.2f"%coaqi+"%6s"%data['CO']+"ppm\n"\
        +"    SO2:  %8.2f"%so2aqi+"%6s"%data['SO2']+"ppb\n"\
        +"    NO2:  %8.2f"%no2aqi+"%6s"%data['NO2']+"ppb\n"
        return out


if __name__ == "__main__":
    r = get_data()
    index = get_data_index(r)
    data = r[71]
    pm25aqi = Aqi.get_pm25aqi(data['PM2.5'])
    pm10aqi = Aqi.get_pm10aqi(data['PM10'])
    o3aqi = Aqi.get_o3aqi(data['O3'])
    coaqi = Aqi.get_coaqi(data['CO'])
    so2aqi = Aqi.get_so2aqi(data['SO2'])
    no2aqi = Aqi.get_no2aqi(data['NO2'])
    print("AQI:  %8.2f" % max(pm25aqi, pm10aqi, o3aqi, coaqi, so2aqi, no2aqi))
    print("PM2.5:%8.2f" % pm25aqi, "%6s" % data['PM2.5'], "μg/m3")
    print("PM10: %8.2f" % pm10aqi, "%6s" % data['PM10'], "μg/m3")
    print("O3:   %8.2f" % o3aqi, "%6s" % data['O3'], "ppb")
    print("CO:   %8.2f" % coaqi, "%6s" % data['CO'], "ppm")
    print("SO2:  %8.2f" % so2aqi, "%6s" % data['SO2'], "ppb")
    print("NO2:  %8.2f" % no2aqi, "%6s" % data['NO2'], "ppb")