6 Commits
Author SHA1 Message Date
Vitaly Gashkov 99f5efca66 fix: remove build step 2025-08-24 10:32:03 +05:00
Vitaly Gashkov 41b71bffb5 1.2.1 2025-08-24 10:30:22 +05:00
Vitaly Gashkov 94be27e20f build: add publish workflow 2025-08-24 10:29:26 +05:00
Vitaly Gashkov d03e9cadeb fix: change mobile apk source 2025-08-24 10:26:32 +05:00
Vitaly Gashkov eba50dccd0 chore: add extract scripts to package.json 2025-08-24 10:26:19 +05:00
Vitaly Gashkov 345dcd1e3b fix: cleanup by default 2025-08-24 10:26:02 +05:00
6 changed files with 61 additions and 11 deletions
+1
View File
@@ -0,0 +1 @@
custom: ['t.me/tribute/app?startapp=dqW2']
+51
View File
@@ -0,0 +1,51 @@
name: Publish
on:
push:
tags:
- 'v*'
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: https://registry.npmjs.org/
- run: npm ci
# Extract version from package.json and determine release channel
- name: Parse version and determine release channel
id: version
run: |
VERSION=$(node -p "require('./package.json').version")
echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_OUTPUT
if [[ $VERSION == *"-alpha."* ]]; then
echo "NPM_TAG=alpha" >> $GITHUB_OUTPUT
echo "PRERELEASE=true" >> $GITHUB_OUTPUT
elif [[ $VERSION == *"-beta."* ]]; then
echo "NPM_TAG=beta" >> $GITHUB_OUTPUT
echo "PRERELEASE=true" >> $GITHUB_OUTPUT
else
echo "NPM_TAG=latest" >> $GITHUB_OUTPUT
fi
# Publish with the appropriate tag
- name: Publish to npm
run: npm publish --tag ${{ steps.version.outputs.NPM_TAG }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
# Only create GitHub releases for stable versions
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
prerelease: ${{ steps.version.outputs.PRERELEASE == 'true' }}
token: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: write
+1 -1
View File
@@ -14,7 +14,7 @@ const args = parseArgs({
},
cleanup: {
type: 'boolean',
default: false,
default: true,
},
},
});
+3 -7
View File
@@ -1,16 +1,12 @@
const { execSync } = require('node:child_process');
const { join } = require('node:path');
const { readdir, readFile, writeFile, rm } = require('node:fs/promises');
const { download } = require('molnia');
const { existsSync } = require('node:fs');
const { download } = require('molnia');
const downloadMobileApk = async () => {
const source = 'https://apkcombo.com/crunchyroll/com.crunchyroll.crunchyroid/download/apk';
const page = await fetch(source);
const html = await page.text();
const route = '/r2' + html.split('/r2')[1]?.split('"')[0];
const url = `https://apkcombo.com${route}`;
const filepath = join(process.cwd(), 'crunchyroll.xapk');
const url = 'https://api.qqaoop.com/v11/apps/com.crunchyroll.crunchyroid/download?userId=1';
const filepath = join(process.cwd(), 'crunchyroll.apk');
await download(url, {
output: filepath,
onError: (error) => console.error(error),
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "crextractor",
"version": "1.2.0",
"version": "1.2.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "crextractor",
"version": "1.2.0",
"version": "1.2.1",
"funding": [
{
"type": "individual",
+3 -1
View File
@@ -1,6 +1,6 @@
{
"name": "crextractor",
"version": "1.2.0",
"version": "1.2.1",
"description": "Utility for extracting credentials from the Crunchyroll Android app",
"main": "crextractor.js",
"bin": {
@@ -15,6 +15,8 @@
"type": "commonjs",
"scripts": {
"start": "node bin/cli.js",
"extract:mobile": "node bin/cli.js --target mobile --output ./credentials.mobile.json",
"extract:tv": "node bin/cli.js --target tv --output ./credentials.tv.json",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [