• Как сделать расположение списка элементов ёлочкой?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Пример сетки, оформлять не стал:
    Ответ написан
    1 комментарий
  • Можно ли автоматически урезать качество изображений в React?

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

    CSS object-fit.
    либо же это должно происходить на сервере?

    На сервере, сразу получать изображение необходимого размера.
    Ответ написан
    Комментировать
  • Как изменить только главную страницу WordPress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Подключение отдельного css файла для главной страницы, functions.php:
    function test() {
        if (is_home() || is_front_page()) {
            wp_enqueue_style('home-style', get_stylesheet_directory_uri() . '/path/to/style-from-home.css');
        }
    }
    
    add_action('wp_enqueue_scripts', 'test');
    Ответ написан
    2 комментария
  • Вредит ли http-код 499 (разрыв соединения по инициативе клиента) поисковой оптимизации?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Нет, 499 код не является стандартным кодом http (а является специфическим для nginx) и не влияет на seo.
    Ответ написан
    Комментировать
  • Как отрисовать страницу для парсинга?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как срендерить весь javascript для парсинга?

    Использовать selenium.
    Selenium WebDriver Chrome слишком долго прогружает, ещё и палиться как Вебдрайвер.

    Обновите железо, используйте selenium stealth.
    Ответ написан
    Комментировать
  • Как подключить 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 комментарий