Задать вопрос
  • Как подключить css файл во flask?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Ответ написан
    Комментировать
  • Как создать hover поверх элемента?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Нужно, чтобы при наведение на любую из кнопку верхний и нижний бордер меняли цвет.

    Ответ написан
    2 комментария
  • Как запустить сразу несколько процессов с разными прокси?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Несколько вариантов:

    - How-To: 4 Essential Parts of Multiprocessing in Python (не подходит для синхронизации доступа к файлу, который используется часто, так как может привести к снижению производительности):
    from multiprocessing import Lock, Pool
    
    lock = Lock()
    
    with lock:
        driver = uc.Chrome(seleniumwire_options=wire_options, options=options)

    - Multiprocessing Manager Example in Python (подходит только для синхронизации доступа к простым объектам, таким как списки):
    from multiprocessing import Manager, Pool
    
    manager = Manager()
    
    def get_whoer(proxy: str):
        # ...
    
    if __name__ == '__main__':
        """ip:port:login:password"""
        with Pool(processes=2) as p:
            p.map(get_whoer, proxy_list)

    - How Python Keeps Your Queues Thread-Safe (подходит для синхронизации доступа к любым объектам, но код немного сложнее):
    from queue import Queue
    from multiprocessing import Pool
    
    queue = Queue()
    
    def get_whoer(proxy: str):
        # ...
    
    if __name__ == '__main__':
        """ip:port:login:password"""
        proxy_list = list(map(str.rstrip, open('proxy.txt').readlines()))
        for proxy in proxy_list:
            queue.put(proxy)
        with Pool(processes=2) as p:
            p.map(get_whoer, range(len(proxy_list)))
    Ответ написан
    Комментировать
  • Как создать небольшой Интернет Магазин без Woocommerce?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    преподаватель сказал, что нам нельзя использовать Woocommerce, Elementor для создания магазина.

    1. Создать 3 новых типа записей "Товар", "Категория товара" и "Корзина", с необходимыми полями.
    2. Написать php код, который будет добавлять товар в корзину, если кликнули на соответствующую кнопку.
    3. Наполнить тестовыми товарами и протестировать работу своего велосипеда.
    Подскажите, пожалуйста, как можно создать более менее рабочий магазин?

    и прочие функции типичного Интернет магазина.

    Я бы начал с ТЗ, а не реализации, т.к. слово "прочие функции" слишком широко трактуется.
    Не очень понимаю, как возможно реализовать "добавление товара в корзину"

    Пример работы через сессии:
    if (!session_id()) {
        session_start();
    }
    
    function test_session() {
        if (!session_id()) {
            session_start();
        }
    }
    
    add_action('init', 'test_session', 1);

    Функция добавление товара в корзину:
    function add_to_cart($id, $q = 1) {
        if (isset($_SESSION['cart'][$id])) {
            $_SESSION['cart'][$id] += $q;
        } else {
            $_SESSION['cart'][$id] = $q;
        }
    }

    Функция получения товаров из корзины:
    function show_cart() {
        if (!empty($_SESSION['cart'])) {
            foreach($_SESSION['cart'] as $id => $q) {
                $product = get_post($id);
                echo "<div>{$product->post_title} (x$q)</div>";
            }
        } else {
            echo "Cart has empty";
        }
    }
    Ответ написан
    Комментировать
  • Как обойти проверку на бота cloudflare с помощью undetected-chromedriver?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    Как обойти проверку на бота cloudflare с помощью undetected-chromedriver?

    Либо реверсить капчу, либо разгадывать через специализированные сервисы (платно).
    Ответ написан
    Комментировать
  • Можно ли убрать подчеркивание ссылки в HTML не прибегая к CSS?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Можно ли убрать подчеркивание ссылки в HTML не прибегая к CSS и атрибуту style

    Нет
    Ответ написан
    Комментировать
  • Как новичку въехать в рекламу в яндекс.директ?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    За сколько времени можно въехать в тему?

    Зависит от Вас. Прочитать документацию и создать свои РК - быстро, а вот понять, как на самом деле все работает (а не как заявлено) - недели, месяцы, может, годы.
    Есть ли какие-нибудь хорошие курсы/ресурсы по делу?

    Рабочие схемы, которые приносят хорошую прибыль - не выкладывают.
    Может быть, лучше обратиться к профессионалу?

    Если не планируете в дальнейшем на этом зарабатывать, то это самый дешёвый вариант.
    Какими сервисами лучше пользоваться?

    Оригинальными + свой бот с авто обучением. Много слышал, как эти сервисы помогают, но не встречал ни одного человека в живую, чтобы он мне это подтвердил, обычно, наоборот рассказывают, что либо так же, как в оригинале, либо хуже. Видимо, мои тесты не исключение, а правило.

    За последние 2 года, эффективность данного сервиса резко упала, вероятно, за счёт исчезновения конкуренции. Сложность ведения и стоимость входа в рекламу выросли пропорционально.
    Ответ написан
    3 комментария
  • Почему цикл не корректно работает?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    def sum_of_square_digits(n):
        res = 0
        while n > 0:
            d = n % 10
            res += d * d
            n = n // 10
        return res
    
    def is_happy_number(n):
        for _ in range(10):
            n = sum_of_square_digits(n)
            if n == 1:
                return True
        return False
    
    print(is_happy_number(8))  # False
    print(is_happy_number(7))  # True
    Ответ написан
    4 комментария
  • Сколько ждать переезда сайта с http?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    1.5 недели назад отправил запрос на переезд сайта с http на https в веб мастере, до сих пор жду изменений, сколько мне ждать еще кто знает?

    Если Вы до уведомления в вебмастере яндекса переписали .htaccess с нужными редиректами, то уведомление носит лишь формальный характер. В моем случае, переезд занимает 1-3 недели.
    Ответ написан
    Комментировать
  • Проблемы с индексацией страниц. Как исправить?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    является ли это критичной ошибкой? или можно забить на нее?

    Является (дубли контента в рамках разных страниц), забить можно, законом не запрещено.

    Прописать в файле .htaccess:
    RewriteEngine On
    
    # 301 redirection from http to https
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    # 301 redirection from www to non www
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
    Ответ написан
  • Как создать json список со вложенными словарями в python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть ли возможность в python прописать длинный многоуровневый список со словарями и вставлять туда переменные чтобы по итогу я мог сгенерировать из него JSON?

    1. Вначале формируете словарь (или любые другие типы данных) со всеми необходимыми свойствами.
    2. Преобразуете п1. в json методом json.dumps().
    import json
    
    krevetko = 'иа креветкО!'
    
    data = {
        "form_id": 1345,
        "fields": [
            {"id": 1, "value": krevetko},  # <-- this is, krevetko variable
            {"id": 2, "value": 10306.25},
            {"id": 3, "value": {"item_id": 845}},
            {
                "id": 4,
                "value": [
                    {
                        "row_id": 0,
                        "cells": [
                            {"id": 6, "value": "2017-08-26"},
                            {"id": 9, "value": 10000}
                        ]
                    }
                ]
            }
        ]
    }
    
    print(json.dumps(data))
    
    # {"form_id": 1345, "fields": [{"id": 1, "value": "\u0438\u0430 \u043a\u0440\u0435\u0432\u0435\u0442\u043a\u041e!"}, {"id": 2, "value": 10306.25}, {"id": 3, "value": {"item_id": 845}}, {"id": 4, "value": [{"row_id": 0, "cells": [{"id": 6, "value": "2017-08-26"}, {"id": 9, "value": 10000}]}]}]}

    Больше примеров:
    import json
    
    data_dict = {"name": "John", "age": 30}
    data_list = [1, 2, 3, 4]
    data_string = "Hello, world!"
    data_string_cyrillic = "иа креветкО!"
    data_number = 42
    data_boolean = True
    data_none = None
    
    print(json.dumps(data_dict))  # {"name": "John", "age": 30}
    print(json.dumps(data_list))  # [1, 2, 3, 4]
    print(json.dumps(data_string))  # "Hello, world!"
    print(json.dumps(data_string_cyrillic))  # "\u0438\u0430 \u043a\u0440\u0435\u0432\u0435\u0442\u043a\u041e!"
    print(json.dumps(data_number))  # 42
    print(json.dumps(data_boolean))  # true
    print(json.dumps(data_none))  # null
    Ответ написан
    1 комментарий
  • Как реализовать две цены в карточках товаров (вариативных) в каталоге?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Примерно так:
    function test() {
        global $product;
    
        if($product->is_type('variable')) {
            $variations = $product->get_available_variations();
            echo '<div class="custom-variations-wrapper">';
    
            foreach($variations as $variation) {
                if(isset($variation['display_price'])) {
                    $variation_id = $variation['variation_id'];
                    $variation_price = $variation['display_price']; // or 'display_regular_price'
    
                    echo '<form action="' . esc_url($product->add_to_cart_url()) . '" method="post" enctype="multipart/form-data">';
                    echo '<div class="variation" data-variation-id="' . esc_attr($variation_id) . '">';
                    echo '<p class="price">' . sprintf(__('%s'), wc_price($variation_price)) . '</p>';
                    echo '<input type="hidden" name="product_id" value="' . esc_attr($product->get_id()) . '" />';
                    echo '<input type="hidden" name="variation_id" value="' . esc_attr($variation_id) . '" />';
                    foreach($variation['attributes'] as $attribute => $value) {
                        echo '<input type="hidden" name="' . esc_attr($attribute) . '" value="' . esc_attr($value) . '">';
                    }
                    echo '<button type="submit">' . __('В корзину') . '</button>';
                    echo '</div>';
                    echo '</form>';
                }
            }
    
            echo '</div>';
        }
    }
    
    add_action('woocommerce_after_shop_loop_item', 'test', 20);
    Ответ написан
    5 комментариев
  • Имитация действий пользователя на сайте?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Существует ли способ имитировать эти действия так, чтобы JavaScript успешно их распознавал

    Написать на python + selenium алгоритм движение курсора (например, используя кривые безье и катмулл рома, классическую линейную интерполяцию + добавить шума) мыши по координатам, чтобы оно выглядело наиболее "человечным".
    Существует ли способ имитировать эти действия так, чтобы JavaScript успешно их распознавал, но без использования библиотеки PyAutoGUI или аналогичных, которые контролируют реальный курсор?

    Всего 2 варианта:
    - Запускать selenium в headless режиме, тогда не будет визуального окна и курсор мыши не будет перемещаться "в никуда", хотя для js на этом сайте все будет выглядеть "человечно".
    - Запускать selenium без headless режима, тогда курсор будет перемещаться в указанную область окна браузера.
    Ответ написан
  • Как вывести все элементы списка из массива списков json в Python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Пример файла JSON

    Это не json, а python список.
    Например мне нужно найти список с id 10 и сохранить все его элементы в отдельный

    Т.к. мысля закончилась, предположу, что отдельный - это "отдельный переменная":
    list_data

    list_data = [
        {
            "id": 121,
            "type": "form_link",
            "name": "cust",
            "tooltip": "",
            "value": {
                "task_id": 432122,
                "task_ids": [
                    1236733
                ],
                "subject": "test_event"
            }
        },
        {
            "id": 122,
            "type": "text",
            "name": "Регион",
            "tooltip": "",
            "value": "MGN."
        },
        {
            "id": 129,
            "type": "text",
            "name": "Проблема",
            "tooltip": "Заправьте картридж",
            "value": "TEST"
        },
        {
            "id": 10,
            "type": "person",
            "name": "Ответственный",
            "tooltip": "none",
            "value": {
                "id": 888,
                "first_name": "Pavel",
                "last_name": "Perkov",
                "email": "example@anime.com",
                "type": "user",
                "status": "WORKING",
                "web_session_settings": {
                    "disable": False
                },
                "mobile_session_settings": {
                    "disable": False
                }
            }
        }
    ]


    # mega function
    def test(data, target_id):
        for item in data:
            if item.get('id') == target_id:
                return item
        return None
    
    res = test(list_data, 10)
    print(res)
    
    # {'id': 10, 'type': 'person', 'name': 'Ответственный', 'tooltip': 'none', 'value': {'id': 888, 'first_name': 'Pavel', 'last_name': 'Perkov', 'email': 'example@anime.com', 'type': 'user', 'status': 'WORKING', 'web_session_settings': {'disable': False}, 'mobile_session_settings': {'disable': False}}}
    Ответ написан
    1 комментарий
  • Почему не работает код бота telebot?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    item2 = types.KeyboardButton(text="Семья в России"),

    Уберите запятые в конце строк, чтобы не было проблем с кортежами.

    bot.reply_to это откуда? По идее, должно быть bot.send_message, исправил код, допишите все нужные кнопки и попробуйте, должно заработать:
    @bot.message_handler(commands=["start"])
    def start(message):
        keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
        item1 = types.KeyboardButton(text="Основные документы гражданина Российской Федерации")
        # прочее...
    
        keyboard.add(item1, item2)
        # прочее...
    
        bot.send_message(
            message.chat.id,
            f"Привет",
            f"{message.from_user.first_name}! Я бот, который поможет тебе. Что ты хочешь узнать..?",
            reply_markup=keyboard)
    Ответ написан
    1 комментарий
  • Проблема с плагином кастомной оплаты?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Здесь что лежит?
    $response_body['data']['attributes']['redirect_url'];

    А здесь?
    $response_body['data']['attributes'];
    Подозреваю, что нужно так:
    $response_body['data']['attributes']['hpp_url'];
    Еще интересный момент со статусом оплаты [status] => process_pending, возможно, платеж еще не обработан и нужно время.
    Ответ написан
  • Откуда React берет объект для инициализации хуков без пути к нему?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Реакт использует контекст, чтобы управлять хуками и их состоянием. Когда компонент реакта рендерится, реакт устанавливает ReactCurrentDispatcher (текущий диспетчер хуков) в соответствующий объект диспетчера для этого рендера. Это позволяет хукам (например, useState) обращаться к текущему состоянию и методам жизненного цикла компонента без необходимости явно передавать какие либо ссылки на компоненты или их состояние.

    https://github.com/facebook/react/issues/14022#iss...
    Переменная ReactCurrentDispatcher.current по умолчанию имеет значение null, потому что вне контекста рендера компонента использование хуков не имеет смысла. Если Вы попытаетесь использовать хук вне компонента (в обычной функции JavaScript), ReactCurrentDispatcher.current будет null, что приведет к ошибке, указывающей на неверный вызов хука.

    Реализация хуков находится в исходном коде реакта. Там же можно посмотреть, как реакт реализует useState и прочие хуки.

    How hooks work | How React Works
    Заметка о том, как работают хуки в React
    Первое погружение в исходники хуков
    Ответ написан
    4 комментария
  • Как создать отдельные категории для страниц wordpress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Добавление поддержки категорий (и меток) для страниц, functions.php:
    function test() {
        register_taxonomy_for_object_type('category', 'page');
        register_taxonomy_for_object_type('post_tag', 'page');
    }
    
    add_action('init', 'test');
    Ответ написан
    Комментировать
  • Как обрезать описания рубрик в админке Worpress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Изменяя уже существующие колонки, есть вероятность, что эти колонки может изменить и разработчик любого из плагинов или сами разрабы WP, соответственно, в определенный момент, привязки на эти колонки могут перестать работать. Я использую более надежный способ, добавление своей колонки с нужным мне содержимым.

    functions.php:
    // add custom column
    function add_custom_column($columns) {
        $columns['short_description'] = __('Краткое описание', 'my_custom_plugin');
        unset($columns['description']);
        return $columns;
    }
    
    add_filter('manage_edit-category_columns', 'add_custom_column');
    
    // fill custom column
    function fill_custom_column($deprecated, $column_name, $term_id) {
        if('short_description' === $column_name) {
            $term = get_term($term_id);
            echo mb_substr($term->description, 0, 20) . (mb_strlen($term->description) > 20 ? '…' : '');
        }
    }
    
    add_action('manage_category_custom_column', 'fill_custom_column', 10, 3);
    Ответ написан
    1 комментарий