def handle(self, *args, **options): today = datetime.date.today() end_date = date_plus_days(today, days=1) start_date = date_plus_days(end_date, days=-360) # --------------------------- # Задать дату начала парсинга # --------------------------- if options.get('start'): date = str_to_date(options['start']) if date: start_date = date # ------------------------------ # Задать дату окончания парсинга # ------------------------------ if options.get('end'): date = str_to_date(options['end']) if date: end_date = date root_url = "http://jsmnew.doko.link/service_api.php" key = "d296c101daa88a51f6ca8cfc1ac79b50" urla = "{}?key={}&module=yahoo&startDate={}&endDate={}".format(root_url, key, start_date.strftime("%Y-%m-%d"), end_date.strftime("%Y-%m-%d")) fname = "ylots.json" r = requests.post(urla) content = r.json() f = open_file(fname, "w+") f.write(json.dumps(content)) f.close()
def handle(self, *args, **options): now = datetime.datetime.now() #seven_days_ago = date_plus_days(now, days=-7) #start_date = seven_days_ago.strftime('%Y-%m-%d') year_ago = date_plus_days(now, days=-365) start_date = year_ago.strftime('%Y-%m-%d') end_date = now.strftime('%Y-%m-%d') if options.get('start_date'): date = str_to_date(options['start_date']) if date: start_date = date if options.get('end_date'): date = str_to_date(options['end_date']) if date: end_date = date api = APIJDOCS() #print(start_date, end_date) if options.get('check_lot'): # UP2618689 / m28195967844 test_lot = api.load_exmple_from_old_format(options['check_lot']) api.prepare_data([test_lot]) return if options.get('get_lots'): #print(json_pretty_print(api.get_lots(start_date, end_date))) lots = api.get_lots(start_date, end_date) #print(len(lots)) api.prepare_data(lots)
def handle(self, *args, **options): wipe() #exit() # ---------------------------------- # Парсим всегда с завтрашнего числа, # чтобы увидеть все сеансы # ---------------------------------- today = datetime.date.today() start_date = date_plus_days(today, days=1) end_date = date_plus_days(today, days=10) # --------------------------- # Задать дату начала парсинга # --------------------------- if options.get('start'): date = str_to_date(options['start']) if date: start_date = date # ------------------------------ # Задать дату окончания парсинга # ------------------------------ if options.get('end'): date = str_to_date(options['end']) if date: end_date = date if start_date > end_date: end_date = date_plus_days(start_date, days=1) rubrics, genres = get_rubrics() cur_date = start_date while cur_date <= end_date: RSeances.objects.filter(date=cur_date).delete() for genre in genres: logger.info('{} {}'.format(genre.tag, genre.name)) if 'cinema' in genre.tag: get_cinema_seances(cur_date) else: get_seances(genre.tag, cur_date) cur_date = date_plus_days(cur_date, days=1)
def update_accounts(): """Обновляем аккаунты для спама, если аккаунт отключен и прошло больше 24 часов, тогда включаем такой аккаунт""" accounts = EmailAccount.objects.filter(is_active=False) now = datetime.datetime.now() minus24hours = date_plus_days(now, hours=-24) for account in accounts: if account.updated < minus24hours: account.is_active = True account.save()
def test_clear_sent(self): """Тестирование сброса счетчика отправленных сообщений если дата у нас не совпала с той, когда телефон обновлен, тогда сбрасываем счетчик отправленных сообщений """ today = datetime.datetime.today() new_phone = SMSPhone.objects.create() phone_updated = new_phone.updated.strftime('%Y-%m-%d') self.assertEqual(phone_updated, today.strftime('%Y-%m-%d')) self.assertEqual(new_phone.sent, 0) yesterday = date_plus_days(today, days=-1) SMSPhone.objects.filter(pk=new_phone.id).update( updated=yesterday, sent=500, ) phone = SMSPhone.objects.filter(pk=new_phone.id).first() self.assertEqual(phone.updated, yesterday) self.assertEqual(phone.sent, 500) phone.save() self.assertEqual(phone.sent, 0)
def handle(self, *args, **options): s = requests.Session() today = datetime.date.today() end_date = date_plus_days(today, days=1) start_date = date_plus_days(end_date, days=-1) sessid = 'vg8gii226edl4iv7nfm5fsfd25' # ------------------ # Задать дату начала парсинга # ------------------ if options.get('start'): date = str_to_date(options['start']) if date: start_date = date # --------------------- # Задать дату окончания парсинга # --------------------- if options.get('end'): date = str_to_date(options['end']) if date: end_date = date # ------------- # Задать сессию # ------------- if options.get('sessid'): sessid = options['sessid'] s.cookies.update({'PHPSESSID': sessid}) urla = 'https://jsmnew.doko.link/jp_jsm_balance.php' urla = 'https://jsmnew.doko.link/jp_victoria_balance_ajax.php' params = { 'client': 181, 'an': end_date.year, 'luna': 'все', 'dinterv': 1, 'datas': start_date.strftime('%d.%m.%Y'), 'datae': end_date.strftime('%d.%m.%Y'), } headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US,en;q=0.5', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Cookie': 'PHPSESSID=%s' % sessid, 'Host': 'jsmnew.doko.link', 'Pragma': 'no-cache', 'Referer': 'https://jsmnew.doko.link/menu.php', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:81.0) Gecko/20100101 Firefox/81.0', } r = s.get(urla, params=params, headers=headers) tree = html.fromstring(r.text) spans = tree.xpath('//span') for i, span in enumerate(spans): if span.text and 'ОБЩИЙ БАЛАНС' in span.text: print(spans[i + 1].text) break