Live stream from your PS4 / Xbox to a local computer running an RTMP server by intercepting the twitch.tv stream.
Requirements
- DD-WRT enabled Router (or router with iptables compatibility)
- nix Envirment
- nginx with the nginx-rtmp-module
<?php | |
//======================================================================================================= | |
// Create new webhook in your Discord channel settings and copy&paste URL | |
//======================================================================================================= | |
$webhookurl = "YOUR_WEBHOOK_URL"; | |
//======================================================================================================= | |
// Compose message. You can use Markdown | |
// Message Formatting -- https://discordapp.com/developers/docs/reference#message-formatting |
# | |
# CORS header support | |
# | |
# One way to use this is by placing it into a file called "cors_support" | |
# under your Nginx configuration directory and placing the following | |
# statement inside your **location** block(s): | |
# | |
# include cors_support; | |
# | |
# As of Nginx 1.7.5, add_header supports an "always" parameter which |
<?php | |
/** | |
* This is free and unencumbered software released into the public domain. | |
* | |
* Anyone is free to copy, modify, publish, use, compile, sell, or | |
* distribute this software, either in source code form or as a compiled | |
* binary, for any purpose, commercial or non-commercial, and by any | |
* means. | |
* |
const maxCount = 500; | |
const counterSelector = '.rtExYb'; | |
const checkboxSelector = '.ckGgle[aria-checked=false]'; | |
const photoDivSelector = ".yDSiEe.uGCjIb.zcLWac.eejsDc.TWmIyd"; | |
const deleteButtonSelector = 'button[aria-label="Delete"]'; | |
const confirmationButtonSelector = '#yDmH0d > div.VfPpkd-Sx9Kwc.cC1eCc.UDxLd.PzCPDd.V639qd.bvQPzd.oEOLpc.A9Uzve.VfPpkd-Sx9Kwc-OWXEXe-FNFY6c > div.VfPpkd-wzTsW.O4g5Md.iWO5td > div > div.VfPpkd-cnG4Wd.m5OsGf > div > div.VfPpkd-T0kwCb.IdSMxc > button.VfPpkd-LgbsSe.VfPpkd-LgbsSe-OWXEXe-k8QpJ.nCP5yc.AjY5Oe.LQeN7.kDryjd'; | |
async function deleteGooglePhotos() { | |
// Retrieves the current count of selected photos | |
const getCount = () => { |
Total props to Brian Cray: http://briancray.com/posts/estimated-reading-time-web-design/ |
/** | |
* Module dependencies. | |
*/ | |
var fs = require('fs'); | |
var ogg = require('ogg'); | |
var lame = require('lame'); | |
var vorbis = require('vorbis'); |
#include <stdint.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
// munged from https://github.com/simontime/Resead | |
namespace sead | |
{ | |
class Random | |
{ |
#!/bin/bash | |
# Note that there's no libdrm because this lib cause errors | |
sudo apt update -y && sudo apt upgrade -y | |
sudo apt-get -y install \ | |
autoconf \ | |
automake \ | |
build-essential \ |
// Browser compat | |
window.AudioContext = window.AudioContext || window.webkitAudioContext; | |
window.RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection; | |
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia; | |
var key = window.location.hash.substring(1); | |
var audio_context = new AudioContext(); | |
var local_output = audio_context.createMediaStreamDestination(); |