示例#1
0
    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()
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
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()
示例#5
0
    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)
示例#6
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