Oneseco Media GITHUB

Oneseco Media GITHUB

3342 bookmarks
Newest
TaskMagic
TaskMagic
Got a manual task? Record yourself doing it ONCE, and never do it again.
·make.taskmagic.com·
TaskMagic
Script
Script
// ==UserScript== // @name Better XVideos.com // @namespace Violentmonkey Scripts // @match https://www.xvideos.com/video* // @grant none // @version 3.0 // @author - // @description Always expand video to large size, scroll down to video, use w a s d to rotate video, q e ` 1 2 3 4 5 z x to seek, v V to frame advance, allow seeking to 0:00, allow clicking anywhere to start video, infinite volume up and down - 2025-05-30, 14:44 // @require https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js // @downloadURL https://update.greasyfork.org/scripts/428264/Better%20XVideoscom.user.js // @updateURL https://update.greasyfork.org/scripts/428264/Better%20XVideoscom.meta.js // ==/UserScript== this.$ = jQuery.noConflict(true); const scrollToVideo = () => { $("div#video-player-bg")[0].scrollIntoView(false); } // Poll until the video has the desired class const scrollToVideoAfterFullWidth = () => { var host = {}; const scrollPoll = (host) => { if ($("div#content")[0].classList.contains("player-enlarged")) { scrollToVideo(); clearInterval(host.id); setTimeout(scrollToVideo, 500); // one more, for Jesus } } host.id = setInterval(scrollPoll.bind(null, host), 5); } $("div#video-player-bg").ready(() => { setTimeout(() => { if (! $("div#content")[0].classList.contains("player-enlarged")) { $("span.pif-full-width")[0].click(); } scrollToVideoAfterFullWidth(); }, 100); }); // Somehow, the below didn't work - the button got added, but when clicking it, // it showed the menu for the next button to the right (originally from xvideos), // and that button showed the menu for the next one, etc. // //$("button#v-actions-overflow-menu").ready(function () { // var rotationButtons = `<button class="tab-button rotate-video-right"><span>Rotate video right (E)</span></button>` // $(rotationButtons).insertAfter("button#v-actions-overflow-menu") //}) const video = $("div#video-player-bg video")[0]; //keyboard handler for various things $("html").ready(() => { // make whole player clickable to start playing $("div.video-pic").click(() => { $("span.pif-play").trigger("click") }); // define our keyboard handler var orientation = 0; // 0, 90, 180, 270 const setVideoOrientation = (angle) => { // set absolute rotation for video if (0 === angle) { // no rotation $("div.video-bg-pic > video").css("transform", ""); return true; } else if(90 === angle) { // rotated to the right const fitScale = Math.min(video.videoWidth / video.videoHeight, video.videoHeight / video.videoWidth); const transform = `rotate(${angle}deg) scale(${fitScale})`; $("div.video-bg-pic > video").css("transform", transform); return true; } else if (180 === angle) { // upside down $("div.video-bg-pic > video").css("transform", "scaleX(-1) scaleY(-1)"); return true; } else if (270 === angle) { // rotated left const fitScale = Math.min(video.videoWidth / video.videoHeight, video.videoHeight / video.videoWidth); const transform = `rotate(${angle}deg) scale(${fitScale})`; $("div.video-bg-pic > video").css("transform", transform); return true; } return false; } const cycleOrientationRight = () => { const desiredOrientation = (orientation % 360) + 90; const moduloOrientation = desiredOrientation % 360; // make sure it's 0...359 orientation = moduloOrientation; } const cycleOrientationLeft = () => { const desiredOrientation = (orientation % 360) - 90; const moduloOrientation = (desiredOrientation + 360) % 360; // make sure it's 0...359. note x % 360 clamps to (-359.999... ... 359.999) orientation = moduloOrientation; } const cycleOrientation180 = () => { const desiredOrientation = (orientation % 360) + 180; const moduloOrientation = desiredOrientation % 360; // make sure it's 0...359 orientation = moduloOrientation; } // Seek to fraction of video between 0 and 1, meaning start and end. const seekFraction = (fraction) => { if((fraction > 1) || (fraction < 0)) { return false; } video.currentTime = video.duration * fraction; return true; } const videoExtraGain = (mediaElem) => { // Chrome compat var context = new(window.AudioContext || window.webkitAudioContext); var result = { context: context, source: context.createMediaElementSource(mediaElem), gain: context.createGain(), media: mediaElem, amplify: function(multiplier) { result.gain.gain.value = multiplier; }, getAmpLevel: function() { return result.gain.gain.value; } }; result.source.connect(result.gain); result.gain.connect(context.destination); result.amplify(1); return result; } const vidGain = videoExtraGain(video); vidGain.amplify(1); var totalGain = video.volume; const gainToDb = (gain) => 20 * Math.log10(gain); const volumeSet = (desiredGain) => { const dBString = gainToDb(desiredGain).toFixed(1); if (desiredGain <= 1) { vidGain.amplify(1); html5player.setVolume(desiredGain); } else { html5player.setVolume(1); vidGain.amplify(desiredGain); } console.log(`Set gain to ${dBString} dB.`); // logging at the end to make it show up after website spam } const volumeUp = () => { const desiredGain = totalGain * (1/0.9); totalGain
·update.greasyfork.org·
Script
Cloudflare Tunnel · Cloudflare Zero Trust docs
Cloudflare Tunnel · Cloudflare Zero Trust docs
Cloudflare Tunnel provides you with a secure way to connect your resources to Cloudflare without a publicly routable IP address. With Tunnel, you do not send traffic to an external IP — instead, a lightweight daemon in your infrastructure (cloudflared) creates outbound-only connections to Cloudflare's global network. Cloudflare Tunnel can connect HTTP web servers, SSH servers, remote desktops, and other protocols safely to Cloudflare. This way, your origins can serve traffic through Cloudflare without being vulnerable to attacks that bypass Cloudflare.
·developers.cloudflare.com·
Cloudflare Tunnel · Cloudflare Zero Trust docs
Overview · Cloudflare Email Routing docs
Overview · Cloudflare Email Routing docs
Cloudflare Email Routing is designed to simplify the way you create and manage email addresses, without needing to keep an eye on additional mailboxes. With Email Routing, you can create any number of custom email addresses to use in situations where you do not want to share your primary email address, such as when you subscribe to a new service or newsletter. Emails are then routed to your preferred email inbox, without you ever having to expose your primary email address.
·developers.cloudflare.com·
Overview · Cloudflare Email Routing docs
@astrojs/cloudflare
@astrojs/cloudflare
Learn how to use the @astrojs/cloudflare adapter to deploy your Astro project.
@astrojs/ cloudflare v12.5.2 GitHub npm Changelog This adapter allows Astro to deploy your on-demand rendered routes and features to Cloudflare, including server islands, actions, and sessions. If you’re using Astro as a static site builder, you don’t need an adapter. Learn how to deploy your Astro site in our Cloudflare deployment guide. Why Astro Cloudflare Section titled Why Astro Cloudflare Cloudflare’s Developer Platform lets you develop full-stack applications with access to resources such as storage and AI, all deployed to a global edge network. This adapter builds your Astro project for deployment through Cloudflare. Installation Section titled Installation Astro includes an astro add command to automate the setup of official integrations. If you prefer, you can install integrations manually instead. Add the Cloudflare adapter to enable server-rendering in your Astro project with the astro add command. This will install @astrojs/cloudflare and make the appropriate changes to your astro.config.mjs file in one step. npm pnpm Yarn Terminal window npx astro add cloudflare Now, you can enable on-demand rendering per page, or set your build output configuration to output: 'server' to server-render all your pages by default. Manual Install Section titled Manual Install First, add the @astrojs/cloudflare adapter to your project’s dependencies using your preferred package manager. npm pnpm Yarn Terminal window npm install @astrojs/cloudflare Then, add the adapter to your astro.config.mjs file: astro.config.mjs import { defineConfig } from 'astro/config'; import cloudflare from '@astrojs/cloudflare'; export default defineConfig({ adapter: cloudflare(), }); Options Section titled Options The Cloudflare adapter accepts the following options: cloudflareModules Section titled cloudflareModules Type: boolean Default: true Enables imports of .wasm, .bin, and .txt modules. This functionality is enabled by default. If you’d like to disable, set cloudflareModules to false. imageService Section titled imageService Type: 'passthrough' | 'cloudflare' | 'compile' | 'custom' Default: 'compile' Determines which image service is used by the adapter. The adapter will default to compile mode when an incompatible image service is configured. Otherwise, it will use the globally configured image service: cloudflare: Uses the Cloudflare Image Resizing service. passthrough: Uses the existing noop service. compile: Uses Astro’s default service (sharp), but only on pre-rendered routes at build time. For pages rendered on-demand, all astro:assets features are disabled. custom: Always uses the image service configured in Image Options. This option will not check to see whether the configured image service works in Cloudflare’s workerd runtime. astro.config.mjs import { defineConfig } from "astro/config"; import cloudflare from '@astrojs/cloudflare'; export default defineConfig({ adapter: cloudflare({ imageService: 'cloudflare' }), }) platformProxy Section titled platformProxy Determines whether and how the Cloudflare runtime is added to astro dev. It contains proxies to local workerd bindings and emulations of Cloudflare specific values, allowing the emulation of the runtime in the Node.js dev process. Read more about the Cloudflare Runtime. Note Proxies provided by this are a best effort emulation of the real production. Although they are designed to be as close as possible to the real thing, there might be a slight differences and inconsistencies between the two. platformProxy.enabled Section titled platformProxy.enabled Type: boolean Default: true Determines whether to enable the Cloudflare runtime in development mode. platformProxy.configPath Section titled platformProxy.configPath Type: string Default: undefined Defines the path to the Wrangler configuration file. If no value is set, it tracks wrangler.toml, wrangler.json, and wrangler.jsonc in the project root. platformProxy.environment Section titled platformProxy.environment Type: string Default: undefined Sets the Cloudflare environment to use. You must select an environment defined in the Wrangler configuration file, otherwise an error occurs. platformProxy.persist Section titled platformProxy.persist Type: boolean | { path: string } Default: true Sets whether and where to save binding data locally to the file system. If set to true, binding data is stored in .wrangler/state/v3/. It is the same as the default setting for wrangler. If set to false, binding data is not stored in file system. If set to { path: string }, binding data is stored in the specified path. Note wrangler’s --persist-to option adds a sub directory called v3 under the hood while the @astrojs/cloudflare persist property does not. For example, to reuse the same location as running wrangler dev --persist-to ./my-directory, you must specify: persist: { path: "./my-directory/v3" }. The following configuration shows an example of enabling the Cloudflare r
·docs.astro.build·
@astrojs/cloudflare