Example #1
0
 def voteFromFile(self, filePath, name, delay):
     url, msg = self.getLinkWithNamecheck(name)
     if not url: return msg
     INFO('验证成功,倒计时13s后开始投票给(%s),如果有任何疑问,您可以使用(ctrl + c)主动退出程序' % name)
     countdown(13)
     INFO('投票开始(%s)' % name)
     return self.voteBatchNoSafeCheck(filePath, url, name, delay)
Example #2
0
def func(args, fname):
    bot = botInit(args)
    nname, ename, url = bot.find_link_by_name(args.name)
    if url:
        threading.current_thread().setName(os.path.basename(fname))
        INFO(bot.voteBatchNoSafeCheck(fname, url, args.name, args.delay))
    else:
        INFO('(%s)不是有效的成员姓名,请检查你的输入' % name)
    bot.close()
Example #3
0
def batchVoteMultiProcessing(args):
    if args.file and not os.path.exists(args.file):
        ERROR('(%s)文件未找到' % args.file)
        return

    s = RAWINPUT("确认要投票给(%s),请再次输入成员姓名:" % args.name)
    if s != args.name:
        ERROR('输入(%s)与预期不符,退出程序' % s)
        return

    bot = botInit(args)
    INFO("验证成员姓名(%s)合法性" % args.name)
    nname, ename, url = bot.find_link_by_name(args.name)
    if not url:
        ERROR('(%s)不是有效的成员姓名,请检查你的输入' % args.name)
        return

    INFO('验证成功,倒计时13s后开始投票给(%s),如果有任何疑问,您可以使用(ctrl + c)主动退出程序' % args.name)

    def ext(signum, frame):
        print('')
        ERROR('您使用(ctrl + c)主动退出了程序')
        exit(0)

    signal.signal(signal.SIGINT, ext)
    signal.signal(signal.SIGTERM, ext)

    countdown(13)
    INFO('投票开始(%s)' % args.name)

    if args.pnum[0] <= 1:
        INFO(bot.voteBatchNoSafeCheck(args.file, url, args.name, args.delay))
        bot.close()
    else:
        bot.close()
        dirname = '%s-%s' % (args.name, args.file)
        tempFileCount = ft.split(args.file, dirname,
                                 args.pnum[1] if args.pnum[1] > 0 else 1024)
        p = Pool(cpu_count() *
                 2 if (args.pnum[0] > cpu_count() * 2) else args.pnum[0])
        for partnum in range(tempFileCount):
            fname = os.path.join(dirname, 'part%04d' % partnum)
            p.apply_async(func, (args, fname))
        p.close()
        p.join()
        fname = os.path.join(dirname, args.file + ".log")
        INFO('合并文件到(%s)' % fname)
        ft.merge(dirname, fname)
Example #4
0
def oneVote(arg):
    if arg.serial and None in _serialCheck(arg.serial[0], arg.serial[1]):
        ERROR('(%s,%s)错误的序列号格式' % (arg.serial[0], arg.serial[1]))
    else:
        bot = botInit(arg)
        INFO(bot.vote(arg.serial[0], arg.serial[1], arg.name))
        bot.close()
Example #5
0
 def initVoteInfo(self):
     fp = os.path.abspath('numberList.pickle')
     self.team, self.number = pt.load(fp)
     if not self.number or not self.team:
         self.team = self.getTeamList()
         self.number = self.getNumberList(self.team)
         pt.save(fp, (self.team, self.number))
     else:
         self.get('https://akb48-sousenkyo.jp/akb/search/results?t_id=1',
                  '.wrap h1')
     INFO("成员列表获取成功")
Example #6
0
 def voteOneByOne(self, name, out=False):
     url, msg = self.getLinkWithNamecheck(name, False)
     if not url: return [msg]
     id = 0
     while True:
         s = RAWINPUT('请输入序列号(输入exit退出):')
         if s == 'exit': return '退出脚本'
         s1, s2 = self.serialCheck(s)
         if s1 and s2:
             state = self.voteNoSafeCheck(s1, s2, name, url)
         else:
             state = State(s.strip(), '', name, url, ('投票エラー', '投票码格式错误'))
         INFO('%d, ' % id + str(state))
         if not out:
             FILE('%d, ' % id + str(state))
         id += 1
Example #7
0
 def voteBatchNoSafeCheck(self, filePath, url, name, delay):
     id = 0
     for serial in self.readline(filePath, 100):
         if not serial: break
         serial = serial.strip()
         if len(serial) > 0:
             s1, s2 = self.serialCheck(serial)
             if s1 and s2:
                 state = self.voteNoSafeCheck(s1, s2, name, url)
             else:
                 state = State(serial.strip(), '', name, url,
                               ('投票エラー', '投票码格式错误'))
             INFO("%s, %d, " % (threading.current_thread().name, id) +
                  str(state))
             FILE("%d, " % id + str(state), filePath)
             id += 1
     return '投票完成(%s)' % name
Example #8
0
 def __init__(self, headless=False, noimages=False):
     self.driver = self.getBrowser(headless, noimages)
     INFO('浏览器初始化完成' + ('(headless)' if headless else '') +
          ('(noimages)' if noimages else ''))
Example #9
0
def stepVote(arg):
    bot = botInit(arg)
    INFO(bot.voteOneByOne(arg.name, arg.out))
    bot.close()