Перейти к содержанию
  • Регистрация

Samurai

Aprel Team
  • Постов

    77
  • В составе

  • Посещение

  • Победитель дней

    5

Весь контент Samurai

  1. @UlybkaDozhdya Негативно может повлиять открытый клиент Discord (оверлей, активность и так далее), попробуйте его закрыть. Также CustomRP для Discord. Если не помогло, лучше всего сделать переустановку видеодрайвера. Если способы выше не помогли, тогда: Удалите стороннее антивирусное ПО (Касперский, Аваст и т.п.), сторонние файрволы, ADGuard, Wallpaper Engine, MSI Afterburner, MSI Mystic light и аналогичные, для управления подсветкой и блокировки рекламы. Также Process Lasso и Park Control, Memreduct и подобные. В настройках брандмауэра Windows, удалите все правила для входящих и исходящих подключений, далее отключите его. Запустите по очереди, не закрывая предыдущие, следующие приложения: Rockstar Games Launcher, Steam/EGS, GtTA 5 Launcher (RAGEMP) 1. Убедитесь, что ваша GTA V обновлена 2. Запустите одиночную игру и GTA Online один раз 3. Перезагрузите игровой лаунчер (Steam/RGL/EGS) 4. Убедитесь что антивирусное программное обеспечение не заблокировало ни один из файлов RAGE MP 5. Перезагрузите компьютер и роутер 6. Удалите все сторонние моды, так как они могут быть несовместимы Чтобы в будущем снизить вероятность вылетов, удалите стороннее антивирусное ПО (Касперского, Avast и т.п.), Adguard, Wallpaper engine, MSI Afterburner, MSI Mystic light и аналогичные, для управления подсветкой и блокировки рекламы. Очистите папку GPUCache в папках RAGEMP и GTA V. Также увеличьте файл подкачки до 24 GB. В скоплениях игроков, старайтесь отключать отображение имён. Проверьте стабильность соединения с интернетом. Не используйте графические модификации. Убедитесь, что имеете как минимум 12 GB оперативной памяти и игра с RAGEMP установлены на SSD. Проверьте настройки электропитания процессора и видеокарты, установите на максимальную производительность. Включите вертикальную синхронизацию, либо другим способом ограничьте FPS до 60. Если не помогает обычная, включите 50% синхронизацию. Если используете ноутбук, задайте приоритет дискретной видеокарты для GTA V.
  2. Ошибка YouTube Premium, YTP, Snaptube, LibreTube, VidMate, NewPipe, PureTuber, FreeTube, ReVanced — Video Not Available. Что делать? У большинства пользователей сторонних приложений YouTube при попытке воспроизведения любого ролика вылезает блокировочная плашка для борьбы со старыми версями приложений: «Video Not Available« с надписью о неактальности. Сперва открываем данный вопрос с ответами, изучаем всё и читаем: Следуем инструкциям, пока дожидаемся обновлений до актуальных версий YTP (YouTube Premium Mod) и других FOSS-клиентов: LibreTube, FreeTube, NewPipe, PureTuber или SnapTube, VidMate и т.д., включая паливные моды с названием ReVanced. (Используйте на свой страх и риск. Если на свой аккаунт YouTube вам похуй, то ReVanced отличный выбор!). ReVanced в открытом доступе и он отлично виден корпорации, сайты все паливные, ищите конкретных мододелов этой солянки, а не качайте с первого сайта из поисковика - это тупо и глупо. Если всё выше не помогло, не научило вас или новые версии клиентов не вышли, то давайте разбираться, пишите в эту тему. Ставьте нормальные FOSS-клиенты, а не всякое говно. Павел Дуров.
  3. Samurai

    SOVA V RE

    Загрузить актуальную версию SOVA V RE v8.38 [1.2.1]: > https://t.me/GoSoftMobile/2809 [+] Сделан новый алгоритм для работы больше 3 аккаунтов в мультиаккаунте. Теперь можно добавить до 75 аккаунтов [+] Возможность добавить сервисы и смену аккаунта в боковое меню [=] Исправлена работа обхода "Был недавно" [=] Исправлена работа даты регистрации на своём профиле [=] Исправлена проверка VK на "был недавно" (Случайные краши в диалогах) [=] Исправлен вылет в диалоге с Марусей [=] Исправлен вылет на Android 7 [=] ??? ?? ?????? P.S. Это настоящий билд если кто-то сомневался
  4. Samurai

    VTLite

    VTLite v5.56.1 (1.1.2): https://t.me/GoSoftMobile/2808 https://github.com/vtosters/lite/releases/latest/download/VTLite.apk Список изменений: [+] Переименование пользователей и групп [+] Поддержка определения HyperOS (Теперь если у вас она, то в настройках появится возможность поменять язык приложения) [+] Теперь можно отключить загрузку некоторых разделов музыки для ускорения загрузки основного раздела музыки [+] Добавлена возможность принудительно обновить фильтры [+] Возможность удалить все скачанные плейлисты [~] Переделана работа работы с MicroG [~] Исправлено обновление фильтров [~] Значительно ускорена работа открытия вкладки с музыкой
  5. Samurai

    VTLite

    VTLite v5.56.1 (1.1.0): https://t.me/GoSoftMobile/2792 https://github.com/vtosters/lite/releases/latest/download/VTLite.apk Список изменений: [+] Переделана вкладка SponsorPost. Добавлена статистика заблокированных постов, возможность получать предварительные списки [+] Возможность голосовать за рекламные посты [+] Добавлен новый экспериментальный вариант прокси через сервера ВКонтакте (Работает очень быстро, не у всех операторов/провайдеров, не работают некоторые встроенные вкладки как VK ID, музыка, редактирование профиля, воспоминания, приватность и тд) [+] Добавлена опциональная метрика прослушивания музыки для работы рекомендаций и истории прослушивания музыки [+] Добавлена опциональная метрика просмотра видео для работы рекомендаций и истории просмотра видео [+] Переделана вкладка настроек Музыки [+] Значительно переделано скачивание музыки [+] Переделана функция автоматического кеширования песен (Теперь есть выбор между всеми песнями и только своими) [+] Добавлена возможность кешировать плейлисты [+] Перемещена вкладка редактирования нижней панели в общие настройки, [+] Полностью переделана работа различных интеграций и работы с вк. Должно работать быстрее. (Например загрузка вкладок музыки, скачивание видео) [+] Добавлено название шифра в начало дешифрованного сообщения [+] Упрощена настройка выбора закругления картинок (Из нескольких вариантов) [+] Переделана функция сжатия картинок [~] Исправлена проблема обновления фильтров [~] Исправлено падение приложения при выборе подарка пользователю [~] Исправлено падение приложения при открытии всех своих игр [~] Исправлено редкое падение приложения при загрузке галочек [~] Исправлено падение при открытии стримов [~] Исправлена работа переходов вкладок в нижней панели при открытии настроек [~] Исправлено редкое падение при открытии меню в старом интерфейсе [~] Исправлена покраска веб страниц после переключения темы [~] Исправлена проблема применения акцента после переключения темы [~] Исправлена покраска диалогов с монет темой и акцентом при переключении темы
  6. @sinret У меня GX, у автора видимо тоже. Да она лучше по всем параметрам. Плюс есть поддержка модов: https://store.gx.me/ru/mods/?search=Aprel Team&tagAlias=desktop
  7. Москва. Работает, так что хз. Там же самое главное тупо в аккаунт Оперы войти https://auth.opera.com/account/authenticate/email
  8. @Vlad Там есть переключатель, просто ползунок звука на 0 везде выставь и всё
  9. Samurai

    Voice Over Translation

    Voice Over Translation - небольшое расширение, которое добавляет закадровый перевод видео из Яндекс Браузера в другие браузеры, но без ограничений! Установка расширения: 1. Установите расширение Tampermonkey: https://www.tampermonkey.net. Альтернатива для Safari: UserScripts - https://apps.apple.com/app/userscripts/id1463298887. 2. Установите Скрипт: https://raw.githubusercontent.com/ilyhalight/voice-over-translation/master/dist/vot.user.js. Cloudflare version: https://raw.githubusercontent.com/ilyhalight/voice-over-translation/master/dist/vot-cloudflare.user.js. Полезные ссылки: Версия для VioletMonkey, FireMonkey, GreaseMonkey, AdGuard, OrangeMonkey, UserScripts и некоторых браузеров (cloudflare-version): Ссылка Версия для терминала (vot-cli): Ссылка Вики: Link Наши домены: Эти домены могут быть установлены в настройках расширения (здесь указаны только те домены, которые можно изменить без пересборки): Proxy-сервер vot.toil.cc (Балансировщик между прокси серверами) vot.deno.dev vot-worker.onrender.com vot-new.toil-dump.workers.dev (⚠️ не работает в РФ) M3U8 Proxy-сервер m3u8-proxy.toil.cc m3u8-proxy.toiloff.workers.dev (⚠️ не работает в РФ. Не рекомендуется к использованию из-за низких лимитов.) Список поддерживаемых сайтов: Все ограничения, связанные с поддержкой сайтов вы можете увидеть в вики. YouTube Twitch VK OK [⚠️] Twitter 9GAG Rutube Bilibili Видео Mail.ru Vimeo [⚠️] XVideos PornHub Bitchute Coursera [⚠️] Udemy [⚠️] Facebook* TikTok Rumble EPorner Peertube Dailymotion Trovo [⚠️] Yandex Disk Google Drive Banned Video Weverse Egghead Youku Newgrounds ProxiTok [⚠️] Invidious [⚠️] Piped Любые прямые веб-ссылки на .mp4 ⚠️ - Требует дополнительных действий, подробнее в Wiki ❌ - Не поддерживается ❔ - Возможно отключена поддержка со стороны Яндекса Список функционала: Перевод с одного из доступных языков на русский. Язык определяется автоматически, если языка нету в списке или не удалось его определить, то используется перевод с английского. Перевод с русского на английский язык Автоматический перевод видео при открытие Слайдер для изменения громкости видео Автоматически выставлять громкость видео (как в Яндекс браузере) [YouTube Only] Синхронизация громкости перевода с громкостью видео [YouTube Only] Ограничить перевод видео с родного языка Как собрать расширение? Установите NodeJS 18+ Установите зависимости: npm i Сборка расширения: 3.0. Все версии сразу: npm run build 3.1. Все минифицированные версии сразу: npm run build:min 3.2. Только обычная версии: npm run build:default 3.3. Только Cloudflare версии: npm run build:cloudflare 3.2. Только обычная мин. версии: npm run build:default-min 3.3. Только мин. Cloudflare версии: npm run build:cloudflare-min Установка pre-commit хука: npm run prepare Как задеплоить свой VOT Worker? Нажми, чтобы перейти Примечание: Рекомендую разрешить автовоспроизведение "аудио и видео", чтобы избежать ошибок при работе расширения Расширение не может переводить видео длиной более 4 часов (ограничение API переводчика) Кастомизация внешнего вида: Расширение поддерживает кастомизацию внешнего вида с помощью Stylus, Stylish и других подобных расширений Пример изменения стилей: /* ==UserStyle== @name VOT-styles @version 16.09.2023 @namespace vot-styles @description LLL @author Toil @license No License ==/UserStyle== */ :root { --vot-font-family: "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system; --vot-primary-rgb: 139, 180, 245; --vot-onprimary-rgb: 32, 33, 36; --vot-surface-rgb: 32, 33, 36; --vot-onsurface-rgb: 227, 227, 227; --vot-subtitles-background: rgba(var(--vot-surface-rgb, 46, 47, 52), 0.8); --vot-subtitles-color: rgb(var(--vot-onsurface-rgb, 227, 227, 227)); --vot-subtitles-passed-color: rgb(var(--vot-primary-rgb, 33, 150, 243)); }
  10. Формы обратной связи являются важным инструментом для взаимодействия с пользователями и собирания их комментариев и вопросов. Шаг 1: Создание HTML-формы Для начала нам нужно создать HTML-форму, в которой пользователи будут вводить свои комментарии и вопросы. <formmethod="post"action="process.php"> <labelfor="name">Имя:</label> <inputtype="text"name="name"id="name"required> <labelfor="email">Email:</label> <inputtype="email"name="email"id="email"required> <labelfor="message">Сообщение:</label> <textareaname="message"id="message"required></textarea> <inputtype="submit"value="Отправить"> </form> Шаг 2: Создание скрипта на PHP для обработки формы Теперь нам нужно создать PHP-скрипт, который будет обрабатывать данные, отправленные из формы. Создайте файл с именем "process.php" и разместите следующий код внутри него: <?php if ($_SERVER["REQUEST_METHOD"] === "POST") { // Получение и фильтрация данных из формы $name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING); $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); $message = filter_input(INPUT_POST, 'message', FILTER_SANITIZE_STRING); // Проверка, были ли заполнены все обязательные поля if (empty($name) || empty($email) || empty($message)) { echo "Заполните все поля формы."; } else { // Настройка данных для отправки по электронной почте $to = "ваш[email protected]"; // Замените на свой адрес электронной почты $subject = "Новое сообщение через форму обратной связи"; $headers = "From: $email\r\n"; // Дополнительные заголовки для обеспечения безопасности $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/plain; charset=UTF-8\r\n"; $headers .= "Content-Transfer-Encoding: 8bit\r\n"; // Формирование текста сообщения $message = "Имя: $name\nСообщение: $message"; // Попытка отправки электронного письма с использованием mail() if (mail($to, $subject, $message, $headers)) { echo "Сообщение успешно отправлено!"; } else { echo "Что-то пошло не так. Пожалуйста, попробуйте еще раз."; } } } ?> Шаг 3: Настройка получателя В коде выше вам необходимо заменить "ваш[email protected]" на ваш реальный адрес электронной почты. Это адрес, на который будут отправляться сообщения от пользователей. Шаг 4: Дополнительная обработка и защита данных В этом примере мы использовали самое простое решение для отправки электронной почты, используя функцию mail() в PHP. Однако, учтите, что этот метод может иметь ограничения и требовать настройки сервера. Дополнительно вы можете добавить проверки на валидность email и фильтрацию данных, чтобы уберечься от потенциальных атак. Это всё! Теперь у вас есть работающая форма обратной связи на PHP. Вы можете опубликовать её на своем веб-сайте и начать получать комментарии и вопросы от ваших пользователей.
  11. 1. Оптимизация изображений: Крупные размеры изображений являются одной из основных причин медленной загрузки страниц. Перед загрузкой на сайт, проверьте размеры и форматы изображений. Вы можете использовать инструменты для сжатия изображений без значительной потери качества. Убедитесь, что ваш сайт использует сжатие и кэширование изображений для быстрой загрузки. 2. Минификация кода: Лишние пробелы, комментарии и переносы строк в коде страницы могут замедлить ее загрузку. Минификация кода, посредством удаления ненужных символов и пробелов, поможет уменьшить размер файлов и улучшить время загрузки. 3. Кэширование: Кэширование позволяет сохранять копии вашего сайта на компьютере пользователя после первой загрузки. Это позволяет ускорить последующие посещения, так как браузер может получить данные напрямую с кэша, минуя долгую загрузку с сервера. Обратите внимание на настройки кэширования на вашем сервере или используйте специальные плагины для управления кэшем. 4. Использование CDN: CDN (Content Delivery Network) позволяет размещать копии вашего сайта на серверах распределенных по всему миру. Когда пользователь запрашивает доступ к вашему сайту, содержимое будет доставлено с сервера, находящегося ближе к его географическому местоположению. В результате, время загрузки сокращается, так как данные могут быть получены с более близкого сервера. 5. Улучшение хостинга: Ваш хостинг-провайдер также может повлиять на скорость загрузки вашего сайта. Исследуйте возможности обновления хостинга или перехода на более производительный сервер, чтобы обеспечить оптимальную производительность вашего сайта. 6. Удаление ненужных плагинов и скриптов: Плагины и скрипты могут значительно замедлить загрузку страницы, особенно если они не используются или являются устаревшими. Проведите аудит и удалите все ненужные плагины и скрипты, чтобы уменьшить время загрузки страницы. 7. Регулярное тестирование: Не забывайте периодически проверять скорость загрузки вашего сайта с помощью специальных инструментов или онлайн-сервисов. Это поможет вам выявить проблемные области и принять меры для их улучшения.
  12. Скрипт будет добавлять возможных друзей автоматически! По сути это законная и самая безопасная накрутка друзей. Что бы добавить возможных друзей нам потребуется скрипт, который мы с Вами сейчас напишем. var counter = 100; var timer = 10000; (async () => { for (var i = 0; i < counter; i++) { document.getElementsByClassName("friends_find_user_add")[i].click(); await delay(); } console.log("FORUM.APRELTEAM.SU"); })(); function delay() { return new Promise((resolve, reject) => { setTimeout(resolve, timer); }); } var counter = 100; // Сколько добавляем друзей — Лимит 100 друзей за сутки var timer = 10000; // С какой периодичностью делаем запросы (10 секунд, чем больше тем лучше) Далее запускаем цикл for который будет с периодичностью нажимать на кнопку содержащую класс friends_find_user_add. Теперь переходим во вкладку друзья - показать всех или по ссылке: https://vk.com/friends?act=find. Далее открываем любой браузер (тестировалось на браузерах использующие движки хромиум) открываем консоль. В Vivaldi / Opera комбинация клавиш Ctrl + Shift + J а в Mozilla Firefox: Ctrl + Shift + K. Теперь копируем наш скрипт, вставляем в нашу консольку и нажимаем Enter, далее остаётся только наблюдать как добавляются новые друзья. Вот такими простыми действиями Вы сможете добавлять новых друзей, а для каких целей это использовать, решайте уже сами. Не забудьте добавить страничку в закладки, что бы не потерять нажав комбинацию клавиш - Ctrl + D
  13. Шаг 1: Подготовка бота 1. Переходим по ссылке и создаём новое приложение: https://discord.com/developers/applications. 2. Во вкладке Bot добавляем бота, подтверждаем выбор в появившемся окне. 3. Во вкладке OAuth2 -> URL Generator ставим галочку напротив пункта bot, ниже выбираем необходимые права доступа и копируем появившуюся внизу ссылку на инвайт бота. 4. Переходим по скопированной ссылке и приглашаем бота в нужный нам сервер. 5. Генерируем токен бота и сохраняем его у себя. 6. Включаем SERVER MEMBERS INTENT, дабы отслеживать события пользователей (например, вход на сервер). Шаг 2: Скрипт Подключаем библиотеку через composer: composer require team-reflex/discord-php Разберём только базовые вещи. Начинаем с подключения библиотеки, импортируем необходимые для работы классы: <?php require __DIR__ . '/vendor/autoload.php'; use Discord\Discord; use Discord\WebSockets\Event; use Discord\WebSockets\Intents; use Discord\Parts\User\Member; use Discord\Parts\Channel\Message; Создаём экземпляр класса Discord: $ds = new Discord( [ 'token' => '*****************', // Токен, который мы сгенерировали ранее 'intents' => Intents::getDefaultIntents() | Intents::GUILD_MEMBERS, // Понадобится для отслеживания событий участников ] ); Далее вставляем конструкцию, внутри которой будем прописывать конкретные события для отслеживания. В конец сразу добавил $ds->run() для запуска бота: $ds->on( 'ready', function( $ds ) { // Тут продолжим писать код } ); $ds->run(); И первое событие, которое мы обработаем - так это входящие сообщения: $ds->on( Event::MESSAGE_CREATE, function( Message $msg, Discord $ds ) { // Тут будем обрабатывать входящие } ); Добавим тестовую команду: if ( $msg->content == '/бот' ) { $msg->reply( 'Привет, ' . $msg->author->username ); } Да, бот пока не запущен и не готов к работе, но я забегу наперёд. С помощью метода ban() можно заблокировать участника. В первом параметре можно указать, за какой промежуток времени нужно удалить сообщения этого пользователя (я для примера удалю сообщения за последние сутки), а во втором - причину бана: else if ( str_contains( $msg->content, 'админ лох' ) ) { $msg->member->ban( 1, 'reason' ); } Такое условие на практике, конечно, использоваться никогда не будет, да и в принципе банить людей по ключевым словам - решение не шибко надёжное. Но сейчас я просто показываю, как можно банить юзеров средствами библиотеки. В первом шаге мы включили Members Intent, поэтому теперь можем отслеживать вход новых участников на наш сервер: $ds->on( Event::GUILD_MEMBER_ADD, function( Member $member, Discord $ds ) { // Тут продолжим писать код } ); Давайте выдадим новым участникам какую-нибудь роль, а для этого нам понадобится получить ID этой самой роли. Чтобы его получить - включаем режим разработчика (Настройки -> Настройки приложения -> Расширенное). Ну, и теперь копируем ID нужной роли. Теперь мы можем воспользоваться методом addRole(), передав в него скопированный айдишник (в виде строки): $member->addRole( '1007995229674156102' ); Ну, и ещё поменяем никнейм присоединившегося участника на сервере методом setNickname(): $member->setNickname( 'Новый никнейм' ); Весь код: <?php require __DIR__ . '/vendor/autoload.php'; use Discord\Discord; use Discord\WebSockets\Event; use Discord\WebSockets\Intents; use Discord\Parts\User\Member; use Discord\Parts\Channel\Message; $ds = new Discord( [ 'token' => '******************', 'intents' => Intents::getDefaultIntents() | Intents::GUILD_MEMBERS, ] ); $ds->on( 'ready', function( $ds ) { $ds->on( Event::MESSAGE_CREATE, function( Message $msg, Discord $ds ) { if ( $msg->content == '/бот' ) { $msg->reply( 'Привет, ' . $msg->author->username ); } else if ( str_contains( $msg->content, 'админ лох' ) ) { $msg->member->ban( 1, 'reason' ); } } ); $ds->on( Event::GUILD_MEMBER_ADD, function( Member $member, Discord $ds ) { $member->addRole( '1007995229674156102' ); $member->setNickname( 'Новый никнейм' ); } ); } ); $ds->run(); Шаг 3: Запуск бота Запустить бота можно на OpenServer. Для этого нужно перейти в консоль. И ввести следующую команду (путь, естественно, указывать нужно свой): php "D:\DiscordBOT\bot.php" Если же у вас есть купленный хост, который предоставляет возможность юзать консоль, то запустить бота можно там. ISPManager принцип: 1. Переходим во вкладку Shell-клиент. 2. Вводим следующую команду. /opt/php/8.1/bin/php www/site.ru/bot.php Путь и версию PHP меняем под себя. Чтобы быстро вставить команду в консоли - нажмите ПКМ -> Paste from browser: На этом всё!
  14. Вероятно, многие из пытавшихся реализовать скачивание видосов с ютуба уже натыкались на get_video_info. И, к большому сожалению, рабочим этот вариант не оказывался (на сегодняшний день). Поэтому в этой статье поделюсь одной из найденных альтернатив. Итак, создаём php-файл и сразу начинаем писать код. Добавим переменную $link, запишем в неё ссылку на любое видео с ютуба: <?php $link = 'https://www.youtube.com/watch?v=x4sWD5qiZT4'; GET-параметр v - это идентификатор нашего видео. Его из общей ссылки необходимо как-то вычленить. Да, можно было бы сделать всё вручную и в $link вставлять уже вырезанный ID, но всё же лениться не будем и сделаем небольшой задел на будущее (например, для реализации какого-то интерфейса или интеграции скрипта в бота): parse_str( parse_url( $link, PHP_URL_QUERY ), $params ); $video_id = $params['v'] ?? exit; Далее формируем POST-запрос к конечной точке youtubei/v1/player: $arr = [ 'context' => [ 'client' => [ 'hl' => 'en', 'clientName' => 'WEB', 'clientVersion' => '2.20210721.00.00', 'mainAppWebInfo' => [ 'graftUrl' => '/watch?v=' . $video_id ] ] ], 'videoId' => $video_id ]; $curl = curl_init(); curl_setopt( $curl, CURLOPT_URL, 'https://www.youtube.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8' ); curl_setopt( $curl, CURLOPT_HTTPHEADER, [ 'Content-Type:application/json' ] ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $curl, CURLOPT_POST, true ); curl_setopt( $curl, CURLOPT_POSTFIELDS, json_encode( $arr ) ); curl_setopt( $curl, CURLOPT_ENCODING, 'gzip, deflate' ); $result = json_decode( curl_exec( $curl ), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ); curl_close( $curl ); На данный момент в переменной $result хранится огромной массив полученных данных, некоторые из которых нам придётся вытащить и использовать для дальнейшей работы: $video_details = $result['videoDetails']; $streaming_data = $result['streamingData']; $formats = $streaming_data['formats']; $video_name = $video_details['title']; $video = []; foreach ( $formats as $key ) { $data = $key; $mime_type = explode( ';', $data['mimeType'] ); $data['mime'] = $mime_type[0]; $data['format'] = ltrim( substr( $mime_type[0], stripos( $mime_type[0], '/' ) ), '/' ); $video[] = $data; } $video_file_name = strtolower( str_replace( ' ', '_', $video_name ) ) . '.' . $video[0]['format']; $download_url = $video[0]['url']; $file_name = preg_replace( '/[^A-Za-z0-9.\_\-]/', '', basename( $video_file_name ) ); Дальше проверяем переменную $download на пустоту: if ( $download_url ) { header( 'Cache-Control: public' ); header( 'Content-Description: File Transfer' ); header( 'Content-Disposition: attachment; filename=' . $file_name ); header( 'Content-Type: application/zip' ); header( 'Content-Transfer-Encoding: binary' ); readfile( $download_url ); } Если всё окей - начнётся загрузка видео. В этот раз я не стал делать интерфейс, поэтому для тестирования достаточно открыть файл со скриптом в браузере. Весь код: <?php $link = 'https://www.youtube.com/watch?v=y2YUJ186Ke4'; parse_str( parse_url( $link, PHP_URL_QUERY ), $params ); $video_id = $params['v'] ?? exit; $arr = [ 'context' => [ 'client' => [ 'hl' => 'en', 'clientName' => 'WEB', 'clientVersion' => '2.20210721.00.00', 'mainAppWebInfo' => [ 'graftUrl' => '/watch?v=' . $video_id ] ] ], 'videoId' => $video_id ]; $curl = curl_init(); curl_setopt( $curl, CURLOPT_URL, 'https://www.youtube.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8' ); curl_setopt( $curl, CURLOPT_HTTPHEADER, [ 'Content-Type:application/json' ] ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $curl, CURLOPT_POST, true ); curl_setopt( $curl, CURLOPT_POSTFIELDS, json_encode( $arr ) ); curl_setopt( $curl, CURLOPT_ENCODING, 'gzip, deflate' ); $result = json_decode( curl_exec( $curl ), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ); curl_close( $curl ); $video_details = $result['videoDetails']; $streaming_data = $result['streamingData']; $formats = $streaming_data['formats']; $video_name = $video_details['title']; $video = []; foreach ( $formats as $key ) { $data = $key; $mime_type = explode( ';', $data['mimeType'] ); $data['mime'] = $mime_type[0]; $data['format'] = ltrim( substr( $mime_type[0], stripos( $mime_type[0], '/' ) ), '/' ); $video[] = $data; } $video_file_name = strtolower( str_replace( ' ', '_', $video_name ) ) . '.' . $video[0]['format']; $download_url = $video[0]['url']; $file_name = preg_replace( '/[^A-Za-z0-9.\_\-]/', '', basename( $video_file_name ) ); if ( $download_url ) { header( 'Cache-Control: public' ); header( 'Content-Description: File Transfer' ); header( 'Content-Disposition: attachment; filename=' . $file_name ); header( 'Content-Type: application/zip' ); header( 'Content-Transfer-Encoding: binary' ); readfile( $download_url ); }
  15. WHOIS (произносится как «Кто есть») — это протокол запросов и ответов, который обычно используется для поиска деталей интернет-ресурсов, таких как доменное имя, блок IP-адресов или автономная система, а также другой важной информации. База данных сервера протокола WHOIS хранит и возвращает информацию в удобочитаемом формате. Информация о текущем регистраторе домена, информации о регистранте, дате истечения срока действия и т. д. Поскольку в этом руководстве мы рассмотрим живой пример создания сценария поиска домена WHOIS с помощью PHP, основные файлы для этого примера приведены ниже. index.php functions.php Шаг 1. Разработка HTML-формы поиска Whois Сначала мы создадим файл index.php и разработаем HTML-форму с полем для ввода доменного имени и кнопкой поиска, чтобы получить информацию WHOIS домена при отправке формы. <div class="container"> <label class="text-info"> <?php if($message) { ?> <span class="text-danger"><strong><?php echo $message; ?></strong></span> <?php } ?> </label> <div class="row"> <form name="form" class="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <div class="col-md-6"> <div class="form-group"> <input type="text" name="domain" id="domain" class="form-control" value="<?php echo $domain; ?>" placeholder="Enter domain name"> </div> </div> <div class="col-md-4"> <div class="form-group"> <button type="submit" class="btn btn-info btn-md"><i class="fa fa-search"></i> WHOIS</button> </div> </div> </form> </div> </div> Шаг 2. Отображение информации WHOIS домена. После ввода доменного имени и отправки формы мы получим доменное имя без http или www и перейдем к функции validateDomain() для проверки действительного доменного имени. Затем мы вызовем функцию LookUpDomain() , чтобы получить информацию WHOIS домена, и сохраним ее в переменной $result для ее отображения. if(isset($_POST['domain'])){ $domain = $_POST['domain']; $domain = trim($domain); if(substr(strtolower($domain), 0, 7) == "http://") $domain = substr($domain, 7); if(substr(strtolower($domain), 0, 8) == "https://") $domain = substr($domain, 8); if(substr(strtolower($domain), 0, 4) == "www.") $domain = substr($domain, 4); if(validateDomain($domain)) { $result = lookUpDomain($domain); } else { $message = "Invalid Input!"; } } Мы будем отображать информацию WHOIS домена, используя переменную результата. <?php if($result) { echo "<pre>\n" . $result . "\n</pre>\n"; } ?> Шаг 3. Получите информацию WHOIS домена. Мы создадим функцию LookUpDomain() и проверим наличие сервера WHOIS домена, используя массив $ whoIsServers , в котором хранится имя сервера WHOIS. Если сервер WHOIS домена существует, мы вызываем функцию getWhoisServerDetails() , чтобы отправить запрос серверу WHOIS для получения сведений о домене. function lookUpDomain($domain){ global $whoIsServers; $domainParts = explode(".", $domain); $tld = strtolower(array_pop($domainParts)); $whoIsServer = $whoIsServers[$tld]; if(!$whoIsServer) { return "Error: No appropriate Whois server found for $domain domain!"; } $whoIsResult = getWhoisServerDetails($whoIsServer, $domain); if(!$whoIsResult) { return "Error: No results retrieved from $whoIsServer server for $domain domain!"; } else { while(strpos($whoIsResult, "Whois Server:") !== FALSE){ preg_match("/Whois Server: (.*)/", $whoIsResult, $matches); $secondary = $matches[1]; if($secondary) { $whoIsResult = getWhoisServerDetails($secondary, $domain); $whoIsServer = $secondary; } } } return "$domain domain lookup results from $whoIsServer server:\n\n" . $whoIsResult; } Шаг 4. Сделайте запрос к WHOIS-серверу домена. В файле function.php мы создадим функцию getWhoisServerDetails() , чтобы сделать запрос к WHOIS-серверу и получить информацию WHOIS. function getWhoisServerDetails($whoIsServer, $domain) { $port = 43; $timeout = 10; $whoIsInfo = @fsockopen($whoIsServer, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr); fputs($whoIsInfo, $domain . "\r\n"); $output = ""; while(!feof($whoIsInfo)){ $output .= fgets($whoIsInfo); } fclose($whoIsInfo); $whosIsResults = ""; if((strpos(strtolower($output), "error") === FALSE) && (strpos(strtolower($output), "not allocated") === FALSE)) { $whoIsRecords = explode("\n", $output); foreach($whoIsRecords as $whoIsRecord) { $whoIsRecord = trim($whoIsRecord); if(($whoIsRecord != '') && ($whoIsRecord{0} != '#') && ($whoIsRecord{0} != '%')) { $whosIsResults .= $whoIsRecord."\n"; } } } return $whosIsResults; }
  16. Краткая инструкция по регистрации на сайте openai.com в России и использованию ChatGPT! Шаг 1: Окно в Европу (ОВЕ) Включать Окно в Европу придётся при каждом входе на сайт openai, поэтому первым делом устанавливаем его себе. Я использовал первый попавшийся бесплатный браузерный, найти можно как правило в расширениях. Заходить на openai до регистрации без ОВЕ не рекомендую. Шаг 2: Начало регистрации Переходим на сайт openai.com, жмём кнопку «Try ChatGPT». Начинаем регаться. Проще всего это сделать через свой Google-аккаунт. Далее предстоит преодолеть самый геморройный момент. Шаг 3: Аренда виртуального номера. После подтверждения почты или Google/Microsoft-аккаунта потребуют ввести номер телефона и подтвердить его. Соответственно, понадобится виртуальный номер. Для этого временно выключаем ОВЕ и переходим на сайт sms-activate.org. Регистрируемся, потом кладём на счёт рублей 30-50. Самые дешёвые для аренды номера стоят 12 рублей, но личный горький опыт показал, что код подтверждения на них не приходит. Так что лучше закидывать с маленьким запасом, дабы потом не тратиться повторно на комиссию, и арендовать номер рублей за ~40. После пополнения баланса уже можно арендовать номер. Шаг 4: Подтверждение номера После того, как арендовали номер, можно его копировать и вставлять на сайте openai. Ввели - теперь ждём, когда придёт код подтверждения на sms-activate. Если код не приходит - попробуйте отменить аренду номера (благо в течение 20-ти минут сделать это можно бесплатно) и поменять провайдера. Если код пришёл - ура! Теперь можно пользоваться ChatGPT. Кстати, есть ещё и плагин для VS Code (называется CODEGPT), но опять же, исходя из личного опыта использования, могу сказать, что комфортнее юзать чат на сайте. Там и время ожидания меньше, и в форме диалога легче доносить свои задачи. Теперь пару слов и личное мнение о самом ChatGPT. Общие задачи и вопросы он понимает и интерпретирует очень точно. Причём не только в сфере программирования, но и в любой другой сфере из мною испробованных. Пробовал скормить ему весьма куцое ТЗ, по которому сам когда-то делал проект, и получил вполне внятный ответ с чёткими инструкциями и даже примерами SQL-запросов: Что касается конкретных задач - уже чутка послабее. Например, я пробовал получить способ проверки прав доступа к сайту у неавторизованных пользователей при использовании RBAC Yii2. В конечном итоге ИИ зашёл в тупик и по очереди скидывал два неправильных способа решения: Вердикт: ЧатЖПТ - хороший помощник разработчика для небольших задач, может помочь найти ошибку, подсказать общий способ решения, написать пример кода. Но стоит заметить, что без навыков в выбранном языке программирования добиться чего-то от бота навряд ли получится. Ибо зачастую приходится самостоятельно разжёвывать способ решения, и только после этого он предложит верный код.
  17. Получите API-ключ OpenAI: Первым шагом является получение API-ключа OpenAI. Для этого вам нужно создать аккаунт на платформе OpenAI и получить доступ к OpenAI API. Следуйте инструкциям на официальном сайте OpenAI, чтобы получить свой API-ключ. Установите необходимые библиотеки: После получения ключа необходимо установить необходимые библиотеки для работы с API. Вы можете использовать библиотеку OpenAI Python, которая предоставляет удобный способ взаимодействия с моделью ChatGPT. Подключитесь к API с использованием ключа: Используйте свой API-ключ, чтобы установить соединение с сервисом OpenAI. Это обеспечит вам доступ к функциям генерации текста модели ChatGPT. Определите параметры для запроса: Определите параметры запроса, такие как количество возвращаемых ответов, максимальную длину текста и начальную фразу или контекст для генерации ответа. Эти параметры помогут вам настроить поведение ChatGPT в соответствии с вашими потребностями. Отправьте запрос модели: Теперь, когда все готово, можно отправить запрос к модели ChatGPT с использованием библиотеки OpenAI Python. Передайте параметры запроса и получите ответ от модели. Обработайте и отобразите результат: Полученный ответ от модели может потребовать дополнительной обработки и форматирования перед отображением пользователю. Вы можете использовать свою собственную логику обработки результатов, чтобы предоставить наилучший опыт для ваших пользователей.
  18. Голос за Opera за инновации (GPT и прочее) и за их неформальный проект с названием Vivaldi
  19. Как получить значок активного разработчика в Discord? (статья ещё обновится, текст ниже скорее всего неактуален, на работе просто) Значок активного разработчика — знак признания создателей приложений, которые вы можете использовать на платформе Discord. Как только вы получите значок, он появится рядом с вашим профилем, чтобы обозначить ваш выдающийся статус. Другие пользователи будут знать, что могут обратиться к вам, если им понадобится совет от разработчика или доверенного автора. Однако иногда система выдачи значков Discord может показаться немного запутанной. Как получить значок разработчика в Discord? Если вы разработчик, то вы должны сначала убедиться, что соответствуете требованиям. Пользователи Discord соответствуют условиям, если у них есть хотя бы одно проверенное или непроверенное активное приложение. Платформа рассматривает приложение только как “активное” если вы использовали его через команду за последние 30 дней. Если вы соответствуете вышеуказанным требованиям, вы можете претендовать на сам значок, то вот как это сделать: Откройте Discord Developer Portal, а затем нажмите кнопку Приложения в главном меню в левой части экрана. Выберите активное приложение, которое появится в раскрывающемся меню. Обязательно найдите то, которое вы использовали за последние 30 дней, чтобы иметь право на участие. Discord предложит вам выбрать один из вариантов в меню, отмеченном как выбор сервера, после того, как вы выберете своё приложение и назначите сервер. Нажмите на сервер, чтобы назначить новостной канал для разработчиков, а затем обновите свой профиль. Вернувшись в свой профиль Discord, вы должны увидеть значок активного разработчика под изображением вашего профиля. Убедитесь, что указанный вами сервер настроен как сервер сообщества и что у вас есть доступ к нему с правами администратора. Как создать приложение для вашего сервера Discord? Вот как настроить и создать приложение для сервера Discord: Перейдите на портал разработчика и выберите Новое приложение вариант. Откроется окно с предложением назвать ваше приложение. Назвав его, выберите Создать option. Внесите любые изменения в приложение – таких как аватар, описание или имя – а затем сохраните их, когда закончите. Перейдите к кнопке приложения в меню слева, выберите Добавить бота и подтвердите это. После того, как вы создадите свое приложение, появится окно с вашим токеном бота. Вы можете сбросить его, если хотите. Однако никому не сообщайте этот токен, так как он действует как пароль для вашего приложения. Если кто-то получит его, он сможет использовать ваше приложение. Также стоит отметить, что фактический процесс написания кода для создания новых приложений потребует от вас самостоятельного написания и разработки. Часто задаваемые вопросы Почему мой значок не отображается, несмотря на то, что я его запрашиваю? Как только Discord уведомит вас о том, что вы получили значок, вы сможете обновить экран, используя версию для браузера. Кроме того, вы можете выйти и снова войти в приложение, и значок появится под изображением вашего профиля. Могу ли я удалить значок разработчика из своего профиля? Вы можете удалить свой значок через портал разработчика, выбрав “Удалить значок” вариант. Какие еще значки есть у Discord? У Discord есть другие значки, такие как значок Hype Squad House, значок Hype Squad Events, Значок сертифицированного модератора, значок охотника за ошибками и значок раннего сторонника. Все ли значки имеют преимущества? Некоторые значки дают привилегии, функции и особые преимущества, в то время как другие просто служат украшением вашего профиля, например значок Early Supporter. Как я могу получить значок Early Supporter? К сожалению, значки Early Supporter были выданный в то время, когда платформа Discord только зарождалась и еще не получила широкого распространения. По этой причине получить этот значок больше невозможно.
  20. Сегодня также начал вылетать, жду обнову
  21. Удалось запустить RAGE MP, теперь хоть можно играть на Радмире спокойно. Proton-Ge от Garuda Gaming
  22. Там только фейковые номера скупают, юзерки малый процент
×
×
  • Создать...