def getNewLotteryList(lastActivityNo=''): api = HOST + 'feed?LastActivityNo=' + lastActivityNo response = get(api, headers=getHeaders(), verify=False) if response['Status'] == 0: lotteryList = response['LotteryActivityList'] if not lotteryList is None: unJoinList = list( filter(lambda lottery: lottery['JoinState'] != 'JOIN', lotteryList)) or [] global shouldGetMore if len(unJoinList) == 0: if shouldGetMore: getNewLotteryList(lotteryList[-1]['ActivityNo']) return successCount = 0 for item in unJoinList: result = joinLotery(item['ActivityNo']) if result == 1: #成功 successCount += 1 elif result == 3: #被限制 shouldGetMore = False Logger.v('今日头条全民抽奖完成,共成功参与{}次抽奖'.format(successCount)) break else: #未知原因失败了 continue if shouldGetMore: getNewLotteryList(lotteryList[-1]['ActivityNo']) else: shouldGetMore = True else: Logger.e('今日头条全民抽奖失败', '未获取到小抽奖列表') else: Logger.n('今日头条全民抽奖失败', '获取抽奖列表失败,' + response['Msg'])
def getMovies(): url = 'http://maoyan.com/board/7' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' } dataNum = time.strftime('%Y年%m月%d日', time.localtime(time.time())) response = get(url, headers=headers, text=True) result1 = re.findall( '<p class="name"><a href="(.*?)" title="(.*?)" data-act="boarditem-click" data-val=".*?">.*?</a></p>.*?<p class="star">\s+(.*?)\s+</p>.*?<p class="releasetime">(.*?)</p> </div>.*?<div class="movie-item-number score-num">.*?<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p> ', response, re.S) resultStr = dataNum + '最新电影排行\n===========================\n' n = 1 for i in result1: resultStr += '★第' + str(n) + '位 ' resultStr += i[1] + ' ' resultStr += i[4] + i[5] + '\n' resultStr += i[2] + '\n' resultStr += 'http://maoyan.com' + i[0] + '\n' resultStr += i[3] + '\n' n += 1 if (n > 10): # 展示前五个电影 break resultStr += '===========================\n' resultStr += time.strftime('%H:%M:%S', time.localtime( time.time())) + ' from maoyan.com' return resultStr
def getMoreChance(): api = HOST + 'query-activity-task' response = get(api, headers=getHeaders(), verify=False) if response['Code'] == '0': taskList = response['TaskInfos'] if not taskList is None: if len(taskList) == 0: Logger.v('今日头条全民抽奖增加次数失败:没有可以完成的任务') return successCount = 0 for item in taskList: rewardCount = int(item['RewardChance']) times = 5 id = item['TaskNo'] for i in range(0, times): time.sleep(3) if _finishTask(id): successCount += rewardCount else: break time.sleep(5) Logger.v('今日头条全民抽奖成功增加%d次数' % successCount) else: Logger.v('今日头条全民抽奖增加次数失败:没有可以完成的任务') else: Logger.e('今日头条全民抽奖增加次数失败', '未获取到任务列表')
def getWechatUser(openId): accessToken = Tocken().get_access_token() postUrl = ( "https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN" % (accessToken, openId)) result = get(postUrl) return result
def getBigLotteryList(): api = HOST + 'feed?ActivityShowType=LBIGIMAGE' response = get(api, headers=getHeaders(), verify=False) if response['Status'] == 0: lotteryList = response['LotteryActivityList'] if not lotteryList is None: unJoinList = list( filter(lambda lottery: lottery['JoinState'] != 'JOIN', lotteryList)) or [] if len(unJoinList) == 0: Logger.e('今日头条全民大抽奖', '没有未参加的大抽奖项目') else: successCount = 0 for item in unJoinList: result = joinLotery(item['ActivityNo']) if result == 1: successCount += 1 elif result == 3: Logger.v('今日头条全民大抽奖完成,共成功参与{}次抽奖'.format(successCount)) break else: continue else: Logger.e('今日头条全民大抽奖失败', '未获取到大抽奖列表') else: Logger.n('今日头条全民大抽奖失败', '获取大抽奖列表失败,' + response['Msg'])
def getSmallLotteryListAndJoin(): api = HOST + 'index?gzh_number=&type=1' response = get(api, headers=getHeaders(), verify=False) lotteryList = response.get('data', {}).get('self_help_welfare') if lotteryList is None: Logger.e('微信活动抽奖失败', '未获取到大抽奖列表') else: joinLoterryOneByOne(lotteryList)
def _finishTask(id): api = HOST + 'finish-task-callback?TaskNo=' + id + '&Code=0' response = get(api, headers=getHeaders(), verify=False) if response['Code'] == '0': return True else: Logger.e('今日头条全民抽奖完成任务' + id + '失败:', response['Msg']) return False
def getBigLotteryListAndJoin(): global TOKEN api = HOST + 'v2/sponsor/daily?access_token=' + TOKEN + '&from=1' response = get(api, headers=getHeaders(), verify=False) lotteryList = response.get('data', {}).get('lotto') if lotteryList is None: Logger.e('微信抽奖工具失败', '未获取到大抽奖列表') else: joinLoterryOneByOne(lotteryList)
def getServerIp(): res = ['','','',''] data = {'token':'70e91cd606375f987931b47290923d51'} url = r'http://api.ip138.com/query/' result = get(url,data) res[0] = result['ip'] res[1] = result['data'][0] res[2] = result['data'][1] + result['data'][2] + result['data'][3] options = res[0] + '\n'+ res[2] return options
def getGoodList(): res = get(url, verify=False) all = res['floors'] now = [] nowMain = all[0]['data']['result']['goods_list'] for good1 in nowMain: now.append(good1) nowOther = all[1]['data']['result']['goods_list'] for good2 in nowOther: now.append(good2) return _toString(now)
def judgeIfIsJoined(productid): time.sleep(1) global headers headers['Content-Type'] = 'application/json' headers['Content-Length'] = None api = HOST + 'bytyluck.ashx?action=ProductDec&productid={}&sessionUserId={}' response = get(api.format(productid, SESSION_ID), headers=headers, verify=False) if not response['cdrr'] is None: return response['cdrr']['IsPartake'] == 1 return False
def getBigLotteryList(): api = HOST + 'bytyluck.ashx?action=StickProduct' data = {'PrizeId': 0} response = get(api, data=data, headers=headers, verify=False) if not response['cdrr'] is None: lotteryList = response['cdrr']['a_welfare_Product'] if not lotteryList is None: tryToLotteryList(lotteryList, '大抽奖') else: Logger.e('今日头条天天抽奖失败', '未获取到大抽奖列表') else: Logger.n('今日头条天天抽奖失败', '获取大抽奖列表失败,' + response['msg'])
def getMoreAndJoin(next): Logger.v('微信抽奖助手获取下一页:' + next) api = HOST.replace('lottery/', next) response = get(api, headers=getHeaders(), verify=False) squareList = response.get('square') if squareList is None: Logger.e('微信抽奖助手抽奖失败', '未获取到小抽奖列表') else: joinLoterryOneByOne(squareList) next = response.get('links', {}).get('next') if not next is None: getMoreAndJoin(next)
def watchWeather(): Logger.v('开始查询最近天气') adr = getAdress() if adress is None: Logger.e('获取本机地址信息失败','可能是网络问题或接口不可用') city = adr['city'] or '洪山区' if not city is None: res = get(WEATHER_API+city) forecasts = res['data']['forecasts'] result = city + '有异常天气预警:\n' for index in range(0, len(forecasts)): if index == 0 or index > 2: continue forecast = forecasts[index] date = forecast['date'] dayWeather = forecast['dayWeather'] nightWeather = forecast['nightWeather'] dayTemp = forecast['dayTemp'] nightTemp = forecast['nightTemp'] dayWindDirection = forecast['dayWindDirection'] dayWindPower = forecast['dayWindPower'] def formatWeather(): return '白天:'+dayWeather+\ ',温度:'+dayTemp+\ ',夜间:'+nightWeather+\ ',温度:'+nightTemp+\ ','+dayWindDirection+\ '风:'+dayWindPower+\ '.\n' if index == 1: date = '明天' elif index == 2: date = '后天' weather = '' if '雨' in dayWeather or '雪' in dayWeather or '雹' in dayWeather: weather += date+'白天天气异常:'+dayWeather+'.' if '雨' in nightWeather or '雪' in nightWeather or '雹' in nightWeather: weather += date+'夜间天气异常:'+nightWeather+'.' try: if int(dayTemp.split('℃')[0]) < 0 or int(dayTemp.split('℃')[0]) > 35: weather += date+'白天有高温或低温:'+dayTemp+'.' if int(dayWindPower.split('级')[0]) > 5: weather += date+'白天有大风:'+dayWindPower+'.' except Exception as e: Logger.e('天气数据解析错误',e) if len(weather) > 0: result += weather+date +'详细天气:'+formatWeather() if len(result) > 15: result += '请注意防范!\n' Logger.v('有异常天气!'+result) voice(result) else: Logger.v('未发现异常天气')
def getSmallLotteryListAndJoin(page=1): Logger.v('微信抽奖工具小抽奖获取第{}页'.format(page)) global TOKEN api = HOST + 'v1/self/list?access_token=' + TOKEN + '&page={}'.format(page) response = get(api, headers=getHeaders(), verify=False) lotteryList = response.get('data') if lotteryList is None: Logger.e('微信抽奖工具失败', '未获取到小抽奖列表') else: if len(lotteryList) != 0: joinLoterryOneByOne(lotteryList) getSmallLotteryListAndJoin(page + 1)
def joinLotery(productid): time.sleep(1) global headers headers['Content-Type'] = 'application/json' headers['Content-Length'] = None api = HOST + 'bytyluck.ashx?action=JoinPartake&productid={}&sessionUserId={}' response = get(api.format(productid, SESSION_ID), headers=headers, verify=False) if response['result'] == "1": return True else: Logger.e('今日头条天天抽奖失败', response['msg']) return False
def api_raw (self, action, args = {}, req = 'post', user = None, format = 'json'): """Make API request. Wiki.api_raw(action, args = {}, req = 'get'[, user], format = 'json') -> page action: 'action' parameter. args: arguments to send to the API. req: 'get', 'post' or 'httppost'. user: user to perform the request as (defaults to the active user); if there is no active user, no cookie is used (anonymous request). format: 'format' parameter. """ enc = lambda s: s.encode('utf-8') if isinstance(s, unicode) else s urlenc = lambda d: urlencode(dict((enc(k), enc(v)) for k, v in d.iteritems())) try: c = self._cookie(user) except Exception: c = None if req == 'get': GET = args POST = {} else: # req == *'post': GET = {} POST = args GET['action'] = action GET['format'] = format url = 'http://{0}?{1}'.format(self.api_url, urlenc(GET)) httppost = req == 'httppost' if httppost: POST = [(str(k), v if isinstance(v, (list, tuple)) else str(v)) for k, v in POST.iteritems()] else: POST = urlenc(POST) data = get(url, POST, c, c, httppost = httppost, info = True) page, code, real_url = data if real_url != url: # got redirected: POST might not work properly, so fix self.url base = 'http://' + self.url if real_url.endswith(url[len(base):]): self.url = self._fix_url(real_url[:len(base) - len(url)]) self.api_url = self.url + '/api.php' return page
def getLotteryListAndJoin(): api = HOST + 'public' response = get(api, headers=getHeaders(), verify=False) pubicList = response['public'] if pubicList is None: Logger.e('微信抽奖助手抽奖失败', '未获取到大抽奖列表') else: joinLoterryOneByOne(pubicList) squareList = response['square'] if squareList is None: Logger.e('微信抽奖助手抽奖失败', '未获取到小抽奖列表') else: joinLoterryOneByOne(squareList) next = response['links']['next'] if not next is None: getMoreAndJoin(next) global joinedCount Logger.v('微信抽奖助手抽奖完毕:共成功参与{}次抽奖'.format(joinedCount)) joinedCount = 0
def translate(txt): url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' data = { 'from':'AUTO', 'to':'AUTO', 'smartresult':'dict', 'client':'fanyideskweb', 'salt':'1500092479607', 'sign':'c98235a85b213d482b8e65f6b1065e26', 'doctype':'json', 'version':'2.1', 'keyfrom':'fanyi.web', 'action':'FY_BY_CL1CKBUTTON', 'typoResult':'false', 'i':txt } result = get(url,data) res = '翻译结果:%s '% (result['translateResult'][0][0]['tgt']) return res
def api_raw(self, action, args={}, req='post', user=None, format='json'): """Make API request. Wiki.api_raw(action, args = {}, req = 'get'[, user], format = 'json') -> page action: 'action' parameter. args: arguments to send to the API. req: 'get', 'post' or 'httppost'. user: user to perform the request as (defaults to the active user); if there is no active user, no cookie is used (anonymous request). format: 'format' parameter. """ try: c = self._cookie(user) except Exception: c = None if req == 'get': GET = args POST = {} else: # req == *'post': GET = {} POST = args GET['action'] = action GET['format'] = format url = 'http://{0}?{1}'.format(self.api_url, urlencode(GET)) httppost = req == 'httppost' if httppost: POST = [(str(k), v if isinstance(v, (list, tuple)) else str(v)) for k, v in POST.iteritems()] else: POST = urlencode(POST) data = get(url, POST, c, c, httppost=httppost, info=True) page, code, real_url = data if real_url != url: # got redirected: POST might not work properly, so fix self.url base = 'http://' + self.url if real_url.endswith(url[len(base):]): self.url = self._fix_url(real_url[:len(base) - len(url)]) self.api_url = self.url + '/api.php' return page
# V0.0.1 测试版 # JSON参数(此版本处理的): # { # target_url: string, fetch的网址7 # priority: int 优先级 # } import time from fetch import get while True: get('http://www.freebuf.com/') time.sleep(600)
def getSSQResult(number=None): API = HOST + ('/lottery/ssq/aim_lottery?expect={}'.format(number) if not number is None else '/lottery/ssq/latest') result = get(API) return result['data']['openCode']
def tree_from_url (url, verbose = False): """Convenience function: return an HTMLTree instance for a given URL.""" return HTMLTree(get(url), verbose)
def get_current_selfmenu_info(self, accessToken): postUrl = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=%s" % accessToken result = get(postUrl) print('get_current_selfmenu_info:', result)
def delete(self, accessToken): postUrl = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=%s" % accessToken result = get(postUrl) print('delete:', result)
def query(self, accessToken): postUrl = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=%s" % accessToken result = get(postUrl) print('query:', result)
def getAdress(): global adress if adress is None: res = get(IP_TO_ADRESS_API) adress = res['data'] return adress