main.py

from asyncio.log import logger
import logging
import random
import argparse

from credentials import KEYWORDS
from instagram import Instagram
from instagram import INSTAGRAM_ID,INSTAGRAM_PASSWORD
from utils import init_loggers, random_sleep


if __name__ == '__main__':
    init_loggers()

    #IDとpasswordをコマンドライン引数から取得する
    parser = argparse.ArgumentParser()
    parser.add_argument('id')
    parser.add_argument('password')
    #コマンドライン引数を解析する
    account = parser.parse_args()

    #IDをmodelに送り、オブジェクトを作成する。
    instagram = Instagram()
    INSTAGRAM_ID = account.id
    INSTAGRAM_PASSWORD = account.password
    try:
        #有効フォロウィーのアカウントDBからを取得
        active_followee_accounts = ['kotobike_5100']
        #ログイン
        instagram.login()
        
        #フォロー機能1
        #有効フォロウィーのアカウントを取得
        parent_accounts = active_followee_accounts
        break_flg1 = 0
        j=0
        #フォローした人数が15人を超えるまでフォロー処理1を繰り返す(とりあえず、こちらのEOFはなしで進める)
        while break_flg1 == 0:
            #有効フォロウィーのアカウントを選択
            #有効フォロウィーのアカウントidをセット
            parent_id = parent_accounts[j]
            #有効フォロウィーのフォロワーを取得
            followers = instagram.get_followers(parent_id)
            #見たフォロワーの人数(フォロワー取得用シーケンス番号)
            cnt=0
            #フォローした人数
            i=0
            #フォローをフォロー人数15人またはEOFまで繰り返す
            while (i < 15) and (cnt < len(followers)):
                #アカウントをひとつ選択(ランダムにしてもいいが、以前フォローしていないか確認するため(画面遷移をしない)、順番でいいと思われる(また、ランダムにすると処理が重くなるし、それに、この処理で、何回か同じアカウントを取得する可能性もある(判定処理を付けるのめんどくさい)))
                #以前フォローしているか確認
                followed_before_flg = 0

                #以前フォローしていなければプロフィールに移動
                if followed_before_flg == 0:
                    instagram.show_profile_page(followers[cnt])
                    #フォロー(フォローしていない、かつ、フォロワーにいない場合)
                    result = instagram.follow()
                    #DBにアカウント登録(_folowees)
                    if result == 1 :
                        i=i
                        logger.info("フォロー:" + followers[cnt])
                    #フォローした人数を足す
                    i = i + result
                    #見たフォロワーの人数を1足す
                    cnt+=1
                    #フォローした人数が15に達した場合、フォロー処理1を抜ける
                    if(i==15):
                        break_flg1 = 1

        #フォロー機能2
        #有効フォロウィーのアカウントを取得
        parent_accounts = active_followee_accounts
        break_flg1 = 0
        j=0
        #フォローした人数が15人を超えるまでフォロー処理1を繰り返す(とりあえず、こちらのEOFはなしで進める)
        while break_flg1 == 0:
            #有効フォロウィーの最新の投稿にいいねしたアカウントを取得
            like_accounts = instagram.get_like_accounts(parent_accounts[j])
            #見たアカウントの人数(フォロワー取得用シーケンス番号)
            cnt=0
            #フォローした人数
            i=0
            #フォローをフォロー人数15人またはEOFまで繰り返す
            while (i < 15) and (cnt < len(like_accounts)):
                #アカウントをひとつ選択
                #以前フォローしているか確認
                followed_before_flg = 0
                #以前フォローしていなければプロフィールに移動
                if followed_before_flg == 0:
                    instagram.show_profile_page(like_accounts[cnt])
                    #フォロー(フォローしていない、かつ、フォロワーにいない場合)
                    result = instagram.follow()
                    #DBにアカウント登録(_folowees)
                    if result == 1 :
                        #登録処理
                        logger.info("フォロー:" + like_accounts[cnt])
                    #フォローした人数を足す
                    i = i + result
                    #見たフォロワーの人数を1足す
                    cnt+=1
                    #フォローした人数が15に達した場合、フォロー処理1を抜ける
                    if(i==15):
                        break_flg1 = 1
        
        #いいね機能
        #検索条件をDBから取得する
        keywords = ['魚', '釣り', '数学']#仮
        for key in keywords:
            #検索して、最新の投稿10件のurlを取得する
            articles = instagram.search(key)
            #最新の投稿に10件いいねする
            for url in articles:
                instagram.like(url)
            #時間があればガベージコレクションとlikeを30件は必ずするというようなことを行いたい。あとpasswordとidはまた取得しなおしたい。
            #ブラウザを閉じるところまで行いたい
    except Exception as e:
        print(e)
    finally:
        # instagram.quit()
        random_sleep(300, 600)

コメント

このブログの人気の投稿

utils.py

instagram.py

drivers.py