mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-12 23:45:18 +00:00
CacheDir & ConfigDir changed, tweaked basic configurations
This commit is contained in:
parent
247f1b563b
commit
9751b4f837
@ -1,8 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
Name=Application
|
|
||||||
Exec=AppRun %F
|
|
||||||
Icon=default
|
|
||||||
Comment=Edit this default file
|
|
||||||
Terminal=true
|
|
||||||
Categories=Utility;
|
|
8
deploy/linux/spotube/spotube.desktop
Normal file
8
deploy/linux/spotube/spotube.desktop
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Spotube
|
||||||
|
Exec=AppRun
|
||||||
|
Icon=default
|
||||||
|
Comment=A music streaming app combining the power of Spotify & Youtube
|
||||||
|
Terminal=true
|
||||||
|
Categories=Music;
|
BIN
deploy/linux/spotube/spotube.jpg
Normal file
BIN
deploy/linux/spotube/spotube.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
@ -13,6 +13,9 @@ import express from "express";
|
|||||||
import open from "open";
|
import open from "open";
|
||||||
import spotifyApi from "./initializations/spotifyApi";
|
import spotifyApi from "./initializations/spotifyApi";
|
||||||
import showError from "./helpers/showError";
|
import showError from "./helpers/showError";
|
||||||
|
import fs from "fs"
|
||||||
|
import path from "path";
|
||||||
|
import { confDir } from "./conf";
|
||||||
|
|
||||||
export enum CredentialKeys {
|
export enum CredentialKeys {
|
||||||
credentials = "credentials",
|
credentials = "credentials",
|
||||||
@ -26,7 +29,9 @@ export interface Credentials {
|
|||||||
|
|
||||||
const minSize = { width: 700, height: 750 };
|
const minSize = { width: 700, height: 750 };
|
||||||
const winIcon = new QIcon(nodeguiIcon);
|
const winIcon = new QIcon(nodeguiIcon);
|
||||||
global.localStorage = new LocalStorage("./local");
|
const localStorageDir = path.join(confDir, "local");
|
||||||
|
fs.mkdirSync(localStorageDir, {recursive: true});
|
||||||
|
global.localStorage = new LocalStorage(localStorageDir);
|
||||||
const queryClient = new QueryClient({
|
const queryClient = new QueryClient({
|
||||||
defaultOptions: {
|
defaultOptions: {
|
||||||
queries: {
|
queries: {
|
||||||
|
@ -68,8 +68,9 @@ function UserSavedTracks() {
|
|||||||
<PlaylistSimpleControls handlePlaylistPlayPause={handlePlaylistPlayPause} isActive={currentPlaylist?.id === userSavedPlaylistId} />
|
<PlaylistSimpleControls handlePlaylistPlayPause={handlePlaylistPlayPause} isActive={currentPlaylist?.id === userSavedPlaylistId} />
|
||||||
<ScrollArea style="flex: 1; border: none;">
|
<ScrollArea style="flex: 1; border: none;">
|
||||||
<View style="flex: 1; flex-direction: 'column'; align-items: 'stretch';">
|
<View style="flex: 1; flex-direction: 'column'; align-items: 'stretch';">
|
||||||
{userTracks?.map(({ track }) => (
|
{userTracks?.map(({ track }, index) => (
|
||||||
<TrackButton
|
<TrackButton
|
||||||
|
key={index+track.id}
|
||||||
active={currentPlaylist?.id === userSavedPlaylistId && currentTrack?.id === track.id}
|
active={currentPlaylist?.id === userSavedPlaylistId && currentTrack?.id === track.id}
|
||||||
artist={track.artists.map((x) => x.name).join(", ")}
|
artist={track.artists.map((x) => x.name).join(", ")}
|
||||||
name={track.name}
|
name={track.name}
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
import dotenv from "dotenv"
|
import dotenv from "dotenv"
|
||||||
|
import { homedir } from "os";
|
||||||
import { join } from "path";
|
import { join } from "path";
|
||||||
|
|
||||||
const env = dotenv.config({path: join(process.cwd(), ".env")}).parsed as any
|
const env = dotenv.config({path: join(process.cwd(), ".env")}).parsed as any
|
||||||
export const clientId = "";
|
export const clientId = "";
|
||||||
export const trace = process.argv.find(arg => arg === "--trace") ?? false;
|
export const trace = process.argv.find(arg => arg === "--trace") ?? false;
|
||||||
export const redirectURI = "http://localhost:4304/auth/spotify/callback"
|
export const redirectURI = "http://localhost:4304/auth/spotify/callback"
|
||||||
|
export const confDir = join(homedir(), ".config", "spotube")
|
||||||
|
export const cacheDir = join(homedir(), ".cache", "spotube")
|
||||||
|
|
||||||
export enum QueryCacheKeys{
|
export enum QueryCacheKeys{
|
||||||
categories="categories",
|
categories="categories",
|
||||||
|
@ -6,6 +6,7 @@ import { Stream } from "stream";
|
|||||||
import { streamToBuffer } from "./streamToBuffer";
|
import { streamToBuffer } from "./streamToBuffer";
|
||||||
import Jimp from "jimp";
|
import Jimp from "jimp";
|
||||||
import du from "du";
|
import du from "du";
|
||||||
|
import { cacheDir } from "../conf";
|
||||||
|
|
||||||
|
|
||||||
interface ImageDimensions {
|
interface ImageDimensions {
|
||||||
@ -18,15 +19,15 @@ const fsm = fs.promises;
|
|||||||
export async function getCachedImageBuffer(name: string, dims?: ImageDimensions): Promise<Buffer> {
|
export async function getCachedImageBuffer(name: string, dims?: ImageDimensions): Promise<Buffer> {
|
||||||
try {
|
try {
|
||||||
const MB_5 = 5000000; //5 Megabytes
|
const MB_5 = 5000000; //5 Megabytes
|
||||||
const cacheFolder = path.join(process.cwd(), "cache", "images");
|
const cacheImgFolder = path.join(cacheDir, "images");
|
||||||
// for clearing up the cache if it reaches out of the size
|
// for clearing up the cache if it reaches out of the size
|
||||||
const cacheName = `${isUrl(name) ? name.split("/").slice(-1)[0] : name}.cnim`;
|
const cacheName = `${isUrl(name) ? name.split("/").slice(-1)[0] : name}.cnim`;
|
||||||
const cachePath = path.join(cacheFolder, cacheName);
|
const cachePath = path.join(cacheImgFolder, cacheName);
|
||||||
// checking if the cached image already exists or not
|
// checking if the cached image already exists or not
|
||||||
if (fs.existsSync(cachePath)) {
|
if (fs.existsSync(cachePath)) {
|
||||||
// automatically removing cache after a certain 50 MB oversize
|
// automatically removing cache after a certain 50 MB oversize
|
||||||
if ((await du(cacheFolder)) > MB_5) {
|
if ((await du(cacheImgFolder)) > MB_5) {
|
||||||
fs.rmSync(cacheFolder, { recursive: true, force: true });
|
fs.rmSync(cacheImgFolder, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
const cachedImg = await fsm.readFile(cachePath);
|
const cachedImg = await fsm.readFile(cachePath);
|
||||||
const cachedImgMeta = (await Jimp.read(cachedImg)).bitmap;
|
const cachedImgMeta = (await Jimp.read(cachedImg)).bitmap;
|
||||||
@ -35,7 +36,7 @@ export async function getCachedImageBuffer(name: string, dims?: ImageDimensions)
|
|||||||
// images are removed and replaced with a new one
|
// images are removed and replaced with a new one
|
||||||
if (dims && (cachedImgMeta.height !== dims.height || cachedImgMeta.width !== dims?.width)) {
|
if (dims && (cachedImgMeta.height !== dims.height || cachedImgMeta.width !== dims?.width)) {
|
||||||
fs.rmSync(cachePath);
|
fs.rmSync(cachePath);
|
||||||
return await imageResizeAndWrite(cachedImg, { cacheFolder, cacheName, dims });
|
return await imageResizeAndWrite(cachedImg, { cacheFolder: cacheImgFolder, cacheName, dims });
|
||||||
}
|
}
|
||||||
return cachedImg;
|
return cachedImg;
|
||||||
} else {
|
} else {
|
||||||
@ -44,11 +45,11 @@ export async function getCachedImageBuffer(name: string, dims?: ImageDimensions)
|
|||||||
// converting axios stream to buffer
|
// converting axios stream to buffer
|
||||||
const resImgBuf = await streamToBuffer(imgData);
|
const resImgBuf = await streamToBuffer(imgData);
|
||||||
// creating cache_dir
|
// creating cache_dir
|
||||||
await fsm.mkdir(cacheFolder, { recursive: true });
|
await fsm.mkdir(cacheImgFolder, { recursive: true });
|
||||||
if (dims) {
|
if (dims) {
|
||||||
return await imageResizeAndWrite(resImgBuf, { cacheFolder, cacheName, dims });
|
return await imageResizeAndWrite(resImgBuf, { cacheFolder: cacheImgFolder, cacheName, dims });
|
||||||
}
|
}
|
||||||
await fsm.writeFile(path.join(cacheFolder, cacheName), resImgBuf);
|
await fsm.writeFile(path.join(cacheImgFolder, cacheName), resImgBuf);
|
||||||
return resImgBuf;
|
return resImgBuf;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user