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)
コメント
コメントを投稿