@哈雷卫星 #34 对的,现在试用会员额度普遍低,和正价没法比
用户 ID 3264 · 当前名首次快照 2026-08-12 22:18:23 · 当前名始于 2026-08-12 22:18:23 · 原站主页: https://linux.sb/user/3264
共 26 楼
@哈雷卫星 #34 对的,现在试用会员额度普遍低,和正价没法比
艹,我发现兑换卡密不能完全显示全部,我私发你们吧
cpa格式,有用的自己拿去玩吧。
还有这种技术?
@一拳超人 #13 哦哦,点错人了,哈哈
@哈雷卫星 #26 我说的是成品号,就是别人弄好的账号,直接用。不是帮你代充。V站不是天天打广告那家,智友社的,日区号,还是挺稳的。之前只要20多,现在行情涨到68了,不过他家的东西确实稳的。我买过4个号,都是用完整个月
@爱吃肉的棒男孩 #7 我们都是老吃家了
@项少龙 #5 幸亏你没买,通通已经掉订阅了,买的人都是血亏两百多。昨天看到最便宜的一家198
这是修复完ctrl+enter的版本:
// ==UserScript==
// @name 图床linuxdoissb
// @namespace https://linux.sb/
// @connect 22.2222222.best
// @version 0.9.1
// @description 为 linux.sb 专门写的图床插件,支持粘贴、拖放、按钮上传到 EasyImages,并修复 Ctrl+Enter 错误提交搜索框的问题
// @author 大帅哥
// @match *://linux.sb/*
// @match *://hostloc.com/*
// @icon https://linux.sb/app/assets/index.svg
// @grant GM_xmlhttpRequest
// @license MPL-1.0 License
// @downloadURL http://192.168.1.1/jiaoben/%E5%9B%BE%E5%BA%8Alinuxdoissb.user.js
// @updateURL http://192.168.1.1/jiaoben/%E5%9B%BE%E5%BA%8Alinuxdoissb.user.js
// ==/UserScript==
(function () {
'use strict';
const imgHost = {
type: 'EasyImages',
url: 'https://22.2222222.best',
token: '4ed5cc908146b9318849e586dc0280f1',
};
const mdImgName = 'image';
const submitByKey = true;
const EDITOR_SELECTOR = 'textarea#markdown-textarea-1, textarea[name="body"]';
const TOOLBAR_SELECTOR = '.markdown-textarea[data-markdown-textarea], .markdown-textarea';
const IMAGE_BTN_SELECTOR = 'button[data-markdown-action="image"]';
window.addEventListener('load', initEditorEnhancer, false);
function getEditor() {
return document.querySelector(EDITOR_SELECTOR);
}
function getToolbar() {
return document.querySelector(TOOLBAR_SELECTOR);
}
function initEditorEnhancer() {
document.addEventListener('paste', handlePasteEvt);
bindDropZone();
const dropTimer = setInterval(() => {
if (bindDropZone()) clearInterval(dropTimer);
}, 300);
setTimeout(() => clearInterval(dropTimer), 15000);
const btnTimer = setInterval(() => {
const oldBtn = document.querySelector(IMAGE_BTN_SELECTOR);
if (!oldBtn) return;
clearInterval(btnTimer);
const newBtn = oldBtn.cloneNode(true);
oldBtn.parentNode.replaceChild(newBtn, oldBtn);
newBtn.addEventListener('click', (event) => {
event.preventDefault();
event.stopPropagation();
handleImgBtnClick();
});
}, 200);
setTimeout(() => clearInterval(btnTimer), 15000);
if (submitByKey) {
document.addEventListener('keydown', handleCtrlEnter);
}
}
function handleCtrlEnter(event) {
if (!(event.ctrlKey && event.key === 'Enter')) return;
const editor = event.target instanceof Element
? event.target.closest(EDITOR_SELECTOR)
: null;
if (!editor) return;
const form = editor.closest('form.ajax-reply-form, form[action="/reply_edit"]');
if (!form) return;
const submitButton = form.querySelector('button[type="submit"], input[type="submit"]');
if (!submitButton || submitButton.disabled) return;
event.preventDefault();
event.stopPropagation();
form.requestSubmit(submitButton);
}
function bindDropZone() {
const dropZone = getEditor();
if (!dropZone || dropZone.dataset.easyimgDropBound === '1') return Boolean(dropZone);
dropZone.dataset.easyimgDropBound = '1';
dropZone.addEventListener('dragover', (event) => {
event.preventDefault();
event.stopPropagation();
event.dataTransfer.dropEffect = 'copy';
});
dropZone.addEventListener('drop', (event) => {
event.preventDefault();
event.stopPropagation();
log('正在处理拖放内容...');
const imageFiles = [];
for (const file of event.dataTransfer.files) {
if (/^image\//i.test(file.type)) {
imageFiles.push(file);
log(`拖放的文件名: ${file.name}`);
}
}
log(`拖放的图片数量: ${imageFiles.length}`);
if (imageFiles.length === 0) {
log('你拖放的内容好像没有图片哦', 'red');
return;
}
uploadImage(imageFiles.map((file) => ({
kind: 'file',
type: file.type,
getAsFile: () => file,
})));
});
return true;
}
function handlePasteEvt(event) {
const clipboard = event.clipboardData || event.originalEvent?.clipboardData;
const items = clipboard?.items;
if (!items || items.length === 0) return;
const hasImage = Array.from(items).some(
(item) => item.kind === 'file' && item.type.startsWith('image/')
);
if (!hasImage) return;
event.preventDefault();
log('正在处理粘贴内容...');
uploadImage(items);
}
function handleImgBtnClick() {
const input = document.createElement('input');
input.type = 'file';
input.multiple = true;
input.accept = 'image/*';
input.onchange = (event) => {
const files = event.target.files;
if (!files?.length) return;
uploadImage([...files].map((file) => ({
kind: 'file',
type: file.type,
getAsFile: () => file,
})));
};
input.click();
}
async function uploadImage(items) {
const imageFiles = [];
for (const item of items) {
if (item.kind === 'file' && item.type.startsWith('image/')) {
imageFiles.push(item.getAsFile());
}
}
if (imageFiles.length === 0) {
log('你粘贴的内容好像没有图片哦', 'red');
return;
}
for (let index = 0; index < imageFiles.length; index += 1) {
log(imageFiles.length > 1
? `上传第 ${index + 1} / ${imageFiles.length} 张图片...`
: '上传图片...');
await uploadToEasyImages(imageFiles[index]);
}
}
function uploadToEasyImages(file) {
return new Promise((resolve, reject) => {
let url = imgHost.url;
const formData = new FormData();
if (imgHost.token) {
url += '/api/index.php';
formData.append('token', imgHost.token);
formData.append('image', file);
} else {
url += '/app/upload.php';
formData.append('file', file);
formData.append('sign', Math.floor(Date.now() / 1000));
}
GM_xmlhttpRequest({
method: 'POST',
url,
data: formData,
onload: (response) => {
let data;
try {
data = JSON.parse(response.responseText);
} catch (error) {
log('图片上传失败: 响应不是 JSON', 'red');
reject(error);
return;
}
if (response.status !== 200) {
log(`图片上传失败: ${response.status} ${response.statusText}`, 'red');
reject(data.result);
return;
}
if (data.code === 200 && data.url) {
log('图片上传成功', 'green');
insertToEditor(``);
} else if (data.code === 200) {
log('图片上传成功, 但接口返回有误', 'red');
insertToEditor(`图片上传成功, 但接口返回有误: ${JSON.stringify(data)}`);
} else {
log(`图片上传失败: ${JSON.stringify(data)}`, 'red');
}
resolve();
},
onerror: (error) => {
log(`图片上传失败: ${error.status} ${error.statusText}`, 'red');
reject(error);
},
});
});
}
function insertToEditor(text) {
const textarea = getEditor()
|| document.querySelector('#e_textarea')
|| document.querySelector('#fastpostmessage');
if (!textarea) {
log('出现错误: 未找到编辑栏', 'red');
return;
}
const start = typeof textarea.selectionStart === 'number'
? textarea.selectionStart
: textarea.value.length;
const end = typeof textarea.selectionEnd === 'number'
? textarea.selectionEnd
: start;
const insert = `\n${text}\n`;
textarea.value = textarea.value.substring(0, start)
+ insert
+ textarea.value.substring(end);
const position = start + insert.length;
textarea.selectionStart = textarea.selectionEnd = position;
textarea.focus();
textarea.dispatchEvent(new Event('input', { bubbles: true }));
textarea.dispatchEvent(new Event('change', { bubbles: true }));
if (text.startsWith('![')) log('图片已插入到编辑器~', 'green');
}
function log(message, color = '') {
if (!document.getElementById('editor-enhance-logs')) initEditorLogDiv();
const logDiv = document.getElementById('editor-enhance-logs');
if (logDiv) {
logDiv.innerHTML = `<div${color ? ` style="color:${color};"` : ''}> ${message} </div>`;
}
console.log(`[Editor-EasyImages] ${message}`);
}
function initEditorLogDiv() {
let logDiv = document.getElementById('editor-enhance-logs');
if (!logDiv) {
logDiv = document.createElement('div');
logDiv.id = 'editor-enhance-logs';
document.body.appendChild(logDiv);
}
const toolbar = getToolbar();
if (toolbar && !toolbar.con@douzi #10 这是我自己本地cockpit的号池啊,其中的号是我P的,没有那么多20x
买月抛产品好就得了,codex兑换反正在本地,
月抛才70左右,还不需要长效接码,不需要什么支付方式啥的
已成功兑换虚拟卡「软件下载链接」。
你两个的名字真般配
@一拳超人 #7 你这个脚本好像有问题,会导致ctrl+enter直接回首页。编辑完回复内容,一按,直接回首页了,搞了我好几次脑子。刚刚让codex查出来是你脚本的bug。我自己修复了。
豆包其实有免费的 API 可以用,然后用codex搓一个就行了。

@b友 #1 现在有 AI 加持,啥功能会做不下去?那倒不是分分钟的事情吗
青龙,启动
内测版不是出了吗,我感觉不好用。我只需要他的语音识别功能,打字功能还太弱。
不,你们是傻逼,我们都是傻逼
肯定是屎黄干的,骂他就对了
这平台没限制只能兑换一次吗
@siliconbird #11 我摸了一下,下面全湿了
属于需要在linux.sb给我们发福利的级别
把他筛掉,炫耀自己linux.do三级的,能是什么好东西