转跳到内容

排行榜

热门内容

显示于 2026年03月27日 在所有范围中最高声望的内容

  1. 原帖地址 有些人出现在你的生命里,是为了改变一切。 Kris Dreemurr, 从我们相遇的那一刻起,我的世界就开始悄悄偏移—— 那些原本平凡的日子,因为你而有了重量; 那些我曾独自面对的时刻,因为你而变得温柔。 你不是轰轰烈烈闯进来的, 你更像是一段旋律,慢慢地,反复地, 最终成为我生命中无法缺席的一部分。 我开始习惯把未来的每一个设想都与你有关: 清晨的第一杯咖啡, 夜晚回家的那盏灯, 甚至是那些我们还未经历,却已经期待的普通日子。 也许这个世界并不完美, 但你让我相信—— 只要和你一起,就已经足够完整。 所以今天,我想认真地问你: 你愿意,和我一起走过接下来的所有故事吗? 无论顺境逆境,无论平凡或波澜, 我都希望站在你身边, 不是短暂的一段旅程,而是一生。 Kris Dreemurr, 你愿意嫁给我吗? (Generated By: ChatGPT) (但是是出自真心!)
    4
  2. GPT太好用了你知道吗? 但是Openai的api太太太太贵啦!跟抢钱没有区别? 教大家一招,如何白嫖openai api,额度近乎无限!! 不花一分钱!! 概括整个流程就是: 创了一个域名邮箱,然后用那个邮箱挂美区梯子,注册一个账号. 然后白嫖活动一个team.买这个team需要一张虚拟卡——而有个虚拟卡网站1rmb买一张卡。 然后把自己的四个号再拉进那个team里,然后就五个号额度轮流用。 虚拟卡方案 获取一个域名邮箱,可通过 /某Github项目 自行搭建,如果没有,可以使用 /某站 使用域名邮箱,全程美国梯子,到 /GPT官网 注册新账号。 登录,点击顶部Free Offer。 点击Claim Free Offer 到 /某站 购买一张0刀虚拟卡,完成绑卡 如果绑卡失败,不要多次尝试,大概率是 IP/浏览器环境不干净导致的,可尝试更换火狐浏览器,更换IP等。注:不要使用开卡页面给的个人信息,自行到 /某网站 生成并填入,开哪个国家的卡就生成哪个国家的地址,以免被风控导致翻车!如果绑不上就换FireFox无痕模式! 可能会翻车,一卡多绑必翻车,paypal基本不翻车。 打字打到一半发现这里居然不让发链接。那只能分享大致的思路,供大家参考了。
    3
  3. 现在做的音乐电台形式分享音乐的好处是不用拘泥于某个主题,想整点啥就整点啥。 所以我不会对口播的音质做保证,毕竟全是兴之所至的内容 内容有29分钟所以加载会比较慢,还请略有耐心 音频内容是咱的一些碎碎念与六首歌,想直接搜来听的话下面是六首歌的名字 下面是召唤阵
    2
  4. 我现在觉得论坛的管理员们(应该是这样叫吧)好活跃好热情,我还认真看了一下,论坛目前总用户40万,在线就有4000多,而且根据互动这个活跃度真的很高,我今年已经找了很多以前看过的老论坛,有些注册过账号,有些没有注册过,感觉大部分论坛都没人很冷清(不知道能不能说外面的论坛)曾经著名的汉化组澄空,注册会员就有80多万,但是现在已经变成空城了,还有比如有50万的注册会员基本只有签到没有多少活人帖子,还有一些资源型论坛也是空有签到,剩下全是无意义的水帖,有些论坛已经连签到都没有了,所以我觉得我们论坛这个环境目前感觉真的很不错。 论坛的黄金时代已经过去了,这不是某个论坛的问题,而是时代的问题,但是论坛的兴衰是必然的,我们不能留住一切,我们也不需要留住一切,我们只需要把握住现在就可以,年年岁岁花相似,岁岁年年人不同,包括我看最新的主题回复里面新番连载回复查看也不多,不知道是不是版块还是时间的问题,但其实我进这个论坛我最开始就不是奔着拿资源来的,说实话我也挺久没有玩h游了,我是今年开始穿梭回忆各个老论坛,从某个人的发言中又看到了sstm,然后我回想起来,哦,我当年也玩好多这个论坛的游戏,于是我终于找到了,然后注册,拿资源对我来说都不是主需,我更想的是体验这个论坛的生态,当然,以上仅是个人想法,为了资源而来我也是理解的,但是对我来说,一个论坛人比资源会让我更想留在这里,不知道大家怎么看呢
    1
  5. 电脑端,使用tampermonkey插件,试试看把这个脚本拷贝进去,如果是你有修改权限的帖子会删除附件,如果你没修改权限的话会报404,至少我实验是有效的 // ==UserScript== // @name SSTM 附件页删除按钮(区分主题/回复) // @namespace https://example.com/ // @version 0.2.0 // @author sstm脚本组 // @description 在 https://sstm.moe/attachments/ 页面为每个附件块插入删除按钮,并根据来源链接自动判断编辑主题还是编辑回复 // @match https://sstm.moe/attachments/* // @match https://sstm.moe/attachments/ // @grant none // ==/UserScript== (function () { 'use strict'; const CONFIG = { itemSelector: 'div.ipsDataItem.ipsAttach', attachmentLinkSelector: 'a[href*="/applications/core/interface/file/attachment.php?id="]', sourceLinkSelector: '.ipsDataItem_generic.ipsDataItem_size9 a[href*="/topic/"]', buttonClass: 'sstm-delete-attachment-btn', confirmBeforeDelete: true, debug: true }; function log(...args) { if (CONFIG.debug) { console.log('[SSTM Attachment Delete]', ...args); } } function absoluteUrl(url) { return new URL(url, location.origin).toString(); } function getCsrfKey() { const fromMeta = document.querySelector('meta[name="csrfKey"]')?.content; if (fromMeta) return fromMeta; const fromWindow1 = window.ips?.getSetting?.('csrfKey'); if (fromWindow1) return fromWindow1; const fromWindow2 = window.ipsSettings?.csrfKey; if (fromWindow2) return fromWindow2; const m = document.cookie.match(/(?:^|;\s*)csrfKey=([^;]+)/); if (m) return decodeURIComponent(m[1]); return null; } function extractAttachmentId(item) { const link = item.querySelector(CONFIG.attachmentLinkSelector); if (!link) return null; try { const url = new URL(link.href, location.origin); return url.searchParams.get('id'); } catch (e) { return null; } } function extractFileName(item) { const el = item.querySelector('.ipsAttach_title a, .ipsDataItem_title a'); return el ? el.textContent.trim() : '未知附件'; } function extractSourceInfo(item) { const sourceLink = item.querySelector(CONFIG.sourceLinkSelector); if (!sourceLink) return null; const href = absoluteUrl(sourceLink.href); const url = new URL(href); const commentId = url.searchParams.get('comment'); const doValue = url.searchParams.get('do'); const isReply = doValue === 'findComment' && !!commentId; if (isReply) { url.searchParams.delete('do'); url.searchParams.delete('comment'); return { type: 'reply', sourceUrl: href, baseTopicUrl: url.toString(), commentId }; } url.searchParams.delete('do'); url.searchParams.delete('comment'); return { type: 'topic', sourceUrl: href, baseTopicUrl: url.toString(), commentId: null }; } function buildEditUrl(sourceInfo, csrfKey) { const url = new URL(sourceInfo.baseTopicUrl, location.origin); if (sourceInfo.type === 'reply') { url.searchParams.set('do', 'editComment'); url.searchParams.set('comment', sourceInfo.commentId); } else { url.searchParams.set('do', 'edit'); } if (csrfKey) { url.searchParams.set('csrfKey', csrfKey); } return url.toString(); } async function fetchText(url, options = {}) { const resp = await fetch(url, { credentials: 'include', cache: 'no-cache', ...options }); if (!resp.ok) { throw new Error(`请求失败 ${resp.status} ${resp.statusText}`); } return await resp.text(); } function parseHTML(html) { return new DOMParser().parseFromString(html, 'text/html'); } function extractPostKeyFromEditHtml(html) { const doc = new DOMParser().parseFromString(html, 'text/html'); // 1. 优先从 IPS 编辑器容器读取 const editorEl = doc.querySelector('[data-ipseditor-postkey]'); if (editorEl) { const postKey = editorEl.getAttribute('data-ipseditor-postkey'); if (postKey) return postKey; } // 2. 兜底:兼容可能存在的 input const input = doc.querySelector('input[name="postKey"]'); if (input?.value) return input.value; // 3. 再兜底:正则扫原始 HTML let m = html.match(/data-ipseditor-postkey=["']([^"']+)["']/i); if (m) return m[1]; m = html.match(/name=["']postKey["'][^>]*value=["']([^"']+)["']/i); if (m) return m[1]; m = html.match(/["']postKey["']\s*:\s*["']([^"']+)["']/i); if (m) return m[1]; return null; } async function deleteAttachment(editUrl, attachmentId, postKey, csrfKey) { const url = new URL(editUrl, location.origin); url.searchParams.set('postKey', postKey); url.searchParams.set('deleteFile', attachmentId); if (csrfKey) { url.searchParams.set('csrfKey', csrfKey); } log('删除请求 URL:', url.toString()); const resp = await fetch(url.toString(), { method: 'GET', credentials: 'include', mode: 'cors', headers: { 'accept': '*/*', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'x-requested-with': 'XMLHttpRequest' }, referrer: editUrl }); if (!resp.ok) { throw new Error(`删除请求失败 ${resp.status} ${resp.statusText}`); } return await resp.text(); } function setBtnState(btn, state, text) { btn.disabled = state === 'loading'; btn.textContent = text; if (state === 'loading') { btn.style.opacity = '0.7'; btn.style.cursor = 'wait'; } else { btn.style.opacity = '1'; btn.style.cursor = 'pointer'; } } function removeItem(item) { item.style.transition = 'opacity .25s ease, transform .25s ease'; item.style.opacity = '0'; item.style.transform = 'scale(0.98)'; setTimeout(() => item.remove(), 260); } async function handleDelete(item, btn) { const attachmentId = extractAttachmentId(item); const fileName = extractFileName(item); const sourceInfo = extractSourceInfo(item); const csrfKey = getCsrfKey(); if (!attachmentId) { alert('未找到附件 ID'); return; } if (!sourceInfo) { alert('未找到该附件对应的主题/回复链接'); return; } if (!csrfKey) { alert('未找到 csrfKey'); return; } const targetText = sourceInfo.type === 'reply' ? `回复 #${sourceInfo.commentId}` : '主题首楼'; if (CONFIG.confirmBeforeDelete) { const ok = confirm( `确定删除附件吗?\n\n文件名:${fileName}\n附件ID:${attachmentId}\n挂载位置:${targetText}` ); if (!ok) return; } try { setBtnState(btn, 'loading', '读取编辑页...'); const editUrl = buildEditUrl(sourceInfo, csrfKey); log('编辑页 URL:', editUrl); log('来源类型:', sourceInfo.type, sourceInfo); const editHtml = await fetchText(editUrl, { headers: { 'accept': 'text/html,application/xhtml+xml' } }); const postKey = extractPostKeyFromEditHtml(editHtml); if (!postKey) { throw new Error('未能从编辑页中解析出 postKey'); } setBtnState(btn, 'loading', '提交删除...'); const result = await deleteAttachment(editUrl, attachmentId, postKey, csrfKey); log('删除响应:', result); setBtnState(btn, 'success', '已删除'); removeItem(item); } catch (err) { console.error(err); setBtnState(btn, 'error', '删除失败'); alert(`删除失败:${err.message}`); setTimeout(() => { setBtnState(btn, 'idle', '删除附件'); }, 1200); } } function injectButton(item) { if (item.querySelector(`.${CONFIG.buttonClass}`)) return; const attachmentId = extractAttachmentId(item); const sourceInfo = extractSourceInfo(item); if (!attachmentId || !sourceInfo) return; const btn = document.createElement('button'); btn.type = 'button'; btn.className = CONFIG.buttonClass; btn.textContent = '删除附件'; btn.style.marginTop = '8px'; btn.style.padding = '6px 10px'; btn.style.border = '1px solid #cc3333'; btn.style.borderRadius = '4px'; btn.style.background = '#fff5f5'; btn.style.color = '#b30000'; btn.style.fontSize = '12px'; btn.style.lineHeight = '1.2'; btn.style.cursor = 'pointer'; btn.addEventListener('mouseenter', () => { if (!btn.disabled) btn.style.background = '#ffeaea'; }); btn.addEventListener('mouseleave', () => { if (!btn.disabled) btn.style.background = '#fff5f5'; }); btn.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); handleDelete(item, btn); }); const target = item.querySelector('.ipsDataItem_main') || item; target.appendChild(btn); } function processAll() { document.querySelectorAll(CONFIG.itemSelector).forEach(injectButton); } function observe() { const observer = new MutationObserver((mutations) => { for (const mutation of mutations) { for (const node of mutation.addedNodes) { if (!(node instanceof Element)) continue; if (node.matches?.(CONFIG.itemSelector)) { injectButton(node); } node.querySelectorAll?.(CONFIG.itemSelector).forEach(injectButton); } } }); observer.observe(document.body, { childList: true, subtree: true }); } processAll(); observe(); })(); 然后之后如果想上传图片/视频的话,可以试试看这个https://sstm.moe/topic/378868-【油猴脚本】便捷文件上传自定义表情包/?do=findComment&comment=18887760
    1
  6. 26.2.8- 26.3.26白富美工作汇报 负责人:卡萌&Toku 请各位尽量在本月(?)日之前填写完成XD 此帖主要目的在于发工资+工作总结 周年庆快到了呢,祝制作顺利喵 还有米娜,三次元工作/学习顺利喵~ 阅读需求: 所有汇报者,请先仔细查看白富美制度说明。 并参考工作提交模板填写你们的工作进度【要求回复内容明确、清晰、最好一目了然】。 第一次不知道怎么填的或者有疑问的,请私信或QQ询问我,咱可以帮你们出谋划策一下。 以下为下个月工作需求,各位相关负责的可爱白富美记得注意看一下。 Wiki相关:(由内鬼和Tokur负责) 美工相关: 404 NOT FOUND 活管:404 NOT FOUND 召唤阵: wiki: @小明の @攸薩 美工: @邂逅酱 @ChinoRyuu @Sennso @凯 @啦呵哈呀哈 灵活职位: @哈莫妮卡 活管&勋管: @kerzey
    1
排行榜设为 上海/GMT+08:00
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款