浏览器免费观影
分类:
技术
简介:当今社会,随着互联网的迅猛发展,人们获取信息和娱乐的方式也愈发多样化。在这个数字化时代,浏览器不仅是我们日常网络冲浪的工具,更成为了一扇开启无限可能的窗口。
无需担心会员费用,不必因为地域限制而苦恼,浏览器免费观影为我们提供了一个轻松、便捷的娱乐选择。
保姆级ChatGPT注册教程
分类:
技术
简介:成本我之前注册差不多在8元(其实用不到这么多,只是最低充值的原因),不过接码平台会涨价,具体要看你注册的时候接码平台的最低充值余额条件我们在注册gpt时,除了会科学上网外,需要用到两个东西我们先注册一个谷歌邮箱网页端这里我们可以使用谷歌邮箱的App进行操作,自己在应用商店/app store下载即可点击注册(为自己注册)把相关信息填完,再点击下一步点击右边的美国国旗,可以选择手机号划到最下面,有中国的+86,这里我们可以用自己国内的号码注册如果有这样的提示,你可以换手机app进行注册到这里我们就完成了谷歌邮箱的注册,下面我们来准备短信接收准备接收短信的手机号这里我用的是sms,点击注册账号就好,这里我们不介绍如何注册sms账号(过于简单,有脑子就行)SMS 👈充值余额找到支付宝进行充值,注意这里一般是美金,不要填大面额(有钱当我没说 😴 )这里他有最低充值面额到这里,可以接收短信的“平台”就准备好了,下面我们进行注册Chatgpt官网点击注册使用之前注册的谷歌邮箱登录填写信息(生日选择要靠前,如2002)点击美国国旗,选择你要接受验证码的手机号“国籍”,这里不能用国内电话注册这里我们需要用到之前的SMS,所以我们要返回sms。在操作时我们可以另开一个网页,进行接码操作返回接码平台,SMS 👈选择OpenAI购买左边为国家,右边购物车为购买,下面点击更多,可以加载更多可选择手机号注意:这里选择的手机号要与你在gpt所要注册的手机号“国籍”一致点击购物车后,一般会自动跳转到验证码接收页面,我们只需点击复制按钮,将其粘贴至chatgpt的填写手机号页面即可,如果ChatGPT·那边提示有误,你可以取消这个手机号,不用担心会扣钱,重新选择手机号购买即可,祝你注册顺利 😁GPT账号目前卖的还是有便宜的,如果有人给你说要十几二十块就没必要买他的,一般都在3块左右短信接收网站补充👇点击这里
搭建一个api随机图
分类:
技术
简介:第一种方法(以图片源文件进行随机)步骤新建一个文件夹,命名为:img(这个文件里放你需要的图片)新建一个index.php文件,写入以下代码 (这个文件就是api地址)代码 <?php
$img_array = glob('img/*.{gif,jpg,png,jpeg,webp,bmp}', GLOB_BRACE);
if(count($img_array) == 0) die('没找到图片文件。请先上传一些图片到 '.dirname(__FILE__).'/img/');
header('Content Type: image/png');
echo(file_get_contents($img_array[array_rand($img_array)]));
?>第二种方法(以图片链接进行随机)步骤创建一个img.txt文件 (这个文件里放你的储存的图片链接,一行一条)新建一个index.php文件,写入以下代码 (这个文件就是api地址)代码 <?php
//存有链接的文件名,这里是存放图片链接的txt文件
$filename = "img.txt";
if(!file_exists($filename)){
die('文件不存在');
}
//从文本获取链接
$pics = [];
$fs = fopen($filename, "r");
while(!feof($fs)){
$line=trim(fgets($fs));
if($line!=''){
array_push($pics, $line);
}
}
//从数组随机获取链接
$pic = $pics[array_rand($pics)];
//返回指定格式
$type=$_GET['type'];
switch($type){
//JSON返回
case 'json':
header('Content type:text/json');
die(json_encode(['pic'=>$pic]));
default:
die(header("Location: $pic"));
}
给网站加一个点击音效
分类:
技术
简介:JS代码音频时间还是不要太长😋<script>
// 创建音频元素
var audio = new Audio('/mp3/kunkun.mp3'); // 替换成你的音效文件路径
// 处理点击事件的函数
function playSound() {
audio.play();
}
// 添加点击事件监听器
document.addEventListener('click', playSound);
</script>
圣诞树代码
分类:
技术
简介:一个圣诞树的html代码,拿去分享给你的Girlfriend叭👻<!DOCTYPE html>
<html lang="en">
<head><meta name="viewport" content="width=device width, initial scale=1.0, maximum scale=1.0, minimum scale=1.0, user scalable=no">
<meta charset="UTF 8">
<title>送给女朋友的圣诞树</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<style>
* {
box sizing: border box;
}
body {
margin: 0;
height: 100vh;
overflow: hidden;
display: flex;
align items: center;
justify content: center;
background: #161616;
color: #c5a880;
font family: sans serif;
}
label {
display: inline block;
background color: #161616;
padding: 16px;
border radius: 0.3rem;
cursor: pointer;
margin top: 1rem;
width: 300px;
border radius: 10px;
border: 1px solid #c5a880;
text align: center;
}
ul {
list style type: none;
padding: 0;
margin: 0;
}
.btn {
background color: #161616;
border radius: 10px;
color: #c5a880;
border: 1px solid #c5a880;
padding: 16px;
width: 300px;
margin bottom: 16px;
line height: 1.5;
cursor: pointer;
}
.separator {
font weight: bold;
text align: center;
width: 300px;
margin: 16px 0px;
color: #a07676;
}
.title {
color: #a07676;
font weight: bold;
font size: 1.25rem;
margin bottom: 16px;
}
.text loading {
font size: 2rem;
}
</style>
<script>
window.console = window.console || function (t) ;
</script>
<script>
if (document.location.search.match(/type=embed/gi)) {
window.parent.postMessage("resize", "*");
}
</script>
</head>
<body translate="no">
<script src="https://cdn.jsdelivr.net/npm/three@0.115.0/build/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.115.0/examples/js/postprocessing/EffectComposer.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.115.0/examples/js/postprocessing/RenderPass.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.115.0/examples/js/postprocessing/ShaderPass.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.115.0/examples/js/shaders/CopyShader.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.115.0/examples/js/shaders/LuminosityHighPassShader.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.115.0/examples/js/postprocessing/UnrealBloomPass.js"></script>
<div id="overlay">
<ul>
<li class="title">请选择音乐</li>
<li>
<button class="btn" id="btnA" type="button">
Snowflakes Falling Down by 阿多
</button>
</li>
<li><button class="btn" id="btnB" type="button">This Christmas by 千雨云</button></li>
<li><button class="btn" id="btnC" type="button">No room at the inn by 鱼鱼</button></li>
<li><button class="btn" id="btnD" type="button">Jingle Bell Swing by 小测</button></li>
<li class="separator">或者</li>
<li>
<input type="file" id="upload" hidden />
<label for="upload">Upload File</label>
</li>
</ul>
</div>
<script id="rendered js">
const { PI, sin, cos } = Math;
const TAU = 2 * PI;
const map = (value, sMin, sMax, dMin, dMax) => {
return dMin + (value sMin) / (sMax sMin) * (dMax dMin);
};
const range = (n, m = 0) =>
Array(n).
fill(m).
map((i, j) => i + j);
const rand = (max, min = 0) => min + Math.random() * (max min);
const randInt = (max, min = 0) => Math.floor(min + Math.random() * (max min));
const randChoise = arr => arr[randInt(arr.length)];
const polar = (ang, r = 1) => [r * cos(ang), r * sin(ang)];
let scene, camera, renderer, analyser;
let step = 0;
const uniforms = {
time: { type: "f", value: 0.0 },
step: { type: "f", value: 0.0 }
};
const params = {
exposure: 1,
bloomStrength: 0.9,
bloomThreshold: 0,
bloomRadius: 0.5
};
let composer;
const fftSize = 2048;
const totalPoints = 4000;
const listener = new THREE.AudioListener();
const audio = new THREE.Audio(listener);
document.querySelector("input").addEventListener("change", uploadAudio, false);
const buttons = document.querySelectorAll(".btn");
buttons.forEach((button, index) =>
button.addEventListener("click", () => loadAudio(index)));
function init() {
const overlay = document.getElementById("overlay");
overlay.remove();
scene = new THREE.Scene();
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
camera = new THREE.PerspectiveCamera(
60,
window.innerWidth / window.innerHeight,
1,
1000);
camera.position.set( 0.09397456774197047, 2.5597086635726947, 24.420789670889008);
camera.rotation.set(0.10443543723052419, 0.003827152981119352, 0.0004011488708739715);
const format = renderer.capabilities.isWebGL2 ?
THREE.RedFormat :
THREE.LuminanceFormat;
uniforms.tAudioData = {
value: new THREE.DataTexture(analyser.data, fftSize / 2, 1, format)
};
addPlane(scene, uniforms, 3000);
addSnow(scene, uniforms);
range(10).map(i => {
addTree(scene, uniforms, totalPoints, [20, 0, 20 * i]);
addTree(scene, uniforms, totalPoints, [ 20, 0, 20 * i]);
});
const renderScene = new THREE.RenderPass(scene, camera);
const bloomPass = new THREE.UnrealBloomPass(
new THREE.Vector2(window.innerWidth, window.innerHeight),
1.5,
0.4,
0.85);
bloomPass.threshold = params.bloomThreshold;
bloomPass.strength = params.bloomStrength;
bloomPass.radius = params.bloomRadius;
composer = new THREE.EffectComposer(renderer);
composer.addPass(renderScene);
composer.addPass(bloomPass);
addListners(camera, renderer, composer);
animate();
}
function animate(time) {
analyser.getFrequencyData();
uniforms.tAudioData.value.needsUpdate = true;
step = (step + 1) % 1000;
uniforms.time.value = time;
uniforms.step.value = step;
composer.render();
requestAnimationFrame(animate);
}
function loadAudio(i) {
document.getElementById("overlay").innerHTML =
'<div class="text loading">正在下载音乐,请稍等...</div>';
const files = [
"https://files.freemusicarchive.org/storage freemusicarchive org/music/no_curator/Simon_Panrucker/Happy_Christmas_You_Guys/Simon_Panrucker_ _01_ _Snowflakes_Falling_Down.mp3",
"https://files.freemusicarchive.org/storage freemusicarchive org/music/no_curator/Dott/This_Christmas/Dott_ _01_ _This_Christmas.mp3",
"https://files.freemusicarchive.org/storage freemusicarchive org/music/ccCommunity/TRG_Banks/TRG_Banks_Christmas_Album/TRG_Banks_ _12_ _No_room_at_the_inn.mp3",
"https://files.freemusicarchive.org/storage freemusicarchive org/music/ccCommunity/Mark_Smeby/En_attendant_Nol/Mark_Smeby_ _07_ _Jingle_Bell_Swing.mp3"];
const file = files[i];
const loader = new THREE.AudioLoader();
loader.load(file, function (buffer) {
audio.setBuffer(buffer);
audio.play();
analyser = new THREE.AudioAnalyser(audio, fftSize);
init();
});
}
function uploadAudio(event) {
document.getElementById("overlay").innerHTML =
'<div class="text loading">请稍等...</div>';
const files = event.target.files;
const reader = new FileReader();
reader.onload = function (file) {
var arrayBuffer = file.target.result;
listener.context.decodeAudioData(arrayBuffer, function (audioBuffer) {
audio.setBuffer(audioBuffer);
audio.play();
analyser = new THREE.AudioAnalyser(audio, fftSize);
init();
});
};
reader.readAsArrayBuffer(files[0]);
}
function addTree(scene, uniforms, totalPoints, treePosition) {
const vertexShader = `
attribute float mIndex;
varying vec3 vColor;
varying float opacity;
uniform sampler2D tAudioData;
float norm(float value, float min, float max ){
return (value min) / (max min);
}
float lerp(float norm, float min, float max){
return (max min) * norm + min;
}
float map(float value, float sourceMin, float sourceMax, float destMin, float destMax){
return lerp(norm(value, sourceMin, sourceMax), destMin, destMax);
}
void main() {
vColor = color;
vec3 p = position;
vec4 mvPosition = modelViewMatrix * vec4( p, 1.0 );
float amplitude = texture2D( tAudioData, vec2( mIndex, 0.1 ) ).r;
float amplitudeClamped = clamp(amplitude 0.4,0.0, 0.6 );
float sizeMapped = map(amplitudeClamped, 0.0, 0.6, 1.0, 20.0);
opacity = map(mvPosition.z , 200.0, 15.0, 0.0, 1.0);
gl_PointSize = sizeMapped * ( 100.0 / mvPosition.z );
gl_Position = projectionMatrix * mvPosition;
}
`;
const fragmentShader = `
varying vec3 vColor;
varying float opacity;
uniform sampler2D pointTexture;
void main() {
gl_FragColor = vec4( vColor, opacity );
gl_FragColor = gl_FragColor * texture2D( pointTexture, gl_PointCoord );
}
`;
const shaderMaterial = new THREE.ShaderMaterial({
uniforms: {
...uniforms,
pointTexture: {
value: new THREE.TextureLoader().load(`https://assets.codepen.io/3685267/spark1.png`)
}
},
vertexShader,
fragmentShader,
blending: THREE.AdditiveBlending,
depthTest: false,
transparent: true,
vertexColors: true
});
const geometry = new THREE.BufferGeometry();
const positions = [];
const colors = [];
const sizes = [];
const phases = [];
const mIndexs = [];
const color = new THREE.Color();
for (let i = 0; i < totalPoints; i++) {
const t = Math.random();
const y = map(t, 0, 1, 8, 10);
const ang = map(t, 0, 1, 0, 6 * TAU) + TAU / 2 * (i % 2);
const [z, x] = polar(ang, map(t, 0, 1, 5, 0));
const modifier = map(t, 0, 1, 1, 0);
positions.push(x + rand( 0.3 * modifier, 0.3 * modifier));
positions.push(y + rand( 0.3 * modifier, 0.3 * modifier));
positions.push(z + rand( 0.3 * modifier, 0.3 * modifier));
color.setHSL(map(i, 0, totalPoints, 1.0, 0.0), 1.0, 0.5);
colors.push(color.r, color.g, color.b);
phases.push(rand(1000));
sizes.push(1);
const mIndex = map(i, 0, totalPoints, 1.0, 0.0);
mIndexs.push(mIndex);
}
geometry.setAttribute(
"position",
new THREE.Float32BufferAttribute(positions, 3).setUsage(
THREE.DynamicDrawUsage));
geometry.setAttribute("color", new THREE.Float32BufferAttribute(colors, 3));
geometry.setAttribute("size", new THREE.Float32BufferAttribute(sizes, 1));
geometry.setAttribute("phase", new THREE.Float32BufferAttribute(phases, 1));
geometry.setAttribute("mIndex", new THREE.Float32BufferAttribute(mIndexs, 1));
const tree = new THREE.Points(geometry, shaderMaterial);
const [px, py, pz] = treePosition;
tree.position.x = px;
tree.position.y = py;
tree.position.z = pz;
scene.add(tree);
}
function addSnow(scene, uniforms) {
const vertexShader = `
attribute float size;
attribute float phase;
attribute float phaseSecondary;
varying vec3 vColor;
varying float opacity;
uniform float time;
uniform float step;
float norm(float value, float min, float max ){
return (value min) / (max min);
}
float lerp(float norm, float min, float max){
return (max min) * norm + min;
}
float map(float value, float sourceMin, float sourceMax, float destMin, float destMax){
return lerp(norm(value, sourceMin, sourceMax), destMin, destMax);
}
void main() {
float t = time* 0.0006;
vColor = color;
vec3 p = position;
p.y = map(mod(phase+step, 1000.0), 0.0, 1000.0, 25.0, 8.0);
p.x += sin(t+phase);
p.z += sin(t+phaseSecondary);
opacity = map(p.z, 150.0, 15.0, 0.0, 1.0);
vec4 mvPosition = modelViewMatrix * vec4( p, 1.0 );
gl_PointSize = size * ( 100.0 / mvPosition.z );
gl_Position = projectionMatrix * mvPosition;
}
`;
const fragmentShader = `
uniform sampler2D pointTexture;
varying vec3 vColor;
varying float opacity;
void main() {
gl_FragColor = vec4( vColor, opacity );
gl_FragColor = gl_FragColor * texture2D( pointTexture, gl_PointCoord );
}
`;
function createSnowSet(sprite) {
const totalPoints = 300;
const shaderMaterial = new THREE.ShaderMaterial({
uniforms: {
...uniforms,
pointTexture: {
value: new THREE.TextureLoader().load(sprite)
}
},
vertexShader,
fragmentShader,
blending: THREE.AdditiveBlending,
depthTest: false,
transparent: true,
vertexColors: true
});
const geometry = new THREE.BufferGeometry();
const positions = [];
const colors = [];
const sizes = [];
const phases = [];
const phaseSecondaries = [];
const color = new THREE.Color();
for (let i = 0; i < totalPoints; i++) {
const [x, y, z] = [rand(25, 25), 0, rand(15, 150)];
positions.push(x);
positions.push(y);
positions.push(z);
color.set(randChoise(["#f1d4d4", "#f1f6f9", "#eeeeee", "#f1f1e8"]));
colors.push(color.r, color.g, color.b);
phases.push(rand(1000));
phaseSecondaries.push(rand(1000));
sizes.push(rand(4, 2));
}
geometry.setAttribute(
"position",
new THREE.Float32BufferAttribute(positions, 3));
geometry.setAttribute("color", new THREE.Float32BufferAttribute(colors, 3));
geometry.setAttribute("size", new THREE.Float32BufferAttribute(sizes, 1));
geometry.setAttribute("phase", new THREE.Float32BufferAttribute(phases, 1));
geometry.setAttribute(
"phaseSecondary",
new THREE.Float32BufferAttribute(phaseSecondaries, 1));
const mesh = new THREE.Points(geometry, shaderMaterial);
scene.add(mesh);
}
const sprites = [
"https://assets.codepen.io/3685267/snowflake1.png",
"https://assets.codepen.io/3685267/snowflake2.png",
"https://assets.codepen.io/3685267/snowflake3.png",
"https://assets.codepen.io/3685267/snowflake4.png",
"https://assets.codepen.io/3685267/snowflake5.png"];
sprites.forEach(sprite => {
createSnowSet(sprite);
});
}
function addPlane(scene, uniforms, totalPoints) {
const vertexShader = `
attribute float size;
attribute vec3 customColor;
varying vec3 vColor;
void main() {
vColor = customColor;
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
gl_PointSize = size * ( 300.0 / mvPosition.z );
gl_Position = projectionMatrix * mvPosition;
}
`;
const fragmentShader = `
uniform vec3 color;
uniform sampler2D pointTexture;
varying vec3 vColor;
void main() {
gl_FragColor = vec4( vColor, 1.0 );
gl_FragColor = gl_FragColor * texture2D( pointTexture, gl_PointCoord );
}
`;
const shaderMaterial = new THREE.ShaderMaterial({
uniforms: {
...uniforms,
pointTexture: {
value: new THREE.TextureLoader().load(`https://assets.codepen.io/3685267/spark1.png`)
}
},
vertexShader,
fragmentShader,
blending: THREE.AdditiveBlending,
depthTest: false,
transparent: true,
vertexColors: true
});
const geometry = new THREE.BufferGeometry();
const positions = [];
const colors = [];
const sizes = [];
const color = new THREE.Color();
for (let i = 0; i < totalPoints; i++) {
const [x, y, z] = [rand( 25, 25), 0, rand( 150, 15)];
positions.push(x);
positions.push(y);
positions.push(z);
color.set(randChoise(["#93abd3", "#f2f4c0", "#9ddfd3"]));
colors.push(color.r, color.g, color.b);
sizes.push(1);
}
geometry.setAttribute(
"position",
new THREE.Float32BufferAttribute(positions, 3).setUsage(
THREE.DynamicDrawUsage));
geometry.setAttribute(
"customColor",
new THREE.Float32BufferAttribute(colors, 3));
geometry.setAttribute("size", new THREE.Float32BufferAttribute(sizes, 1));
const plane = new THREE.Points(geometry, shaderMaterial);
plane.position.y = 8;
scene.add(plane);
}
function addListners(camera, renderer, composer) {
document.addEventListener("keydown", e => {
const { x, y, z } = camera.position;
console.log(`camera.position.set($ ,${y},${z})`);
const { x: a, y: b, z: c } = camera.rotation;
console.log(`camera.rotation.set(${a},${b},${c})`);
});
window.addEventListener(
"resize",
() => {
const width = window.innerWidth;
const height = window.innerHeight;
camera.aspect = width / height;
camera.updateProjectionMatrix();
renderer.setSize(width, height);
composer.setSize(width, height);
},
false);
}
</script>
</body>
</html>