Skip to content

Instantly share code, notes, and snippets.

View rxliuli's full-sized avatar

rxliuli rxliuli

View GitHub Profile
@rxliuli
rxliuli / README.md
Created August 21, 2026 16:36
App Store Connect 批量补填 Social Media / Contact 字段

App Store Connect 批量补填元数据

处理两类历史遗留问题:

  • App Age Ratings 的 Social Media 字段:ASC 的年龄评级问卷新增了「Social Media」和「Social Media Disabled for Users Under 13」两个问题,老 app 都没答过(接口里是 null),不填提审会卡。
  • Contact Information:版本页 App Review Information 下的姓名、电话、邮箱,老的版本经常空着。

思路:直接用 ASC 网页端自己的接口(/iris/v1/...)批量检查和补填,不用一个个点界面。操作的都是自己账号下的 app,和手动点网页等效。

用之前

@rxliuli
rxliuli / scriptable-weather-widget.js
Created April 10, 2026 09:35
Free weather widget for iOS Scriptable — powered by Open-Meteo, no API key, no subscription, no location access needed. Just set your city name.
// ===== 配置区:只需要改城市名 =====
const CITY_NAME = "杭州"
// ================================
const geoReq = new Request(
`https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(CITY_NAME)}&count=1&language=zh`
)
const geoData = await geoReq.loadJSON()
const LATITUDE = geoData.results[0].latitude
const LONGITUDE = geoData.results[0].longitude
@rxliuli
rxliuli / sql.js@1.13.0.patch
Created February 11, 2026 07:52
pnpm patch for sql.js@1.13.0: add browser-only WASM build (fixes bundler warnings)
diff --git a/dist/sql-wasm-browser.js b/dist/sql-wasm-browser.js
new file mode 100644
index 0000000000000000000000000000000000000000..09b6e78d66345db0a6bc402b7039c10bbc7bf793
--- /dev/null
+++ b/dist/sql-wasm-browser.js
@@ -0,0 +1,181 @@
+
+// We are modularizing this manually because the current modularize setting in Emscripten has some issues:
+// https://github.com/kripken/emscripten/issues/5820
+// In addition, When you use emcc's modularization, it still expects to export a global object called `Module`,
We can make this file beautiful and searchable if this error is corrected: It looks like row 7 should actually have 9 columns, instead of 8 in line 6.
id,name,screen_name,avatar_image_url,is_blue_verified,community_role,privacy_protected,verification_verified,verification_verified_type
1207019158791229440,鸟哥 | 蓝鸟会🕊️,NFTCPS,https://pbs.twimg.com/profile_images/1917439913320144897/yRxYCX7V_normal.jpg,true,Admin,false,false,
1608329485689962497,A老花|Bird🕊️,ALaoHua_Web3,https://pbs.twimg.com/profile_images/2012017640332763136/wFLVdcIQ_normal.jpg,true,Member,false,false,
1769570625126109184,y,Gamefi888,https://pbs.twimg.com/profile_images/1776939359104794624/42ViDs0W_normal.jpg,false,Member,false,false,
1724715280205836288,Akiii | 🐬 🦅,Guomin184935,https://pbs.twimg.com/profile_images/2014319827398316032/QmAgJ7hc_normal.jpg,true,Member,false,false,
1884981760481751040,Web3菜菜子| bird🕊 | MemeMax ⚡️|🐬 TermMax,jiucaicai250131,https://pbs.twimg.com/profile_images/1983761143840808960/k6iqSQKm_normal.jpg,true,Member,false,false,
1789628636603224064,Jimmy Lin,JimmyLin_Crypto,https://pbs.twimg.com/profile_images/1908925397942890496/cVqQbhrF_normal.jpg,true,Member,false,fals
@rxliuli
rxliuli / clean-reddit-share-link.user.js
Created September 16, 2025 17:16
Clean Reddit Share URL
@rxliuli
rxliuli / README.md
Created September 10, 2025 13:02
MLP in VSCode
@rxliuli
rxliuli / youtube-music-background-play.user.js
Last active September 21, 2025 14:58
Keep YouTube Music playing in background
// ==UserScript==
// @name YouTube Music Background Play
// @namespace https://rxliuli.com
// @version 0.1.1
// @description Keep YouTube Music playing in background
// @match https://music.youtube.com/*
// @sandbox DOM
// @grant none
// @run-at document-start
// ==/UserScript==
@rxliuli
rxliuli / extracting-large-zip-files-with-directory-structure-in-web-browsers.md
Last active April 26, 2025 09:08
Extracting Large ZIP Files with Directory Structure in Web

Extracting Large ZIP Files with Directory Structure in Web

Background

I initially noticed a Reddit post from someone seeking a Firefox extension that could extract ZIP files [^1]. Curious about this need, I discovered the author was using a restricted computer environment that prevented installation of local programs. This prompted me to examine existing online decompression tools, only to find that the top five online extraction tools failed to fully support:

  1. Decompressing large ZIP files (tens of gigabytes)
  2. Preserving directory structures when extracting folders

The video below demonstrates the performance of current online tools:

@rxliuli
rxliuli / convert-chrome-extension-to-safari.md
Last active May 13, 2026 11:35
Converting Chrome Extensions to Safari

Converting Chrome Extensions to Safari

Origin https://rxliuli.com/blog/convert-chrome-extension-to-safari

Background

I recently attempted to convert a Chrome extension to Safari—something I had postponed due to Xcode's poor development experience. This article documents the conversion process for Redirector, which is already available on Chrome/Firefox/Edge, into my first Safari extension on the App Store.

Conversion Process

@rxliuli
rxliuli / a-less-favorable-vue3.md
Last active July 24, 2026 09:13
Svelte5: A Less Favorable Vue3

Svelte5: A Less Favorable Vue3

Background

Svelte5 was released in October last year, touted as the best version of Svelte to date. The team was particularly proud of "runes," a reactive state system built on proxies. However, after experiencing Vue3's Composition API and SolidJS signals, I didn't feel particularly excited. This blog outlines specific issues encountered when using Svelte5 in real projects. If you're a Svelte5 enthusiast, you might want to stop reading now.

Runes Only Work in Svelte Components or .svelte.ts Files

When trying to write hooks with runes similar to React/Vue, like useCounter: