#виброкодинг #YouTube #Yandex #userscript #Tampermonkey

Автоматизируем 300.ya.ru

Ну что ж, пришлось попинать #ChatGPT изрядно, зато теперь имеем рабочую версию юзерскрипта. Положу сюда:

https://github.com/Johan-foreva/300.ya.ru-Auto-Paste/blob/main/300-ya-ru-Auto-Paste.js

Скрипт делает простую вещь: если ссылка содержит фрагмент («якорь», «хеш»), т.е. https://300.ya.ru/#SOME_URL — скрипт возьмет его, вставит в окошко ввода, как только оно подгрузится, и сам нажмет кнопку. Почему через жопу? Потому что безопасность браузера не позволяет читать буфер обмена без лишних телодвижений, а так — работает вполне прозрачно.

Как пользоваться:

  • Если у вас уже открыт ролик, можете прямо в адресной строке написать перед ним 300.ya.ru/#

  • Или сделать #букмарклет:

  • javascript:(()=>{window.open('https://300.ya.ru/#'+encodeURIComponent(location.href),'_blank')})();

    Тогда в новом окне откроется.

  • Или другой, который возьмет текст, выделенный на странице:
  • javascript:(()=>const t=window.getSelection().toString().trim();const d=t)();

  • Ну и самый длинный вариант — тыкнуть ПКМ по ссылке, «Копировать ссылку», потом два раза на букмарклет (потому что появится кнопка-подтверждение, для вашей, блин, безопасности).
  • javascript:(async()=>{try{const text=await navigator.clipboard.readText();if(!text||!text.trim()){alert('%D0%91%D1%83%D1%84%D0%B5%D1%80 %D0%BF%D1%83%D1%81%D1%82');return;}const w=window.open('about:blank','_blank');if(!w){alert('Popup %D0%B7%D0%B0%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD');return;}w.location.href='https://300.ya.ru/#'+encodeURIComponent(text);}catch(e){alert('%D0%9D%D0%B5%D1%82%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0%20%D0%BA%20%D0%B1%D1%83%D1%84%D0%B5%D1%80%D1%83');}})();
    300.ya.ru-Auto-Paste/300-ya-ru-Auto-Paste.js at main · Johan-foreva/300.ya.ru-Auto-Paste

    Auto-pastes text from location.hash into textarea on 300.ya.ru with anti-reset logic (handles Svelte re-renders) and submits when the button becomes enabled - Johan-foreva/300.ya.ru-Auto-Paste

    GitHub

    #Firefox #Yandex #виброкодинг #ChatGPT #Tampermonkey

    Навиброкодил связочку из #bookmarklet'а и #userscript'а, при помощи которых можно отправлять #YouTube-ролики прямо в https://300.ya.ru

    Конечно, не совсем прямо, в сумме получается 4 клика (2, чтобы скопировать, 2 чтобы вставить). Но зато только мышкой.

    1) Букмарклет

    javascript:(async()=>{try{const text=await navigator.clipboard.readText();if(!text||!text.trim()){alert('Буфер пуст');return;}const w=window.open('about:blank','_blank');if(!w){alert('Popup заблокирован');return;}w.location.href='https://300.ya.ru/#'+encodeURIComponent(text);}catch(e){alert('Нет доступа к буферу');}})();

    2) Юзерскрипт

    // ==UserScript==
    // @name 300.ya.ru Auto Paste via Hash (Stable)
    // @namespace http://tampermonkey.net/
    // @version 3.1
    // @match https://300.ya.ru/*
    // @run-at document-start
    // ==/UserScript==

    (function() {
    'use strict';

    const data = decodeURIComponent(location.hash.slice(1) || '');
    if (!data) return;

    let inserted = false;
    let submitted = false;

    function fireEvents(el) {
    el.dispatchEvent(new Event('input', { bubbles: true }));
    el.dispatchEvent(new Event('change', { bubbles: true }));
    }

    function insertOnce(el) {
    if (inserted) return;
    inserted = true;

    el.focus();

    const ok = document.execCommand('insertText', false, data);

    if (!ok) {
    const setter = Object.getOwnPropertyDescriptor(
    HTMLTextAreaElement.prototype,
    'value'
    )?.set;

    if (setter) setter.call(el, data);
    else el.value = data;
    }

    fireEvents(el);
    }

    function tryRun() {
    const textarea = document.querySelector('textarea');
    if (!textarea || textarea.offsetParent === null) return;

    insertOnce(textarea);

    const btn = document.querySelector('button[type="submit"], .submit');

    if (!submitted && btn && !btn.disabled) {
    submitted = true;
    observer.disconnect();
    clearInterval(interval);
    btn.click();
    }
    }

    const observer = new MutationObserver(tryRun);

    observer.observe(document.documentElement, {
    childList: true,
    subtree: true
    });

    const interval = setInterval(tryRun, 300);

    })();

    Копируем ссылку на YouTube-ролик, жмякаем букмарклет (2 клика, т.к. появится кнопка «Вставить» в целях безопасности). Откроется страничка Яши, и дальше уже всё само.

    Нейросеть YandexGPT кратко перескажет видео на YouTube, статьи и тексты

    Краткий пересказ от нейросети YandexGPT

    userjs/mastodon/mastodon-threaded-replies.user.js at main · afontenot/userjs

    collection of userjs files for various sites . Contribute to afontenot/userjs development by creating an account on GitHub.

    GitHub

    #Mastodon #MastodonTools #userscript #Tampermonkey #виброкодинг

    Решил попробовать скормить скрипт скрытия прочитанных постов #Gemini для окончательного допиливания. Теперь работает. Вот прямо так, как мне нужно было 😀 👍 Теперь не стыдно и показать.

    Что конкретно делает: когда вы скроллите ленту (неважно, вверх или вниз), фиксирует тот факт, что пост был полностью, от начала до конца, виден на экране, и после того, как он проскроллится за его пределы — скрывает его. Запоминает идентификаторы 1000 последних постов в local storage.

    Включается / выключается вот этой кнопочкой. Но эта кнопочка появляется только в многоколоночном режиме, одноколоночным я не пользуюсь, а усложнять не хочу.

    Типичный случай использования — вот вы листаете ленту, остановились где-то, сверху новые посты накопились, вы страничку перезагрузили и получается, что у вас будут непрочитанные, потом прочитанные, потом опять недочитанные. А так — нет 😀 Или, допустим, у вас лента поделена на списки, и нужно решить проблему дублирования.

    Known Issues:

  • Наравне с постами съедает и уведомления (и вдобавок список списков 🙃 ). Я пока не решил, плохо это или хорошо, усложнять не хочу, а включить/выключить не проблема.
  • Если хотите добраться до очень старых постов, то кнопку Загрузить еще внизу придется нажимать много раз. Это не глюк, это, в принципе, логично.
  • Почему-то с первого раза (т.е. при открытии сайта из адресной строки) скрипт не цепляется, только после перезагрузки страницы по F5 🤔 Причину ищу, а пока так.
  • Забирайте, пробуйте, ставьте лайки, спрашивайте вопросы, предлагайте предложения!

    https://github.com/Johan-foreva/Mastodon-Hide-Read-Posts/blob/main/Hide-Read-Posts.js

    So #trakt went down the #enshittification route faster than expected and #Yamtrack lacked some features like cast and crew or check in, so I made some basic user #scripts for that! Feel free to use or adjust them!

    #Tampermonkey #Codeberg #Code

    https://codeberg.org/mcbaumwolle/stuff/src/branch/main/yamtrack

    stuff

    Some random stuff for y'all.

    Codeberg.org
    Wrote some extensions to export Inoreader RSS "read later" items to Readwise as well as ElevenReader - #tampermonkey is super handy for customizing 3rd party site behaviour.

    #wannabelinux 48

    je lis sur #Tampermonkey et non seulement il n'est pas sous licence libre, mais il a été banni par Opera pour des problèmes lié à des produits malicieux. J'en parle à mon AC et il me dit d'installer à la place #Violentmonkey . J'installe donc cette extension, transfère le script dessus et supprime Tampermonkey.

    #wannabelinux 47

    parfois, lorsque je lance une émission en streaming, je perds le plein écran lors du lancement automatique de l'épisode suivant. Je demande donc à mon AC comment régler ça. Il me fait installer l'extension #Tampermonkey pour #Firefox, puis m'écrit un script pour que le plein écran demeure par défaut entre les épisodes.

    ça ne marche pas, alors il me fait modifier la préférence de Firefox "full-screen-api.allow-trusted-requests-only" à "false", et ça fonctionne !

    I've got issues with the PPAC Know Issues UI. So, I decided to solve it via client-side scripting + Claude Code.

    Enhance your Power Platform Admin Center experience with this Tampermonkey script, available in my GitHub repo:
    https://github.com/jukkan/power-bookmarklets

    #PowerPlatform #Tampermonkey #PowerApps #PowerAutomate #Dynamics365