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

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Ладно, упарываться, так упарываться. Клики + получение новых элементов для кликов + прокрутка + все повторить, но не смешивать. Кликнуть на ролик, вставить и выполнить код в консоль браузера:
    async function clickByElement() {
        let element = document.querySelector('.css-1swe2yf-DivActionContainer.esns4rh0 [aria-pressed="false"]');
        if (!element) return null;
    
        console.log('Клик!')
        element.click();
        while (element.getAttribute('aria-pressed') !== 'true') {
            await new Promise(resolve => setTimeout(resolve, 100));
        }
        
        return true;
    }
    
    async function clickAllElements() {
        let foundClickable = false;
        while (await clickByElement() !== null) {
            foundClickable = true;
        }
        
        return foundClickable;
    }
    
    async function scrollToBottomAndClickAgain() {
        const scrollContainer = document.querySelector('.css-1qp5gj2-DivCommentListContainer.ekjxngi3');
        if (scrollContainer) {
            console.log('Крутим страницу и ждем 10 сек.')
            let lastScrollTop = scrollContainer.scrollTop;
            scrollContainer.scrollTop = scrollContainer.scrollHeight;
            await new Promise(resolve => setTimeout(resolve, 10000));
    
            if (scrollContainer.scrollTop !== lastScrollTop) {
                if (await clickAllElements()) {
                    await scrollToBottomAndClickAgain();
                } else {
                    console.log('Прокрутка выполнена, новые элементы для клика не найдены.');
                }
            } else {
                console.log('Достигли конца прокрутки, больше нечего прокручивать.');
                if (await clickAllElements()) {
                    await scrollToBottomAndClickAgain();
                } else {
                    console.log('Задача окончательно завершена, кликов больше не осталось');
                }
            }
        } else {
            console.error('Контейнер для прокрутки не найден');
        }
    }
    
    async function initiateClicksAndScroll() {
        if (await clickAllElements()) {
            await scrollToBottomAndClickAgain();
        } else {
            console.log('Нет элементов для начальных кликов, проверяем прокрутку');
            await scrollToBottomAndClickAgain();
        }
    }
    
    initiateClicksAndScroll().then(() => console.log('Задача выполнена май генерал!'));
    Ответ написан
  • Как поставить лайк на все комментарии видео в тикток?

    ilyabond
    @ilyabond
    В яме даннинга крюгера
    Блин, пришлось зарегистрироваться в этом ужасе)

    Задержка помогла:
    document.querySelectorAll("[data-e2e='comment-like-icon']").forEach((el, i) => {
        setTimeout(() => el.click(),  3000)) // По замечанию @Mike_Ro - достаточно трех секунд
    }


    P.s ещё нужно решить вопрос с скроллом (так как комменты добавляются динамически) и с капчей
    Ответ написан
    3 комментария
  • Как спарсить ссылку на продавца Kufar?

    Похоже в этом
    curl -s https://www.kufar.by/item/137097961 | grep 'kf-Fqrg-c7f38' && echo 'Есть kf-Fqrg-c7f38' ||  echo 'Нету kf-Fqrg-c7f38'
    Нету kf-Fqrg-c7f38


    Через BS не спарсить по той же причине почему curl не вернул результат - требуется чтобы загрузка произошла в браузере и отработал js.
    Для решения задачи нужно использовать, к примеру, selenium
    Ответ написан
    2 комментария
  • Отличается ли мультипроцессинг от запуска нескольких программ?

    xenon
    @xenon
    Too drunk to fsck
    А запуск просто 20 раз даст то, что вам нужно? Не требуется никакая коммуникация между процессами?
    Тогда однозначно запускайте просто 20 копий программы, можно через parallel (стандартная утилита, есть наверное, везде) или просто своим шелл-скриптом. Будет быстрее и надежнее.

    В пайтоне есть GIL и это сильно влияет на производительность в многопоточном режиме. Да и вообще, зачем усложнять? Один изолированный процесс, который делает какую-то простую функцию - это богоугодно. А если вы делаете монстра, который внутри себя запускает потоки/процессы то только в идеале вы приблизитесь к рекомендуемому варианту. А не в идеале - будете иметь проблемы с производительностью или какие-то сложноуловимые глюки и race conditions.

    Многопоточность оправдана только если без нее никак, например, нужна коммуникация между процессами, работа с общими данными.

    С другой стороны, если производительность вам не важна, а хочется "набить руку", потренироваться - в пайтоне это достаточно просто делается, почему бы и нет? Но это не самый оптимальный результат по скорости будет.
    Ответ написан
    Комментировать
  • Как запустить две функции параллельно в asyncio?

    Vindicar
    @Vindicar
    RTFM!
    Намудрил-то, намудрил-то...
    background_func() сделай асинхронной, run_in_executor() в ней нафиг не нужен, можно будет просто сделать await bot.send_message(...).
    time.sleep(), соответственно, меняешь на await asyncio.sleep().
    executor.start_polling() вызывай прямо в теле программы, без выкрутасов.

    Для запуска функции при старте бота опиши её как
    async def bot_startup(dp: Dispatcher):
    и передай её в параметре on_startup при вызове start_polling().
    А внутри bot_startup уже делай что нужно, например, asyncio.create_task(background_func()).
    Обрати внимание, без await - тогда background_func() будет работать параллельно боту.
    Ответ написан
    2 комментария
  • Как запустить нейросеть на сервере?

    paran0id
    @paran0id
    Умный, но ленивый
    Установить на сервер ОС, на ОС установить python и notebook, открыть порт нотебука по внешнему ip сервера. Лучше бы прикрыть nginx'ом и вообще базово обезопасить сервер. Короче, занесите знакомому админу чай с тортиком и попросите сделать, там несложно, но требуется некоторая админская квалификация.
    Ответ написан
    Комментировать
  • Где само оптимально тренировать большие нейронные сети?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Ответ написан
    Комментировать
  • Как создать автоэнкодер аудио с голосами / систему deepfake на аудио данных?

    @dmshar
    В общем-то непонятна суть вопроса.
    Тем более, что вы перерыли кучу информации и ничего не нашли(???)
    Вы ищете информацию по автоенкодерам? По обработке звука? Или вообще - "с чего начать"?
    Ну давайте начнем с автоенкодера. Хорошей литературы я не припомню, но вот статей на тему хватает:
    https://towardsdatascience.com/autoencoders-overvi...
    https://towardsdatascience.com/introduction-to-aut...
    С использованием ТensorFlow:
    https://www.machinelearningmastery.ru/implementing...
    https://russianblogs.com/article/28481357544/
    С использованием PyTourch
    https://towardsdatascience.com/beginner-guide-to-v...
    С примерами практической реализации:
    https://towardsdatascience.com/autoencoders-introd...
    Даже отдельные обсуждения на тему Как отдельно использовать кодер автоэнкодера в keras и Tensorflow есть:
    https://coderoad.ru/39551478/Как-отдельно-использо...
    https://coderoad.ru/51566573/Tensorflow-Keras-испо...
    Так что неясно, чего именно вы не нашли.
    В приведенных ссылках есть что изучать, особенно если вы даже "не понимаете за что браться". Вот, изучите. А потом попробуйте более конкретно сформулировать свой вопрос.
    Ответ написан
    Комментировать
  • Как преобразовать аудио в массив в python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Мало данных. Если ваш аудиофайл в WAV формате, то это уже фактически массив данных, который вам нужен. Достаточно отрезать от него "шапку", посмотреть в шапке битрейт и число каналов и соответственно интерпретировать как массив сэмплов нужной битности.
    Если файл закодирован кодеком (mp3, ogg, и т.д.), то сперва надо декодировать файл, а потом уже смотри, как говорится, первый пункт.
    Как именно это будет выгядеть в коде зависит от того, какой формат, какие библиотеки для работы с массивами анных используете. Конкретизируйте, пожалуйста.

    Ищется, кстати, элементарно:
    https://stackoverflow.com/questions/3049572/how-to...
    https://pythonbasics.org/convert-mp3-to-wav/
    https://www.geeksforgeeks.org/convert-mp3-to-wav-u...

    UPD:
    https://google.gik-team.com/?q=wav+python

    В итоге имеем:
    https://habr.com/ru/post/113239/
    https://docs.python.org/3/library/wave.html
    https://coderoad.ru/2060628/Чтение-wav-файлов-в-Python

    Это три перые ссылки в гугле. Если вы это найти не смогли, то прочь из профессии.
    Ответ написан
    2 комментария
  • Как преобразовать аудио в массив в python?

    solotony
    @solotony
    покоряю пик Балмера
    Если ты хочешь работать со звуком - то свой mp3 (или любой другой сжатый формат) надо вначале перевести в wav.

    А дальше для работы со звуком есть библиотека wave - там можно получить биты.
    Ответ написан
    Комментировать