MediaCrawler/main.py

54 lines
1.5 KiB
Python
Raw Normal View History

import argparse
2023-07-29 07:35:40 +00:00
import asyncio
import sys
import config
2023-07-29 07:35:40 +00:00
import db
from base import proxy_account_pool
from media_platform.douyin import DouYinCrawler
from media_platform.xhs import XiaoHongShuCrawler
class CrawlerFactory:
@staticmethod
def create_crawler(platform: str):
if platform == "xhs":
return XiaoHongShuCrawler()
elif platform == "dy":
return DouYinCrawler()
else:
2023-07-29 07:35:40 +00:00
raise ValueError("Invalid Media Platform Currently only supported xhs or dy ...")
async def main():
# define command line params ...
parser = argparse.ArgumentParser(description='Media crawler program.')
2023-07-29 07:35:40 +00:00
parser.add_argument('--platform', type=str, help='Media platform select (xhs|dy)', choices=["xhs", "dy"],
default=config.PLATFORM)
parser.add_argument('--lt', type=str, help='Login type (qrcode | phone | cookie)',
choices=["qrcode", "phone", "cookie"], default=config.LOGIN_TYPE)
# init account pool
account_pool = proxy_account_pool.create_account_pool()
# init db
if config.IS_SAVED_DATABASED:
await db.init_db()
args = parser.parse_args()
2023-07-29 07:35:40 +00:00
crawler = CrawlerFactory.create_crawler(platform=args.platform)
crawler.init_config(
2023-07-29 07:35:40 +00:00
platform=args.platform,
login_type=args.lt,
account_pool=account_pool
)
await crawler.start()
if __name__ == '__main__':
try:
2023-07-29 07:35:40 +00:00
# asyncio.run(main())
asyncio.get_event_loop().run_until_complete(main())
except KeyboardInterrupt:
sys.exit()