From 1958caf261e85ae0a8eb6c1e4fd3da369d59fb8a Mon Sep 17 00:00:00 2001 From: WardPearce Date: Mon, 16 Feb 2026 08:17:59 +1300 Subject: [PATCH 1/4] Improved proxy --- materialious/android/app/build.gradle | 4 +- .../electron/materialious.metainfo.xml | 6 +- materialious/electron/package.json | 2 +- materialious/package.json | 4 +- materialious/src/lib/api/youtubejs/video.ts | 3 - materialious/src/lib/components/Player.svelte | 95 +++++++++---------- .../src/lib/externalSettings/settings.ts | 9 +- materialious/src/lib/fetchProxy.ts | 18 ++++ materialious/src/lib/images.ts | 1 - materialious/src/lib/sabr/index.ts | 3 - materialious/src/lib/store.ts | 5 + .../routes/api/proxy/[urlToProxy]/+server.ts | 66 +++++++------ .../static/localApi/ghContributors.json | 2 +- update_versions.py | 2 +- 14 files changed, 121 insertions(+), 99 deletions(-) diff --git a/materialious/android/app/build.gradle b/materialious/android/app/build.gradle index 0bd81e5b..94e6216b 100644 --- a/materialious/android/app/build.gradle +++ b/materialious/android/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "us.materialio.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 212 - versionName "1.15.4" + versionCode 213 + versionName "1.15.5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/materialious/electron/materialious.metainfo.xml b/materialious/electron/materialious.metainfo.xml index 494a3f40..ba535d43 100644 --- a/materialious/electron/materialious.metainfo.xml +++ b/materialious/electron/materialious.metainfo.xml @@ -77,7 +77,11 @@ - + + + https://github.com/Materialious/Materialious/releases/tag/1.15.5 + + https://github.com/Materialious/Materialious/releases/tag/1.15.4 diff --git a/materialious/electron/package.json b/materialious/electron/package.json index e1c00920..74a45e32 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -1,6 +1,6 @@ { "name": "Materialious", - "version": "1.15.4", + "version": "1.15.5", "description": "Modern material design for YouTube and Invidious.", "author": { "name": "Ward Pearce", diff --git a/materialious/package.json b/materialious/package.json index 5cd4588d..a2aa63ac 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -1,6 +1,6 @@ { "name": "materialious", - "version": "1.15.4", + "version": "1.15.5", "private": true, "scripts": { "dev": "npm run patch:github && vite dev", @@ -96,4 +96,4 @@ "youtubei.js": "^16.0.1", "zod": "^4.3.6" } -} +} \ No newline at end of file diff --git a/materialious/src/lib/api/youtubejs/video.ts b/materialious/src/lib/api/youtubejs/video.ts index 0fc91c75..7e638ff9 100644 --- a/materialious/src/lib/api/youtubejs/video.ts +++ b/materialious/src/lib/api/youtubejs/video.ts @@ -71,9 +71,6 @@ export async function getVideoYTjs(videoId: string): Promise { contentCheckOk: true, racyCheckOk: true, playbackContext: { - adPlaybackContext: { - pyv: true - }, contentPlaybackContext: { signatureTimestamp: innertube.session.player?.signature_timestamp } diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index ed77051b..d730a842 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -30,6 +30,7 @@ playerDefaultLanguage, playerDefaultPlaybackSpeed, playerDefaultQualityStore, + playerPreferredVolume, playerProxyVideosStore, playerSavePlaybackPositionStore, playerState, @@ -184,7 +185,6 @@ let clickCounterTimeout: ReturnType; let seekDirection: 'forwards' | 'backwards' | undefined = $state(); - const STORAGE_KEY_VOLUME = 'shaka-preferred-volume'; playertheatreModeIsActive.subscribe(async () => { await tick(); @@ -246,16 +246,12 @@ function saveVolumePreference() { if (!playerElement) return; - playerVolume = playerElement.volume; - localStorage.setItem(STORAGE_KEY_VOLUME, playerElement.volume.toString()); + playerPreferredVolume.set(playerElement.volume); } function restoreVolumePreference() { - const savedVolume = localStorage.getItem(STORAGE_KEY_VOLUME); - if (savedVolume && playerElement) { - playerElement.volume = parseFloat(savedVolume); - playerVolume = playerElement.volume; - } + if (!playerElement) return; + playerElement.volume = $playerPreferredVolume; } function restoreQualityPreference() { @@ -365,51 +361,52 @@ async function setupSponsorSkip() { if (!$sponsorBlockUrlStore || !$sponsorBlockCategoriesStore || !$sponsorBlockStore) return; + const sponsorBlock = new SponsorBlock('', { baseURL: $sponsorBlockUrlStore }); - if ($sponsorBlockCategoriesStore && $sponsorBlockUrlStore && $sponsorBlockUrlStore !== '') { - const sponsorBlock = new SponsorBlock('', { baseURL: $sponsorBlockUrlStore }); + const sponsorBlockCategoryKeys = Object.keys($sponsorBlockCategoriesStore); - try { - segments = await sponsorBlock.getSegments( - data.video.videoId, - Object.keys($sponsorBlockCategoriesStore) as Category[] - ); - } catch (error) { - console.error('Sponsorskip errored with:', error); - } + if (sponsorBlockCategoryKeys.length === 0) return; - if (segments.length === 0) return; - - playerElement?.addEventListener('timeupdate', () => { - segments.forEach((segment) => { - if (!playerElement) return; - - if ( - playerElement.currentTime >= segment.startTime && - playerElement.currentTime <= segment.endTime - ) { - const segmentTrigger = $sponsorBlockCategoriesStore[segment.category]; - - if (segmentTrigger === 'automatic') { - skipSegment(segment); - } else if (segmentTrigger === 'manual') { - if (!segmentManualSkip) { - addToast({ - data: { - text: `${$_('upcomingSegment')} ${segment.category}`, - action: { - action: () => skipSegment(segment), - text: $_('skip') - } - } - }); - } - segmentManualSkip = segment; - } - } - }); - }); + try { + segments = await sponsorBlock.getSegments( + data.video.videoId, + sponsorBlockCategoryKeys as Category[] + ); + } catch (error) { + console.error('Sponsorskip errored with:', error); } + + if (segments.length === 0) return; + + playerElement?.addEventListener('timeupdate', () => { + segments.forEach((segment) => { + if (!playerElement) return; + + if ( + playerElement.currentTime >= segment.startTime && + playerElement.currentTime <= segment.endTime + ) { + const segmentTrigger = $sponsorBlockCategoriesStore[segment.category]; + + if (segmentTrigger === 'automatic') { + skipSegment(segment); + } else if (segmentTrigger === 'manual') { + if (!segmentManualSkip) { + addToast({ + data: { + text: `${$_('upcomingSegment')} ${segment.category}`, + action: { + action: () => skipSegment(segment), + text: $_('skip') + } + } + }); + } + segmentManualSkip = segment; + } + } + }); + }); } function loadTimeFromUrl(page: Page): boolean { diff --git a/materialious/src/lib/externalSettings/settings.ts b/materialious/src/lib/externalSettings/settings.ts index 27d2729d..f96b9a7f 100644 --- a/materialious/src/lib/externalSettings/settings.ts +++ b/materialious/src/lib/externalSettings/settings.ts @@ -52,7 +52,8 @@ import { playerAndroidLockOrientation, playerYouTubeJsFallback, playerYouTubeJsAlways, - interfaceSearchHistoryEnabled + interfaceSearchHistoryEnabled, + playerPreferredVolume } from '$lib/store'; import { isOwnBackend } from '$lib/shared'; @@ -66,6 +67,7 @@ type PersistedStore = { const zBoolean = z.coerce.boolean(); const zNumber = z.coerce.number(); +const zFloat = z.coerce.number().min(0).max(1); const zString = z.string(); const zArray = z.array(z.string()); const zChapterMode = z.enum(['automatic', 'manual', 'timeline']); @@ -256,6 +258,11 @@ export const persistedStores: PersistedStore[] = [ store: playerMiniplayerEnabled, schema: zBoolean }, + { + name: 'preferredVolume', + store: playerPreferredVolume, + schema: zFloat + }, { name: 'sponsorBlockCategoriesv2', store: sponsorBlockCategoriesStore, diff --git a/materialious/src/lib/fetchProxy.ts b/materialious/src/lib/fetchProxy.ts index bbd64df1..76f1f18c 100644 --- a/materialious/src/lib/fetchProxy.ts +++ b/materialious/src/lib/fetchProxy.ts @@ -1,5 +1,7 @@ import { isUnrestrictedPlatform, timeout } from '$lib/misc'; import { Capacitor } from '@capacitor/core'; +import sodium from 'libsodium-wrappers-sumo'; +import { isOwnBackend } from './shared'; export const originalFetch = window.fetch; const corsProxyUrl = @@ -62,6 +64,22 @@ export const fetchProxied = async ( } } + if (isOwnBackend() && Capacitor.getPlatform() === 'web' && requestOptions?.body) { + if (requestOptions.body instanceof ArrayBuffer) { + requestOptions.body = new Uint8Array(requestOptions?.body); + } + + if (requestOptions.body instanceof Uint8Array) { + await sodium.ready; + requestOptions.body = sodium.to_base64(requestOptions.body); + + requestOptions.headers = { + ...requestOptions.headers, + __is_base64_encoded: 'true' + }; + } + } + // Use the original fetch with the proxied URL and options return originalFetch(requestInput, requestOptions); }; diff --git a/materialious/src/lib/images.ts b/materialious/src/lib/images.ts index a9a6f388..a92724b7 100644 --- a/materialious/src/lib/images.ts +++ b/materialious/src/lib/images.ts @@ -13,7 +13,6 @@ export class ImageCache { return new Promise((resolve, reject) => { const img = new Image(); - img.crossOrigin = 'anonymous'; img.onload = () => { this.cache.set(src, img); resolve(img); diff --git a/materialious/src/lib/sabr/index.ts b/materialious/src/lib/sabr/index.ts index 13997d88..95edfb02 100644 --- a/materialious/src/lib/sabr/index.ts +++ b/materialious/src/lib/sabr/index.ts @@ -43,9 +43,6 @@ export async function injectSabr( contentCheckOk: true, racyCheckOk: true, playbackContext: { - adPlaybackContext: { - pyv: true - }, contentPlaybackContext: { signatureTimestamp: video.ytjs.innertube.session.player?.signature_timestamp }, diff --git a/materialious/src/lib/store.ts b/materialious/src/lib/store.ts index babfc695..ea48435d 100644 --- a/materialious/src/lib/store.ts +++ b/materialious/src/lib/store.ts @@ -179,6 +179,11 @@ export const playerAndroidPauseOnNetworkChange = persist( createStorage(), 'pauseOnNetworkChange' ); +export const playerPreferredVolume: Writable = persist( + writable(0.5), + createStorage(), + 'preferredVolume' +); export const playerPlaylistHistory: Writable = writable([]); export interface PlayerState { diff --git a/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts b/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts index 609c0d94..73b86044 100644 --- a/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts +++ b/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts @@ -3,6 +3,8 @@ import { env } from '$env/dynamic/public'; import { error } from '@sveltejs/kit'; import { parse as tldParse } from 'tldts'; +import { USER_AGENT } from 'bgutils-js'; +import sodium from 'libsodium-wrappers-sumo'; const allowedBaseDomains: string[] = [ 'youtube.com', @@ -30,6 +32,13 @@ for (const dynamicDomain of dynamicAllowDomainsEnvVars) { } } +function copyHeader(headerName: string, to: Headers, from: Headers) { + const hdrVal = from.get(headerName); + if (hdrVal) { + to.set(headerName, hdrVal); + } +} + async function proxyRequest( request: Request, urlToProxy: string, @@ -71,49 +80,38 @@ async function proxyRequest( } } - if (urlToProxyObj.pathname.includes('v1/player')) { - urlToProxyObj.searchParams.set( - '$fields', - 'playerConfig,captions,playabilityStatus,streamingData,responseContext.mainAppWebResponseContext.datasyncId,videoDetails.isLive,videoDetails.isLiveContent,videoDetails.title,videoDetails.author,playbackTracking' - ); - } - - const requestHeaders = request.headers; + const requestHeaders = new Headers(); requestHeaders.set('host', urlToProxyObj.host); requestHeaders.set('origin', urlToProxyObj.origin); + requestHeaders.set('user-agent', USER_AGENT); - for (const key of [ - 'referer', - 'x-forwarded-for', - 'x-requested-with', - 'sec-ch-ua-mobile', - 'sec-ch-ua', - 'sec-ch-ua-platform' - ]) { - requestHeaders.delete(key); - } + copyHeader('range', requestHeaders, request.headers); - const cookieHeader = requestHeaders.get('cookie'); - if (cookieHeader) { - const modifiedCookies = cookieHeader - .split(';') - .filter((cookie) => !cookie.trim().startsWith('userid=')) - .join('; '); - requestHeaders.set('cookie', modifiedCookies); - } - - const fetchRes = await fetch(urlToProxy.toString(), { + const requestOptions: RequestInit = { method: request.method, headers: requestHeaders, - body: request.body, credentials: 'same-origin', ...(request.body ? { duplex: 'half' } : {}) - }); + }; - return new Response(fetchRes.body, { - status: fetchRes.status, - statusText: fetchRes.statusText, - ...(request.body ? { duplex: 'half' } : {}) + let body; + if (request.body && request.headers.has('__is_base64_encoded')) { + request.headers.delete('__is_base64_encoded'); + + await sodium.ready; + body = Uint8Array.from(sodium.from_base64(await request.text())); + } else { + body = request.body; + } + + const response = await fetch(urlToProxy, { ...requestOptions, body }); + + const responseHeaders = new Headers(); + const responseBody = await response.blob(); + + return new Response(responseBody, { + status: response.status, + headers: responseHeaders }); } diff --git a/materialious/static/localApi/ghContributors.json b/materialious/static/localApi/ghContributors.json index 7b4dbf8e..ea8c51df 100644 --- a/materialious/static/localApi/ghContributors.json +++ b/materialious/static/localApi/ghContributors.json @@ -1 +1 @@ -[{"login":"WardPearce","id":27844174,"node_id":"MDQ6VXNlcjI3ODQ0MTc0","avatar_url":"https://avatars.githubusercontent.com/u/27844174?v=4","gravatar_id":"","url":"https://api.github.com/users/WardPearce","html_url":"https://github.com/WardPearce","followers_url":"https://api.github.com/users/WardPearce/followers","following_url":"https://api.github.com/users/WardPearce/following{/other_user}","gists_url":"https://api.github.com/users/WardPearce/gists{/gist_id}","starred_url":"https://api.github.com/users/WardPearce/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WardPearce/subscriptions","organizations_url":"https://api.github.com/users/WardPearce/orgs","repos_url":"https://api.github.com/users/WardPearce/repos","events_url":"https://api.github.com/users/WardPearce/events{/privacy}","received_events_url":"https://api.github.com/users/WardPearce/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2058},{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false,"contributions":227},{"login":"Lezurex","id":48829956,"node_id":"MDQ6VXNlcjQ4ODI5OTU2","avatar_url":"https://avatars.githubusercontent.com/u/48829956?v=4","gravatar_id":"","url":"https://api.github.com/users/Lezurex","html_url":"https://github.com/Lezurex","followers_url":"https://api.github.com/users/Lezurex/followers","following_url":"https://api.github.com/users/Lezurex/following{/other_user}","gists_url":"https://api.github.com/users/Lezurex/gists{/gist_id}","starred_url":"https://api.github.com/users/Lezurex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lezurex/subscriptions","organizations_url":"https://api.github.com/users/Lezurex/orgs","repos_url":"https://api.github.com/users/Lezurex/repos","events_url":"https://api.github.com/users/Lezurex/events{/privacy}","received_events_url":"https://api.github.com/users/Lezurex/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":39},{"login":"Coool","id":8421903,"node_id":"MDQ6VXNlcjg0MjE5MDM=","avatar_url":"https://avatars.githubusercontent.com/u/8421903?v=4","gravatar_id":"","url":"https://api.github.com/users/Coool","html_url":"https://github.com/Coool","followers_url":"https://api.github.com/users/Coool/followers","following_url":"https://api.github.com/users/Coool/following{/other_user}","gists_url":"https://api.github.com/users/Coool/gists{/gist_id}","starred_url":"https://api.github.com/users/Coool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Coool/subscriptions","organizations_url":"https://api.github.com/users/Coool/orgs","repos_url":"https://api.github.com/users/Coool/repos","events_url":"https://api.github.com/users/Coool/events{/privacy}","received_events_url":"https://api.github.com/users/Coool/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":15},{"login":"araujosemacento","id":60983392,"node_id":"MDQ6VXNlcjYwOTgzMzky","avatar_url":"https://avatars.githubusercontent.com/u/60983392?v=4","gravatar_id":"","url":"https://api.github.com/users/araujosemacento","html_url":"https://github.com/araujosemacento","followers_url":"https://api.github.com/users/araujosemacento/followers","following_url":"https://api.github.com/users/araujosemacento/following{/other_user}","gists_url":"https://api.github.com/users/araujosemacento/gists{/gist_id}","starred_url":"https://api.github.com/users/araujosemacento/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/araujosemacento/subscriptions","organizations_url":"https://api.github.com/users/araujosemacento/orgs","repos_url":"https://api.github.com/users/araujosemacento/repos","events_url":"https://api.github.com/users/araujosemacento/events{/privacy}","received_events_url":"https://api.github.com/users/araujosemacento/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":14},{"login":"ghostofsparta222","id":251893418,"node_id":"U_kgDODwOWqg","avatar_url":"https://avatars.githubusercontent.com/u/251893418?v=4","gravatar_id":"","url":"https://api.github.com/users/ghostofsparta222","html_url":"https://github.com/ghostofsparta222","followers_url":"https://api.github.com/users/ghostofsparta222/followers","following_url":"https://api.github.com/users/ghostofsparta222/following{/other_user}","gists_url":"https://api.github.com/users/ghostofsparta222/gists{/gist_id}","starred_url":"https://api.github.com/users/ghostofsparta222/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ghostofsparta222/subscriptions","organizations_url":"https://api.github.com/users/ghostofsparta222/orgs","repos_url":"https://api.github.com/users/ghostofsparta222/repos","events_url":"https://api.github.com/users/ghostofsparta222/events{/privacy}","received_events_url":"https://api.github.com/users/ghostofsparta222/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":11},{"login":"toolatebot","id":169580663,"node_id":"U_kgDOChuYdw","avatar_url":"https://avatars.githubusercontent.com/u/169580663?v=4","gravatar_id":"","url":"https://api.github.com/users/toolatebot","html_url":"https://github.com/toolatebot","followers_url":"https://api.github.com/users/toolatebot/followers","following_url":"https://api.github.com/users/toolatebot/following{/other_user}","gists_url":"https://api.github.com/users/toolatebot/gists{/gist_id}","starred_url":"https://api.github.com/users/toolatebot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toolatebot/subscriptions","organizations_url":"https://api.github.com/users/toolatebot/orgs","repos_url":"https://api.github.com/users/toolatebot/repos","events_url":"https://api.github.com/users/toolatebot/events{/privacy}","received_events_url":"https://api.github.com/users/toolatebot/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":9},{"login":"Precific","id":30053082,"node_id":"MDQ6VXNlcjMwMDUzMDgy","avatar_url":"https://avatars.githubusercontent.com/u/30053082?v=4","gravatar_id":"","url":"https://api.github.com/users/Precific","html_url":"https://github.com/Precific","followers_url":"https://api.github.com/users/Precific/followers","following_url":"https://api.github.com/users/Precific/following{/other_user}","gists_url":"https://api.github.com/users/Precific/gists{/gist_id}","starred_url":"https://api.github.com/users/Precific/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Precific/subscriptions","organizations_url":"https://api.github.com/users/Precific/orgs","repos_url":"https://api.github.com/users/Precific/repos","events_url":"https://api.github.com/users/Precific/events{/privacy}","received_events_url":"https://api.github.com/users/Precific/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":9},{"login":"yzqzss","id":30341059,"node_id":"MDQ6VXNlcjMwMzQxMDU5","avatar_url":"https://avatars.githubusercontent.com/u/30341059?v=4","gravatar_id":"","url":"https://api.github.com/users/yzqzss","html_url":"https://github.com/yzqzss","followers_url":"https://api.github.com/users/yzqzss/followers","following_url":"https://api.github.com/users/yzqzss/following{/other_user}","gists_url":"https://api.github.com/users/yzqzss/gists{/gist_id}","starred_url":"https://api.github.com/users/yzqzss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yzqzss/subscriptions","organizations_url":"https://api.github.com/users/yzqzss/orgs","repos_url":"https://api.github.com/users/yzqzss/repos","events_url":"https://api.github.com/users/yzqzss/events{/privacy}","received_events_url":"https://api.github.com/users/yzqzss/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"thejenja","id":65224669,"node_id":"MDQ6VXNlcjY1MjI0NjY5","avatar_url":"https://avatars.githubusercontent.com/u/65224669?v=4","gravatar_id":"","url":"https://api.github.com/users/thejenja","html_url":"https://github.com/thejenja","followers_url":"https://api.github.com/users/thejenja/followers","following_url":"https://api.github.com/users/thejenja/following{/other_user}","gists_url":"https://api.github.com/users/thejenja/gists{/gist_id}","starred_url":"https://api.github.com/users/thejenja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thejenja/subscriptions","organizations_url":"https://api.github.com/users/thejenja/orgs","repos_url":"https://api.github.com/users/thejenja/repos","events_url":"https://api.github.com/users/thejenja/events{/privacy}","received_events_url":"https://api.github.com/users/thejenja/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"cookiennn","id":114363954,"node_id":"U_kgDOBtEOMg","avatar_url":"https://avatars.githubusercontent.com/u/114363954?v=4","gravatar_id":"","url":"https://api.github.com/users/cookiennn","html_url":"https://github.com/cookiennn","followers_url":"https://api.github.com/users/cookiennn/followers","following_url":"https://api.github.com/users/cookiennn/following{/other_user}","gists_url":"https://api.github.com/users/cookiennn/gists{/gist_id}","starred_url":"https://api.github.com/users/cookiennn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cookiennn/subscriptions","organizations_url":"https://api.github.com/users/cookiennn/orgs","repos_url":"https://api.github.com/users/cookiennn/repos","events_url":"https://api.github.com/users/cookiennn/events{/privacy}","received_events_url":"https://api.github.com/users/cookiennn/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"SecularSteve","id":33793273,"node_id":"MDQ6VXNlcjMzNzkzMjcz","avatar_url":"https://avatars.githubusercontent.com/u/33793273?v=4","gravatar_id":"","url":"https://api.github.com/users/SecularSteve","html_url":"https://github.com/SecularSteve","followers_url":"https://api.github.com/users/SecularSteve/followers","following_url":"https://api.github.com/users/SecularSteve/following{/other_user}","gists_url":"https://api.github.com/users/SecularSteve/gists{/gist_id}","starred_url":"https://api.github.com/users/SecularSteve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SecularSteve/subscriptions","organizations_url":"https://api.github.com/users/SecularSteve/orgs","repos_url":"https://api.github.com/users/SecularSteve/repos","events_url":"https://api.github.com/users/SecularSteve/events{/privacy}","received_events_url":"https://api.github.com/users/SecularSteve/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"R0GGER","id":8298741,"node_id":"MDQ6VXNlcjgyOTg3NDE=","avatar_url":"https://avatars.githubusercontent.com/u/8298741?v=4","gravatar_id":"","url":"https://api.github.com/users/R0GGER","html_url":"https://github.com/R0GGER","followers_url":"https://api.github.com/users/R0GGER/followers","following_url":"https://api.github.com/users/R0GGER/following{/other_user}","gists_url":"https://api.github.com/users/R0GGER/gists{/gist_id}","starred_url":"https://api.github.com/users/R0GGER/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/R0GGER/subscriptions","organizations_url":"https://api.github.com/users/R0GGER/orgs","repos_url":"https://api.github.com/users/R0GGER/repos","events_url":"https://api.github.com/users/R0GGER/events{/privacy}","received_events_url":"https://api.github.com/users/R0GGER/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"arcoast","id":81871508,"node_id":"MDQ6VXNlcjgxODcxNTA4","avatar_url":"https://avatars.githubusercontent.com/u/81871508?v=4","gravatar_id":"","url":"https://api.github.com/users/arcoast","html_url":"https://github.com/arcoast","followers_url":"https://api.github.com/users/arcoast/followers","following_url":"https://api.github.com/users/arcoast/following{/other_user}","gists_url":"https://api.github.com/users/arcoast/gists{/gist_id}","starred_url":"https://api.github.com/users/arcoast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arcoast/subscriptions","organizations_url":"https://api.github.com/users/arcoast/orgs","repos_url":"https://api.github.com/users/arcoast/repos","events_url":"https://api.github.com/users/arcoast/events{/privacy}","received_events_url":"https://api.github.com/users/arcoast/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"maboroshin","id":41102508,"node_id":"MDQ6VXNlcjQxMTAyNTA4","avatar_url":"https://avatars.githubusercontent.com/u/41102508?v=4","gravatar_id":"","url":"https://api.github.com/users/maboroshin","html_url":"https://github.com/maboroshin","followers_url":"https://api.github.com/users/maboroshin/followers","following_url":"https://api.github.com/users/maboroshin/following{/other_user}","gists_url":"https://api.github.com/users/maboroshin/gists{/gist_id}","starred_url":"https://api.github.com/users/maboroshin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maboroshin/subscriptions","organizations_url":"https://api.github.com/users/maboroshin/orgs","repos_url":"https://api.github.com/users/maboroshin/repos","events_url":"https://api.github.com/users/maboroshin/events{/privacy}","received_events_url":"https://api.github.com/users/maboroshin/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"lamarios","id":1192563,"node_id":"MDQ6VXNlcjExOTI1NjM=","avatar_url":"https://avatars.githubusercontent.com/u/1192563?v=4","gravatar_id":"","url":"https://api.github.com/users/lamarios","html_url":"https://github.com/lamarios","followers_url":"https://api.github.com/users/lamarios/followers","following_url":"https://api.github.com/users/lamarios/following{/other_user}","gists_url":"https://api.github.com/users/lamarios/gists{/gist_id}","starred_url":"https://api.github.com/users/lamarios/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lamarios/subscriptions","organizations_url":"https://api.github.com/users/lamarios/orgs","repos_url":"https://api.github.com/users/lamarios/repos","events_url":"https://api.github.com/users/lamarios/events{/privacy}","received_events_url":"https://api.github.com/users/lamarios/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"bonswouar","id":615053,"node_id":"MDQ6VXNlcjYxNTA1Mw==","avatar_url":"https://avatars.githubusercontent.com/u/615053?v=4","gravatar_id":"","url":"https://api.github.com/users/bonswouar","html_url":"https://github.com/bonswouar","followers_url":"https://api.github.com/users/bonswouar/followers","following_url":"https://api.github.com/users/bonswouar/following{/other_user}","gists_url":"https://api.github.com/users/bonswouar/gists{/gist_id}","starred_url":"https://api.github.com/users/bonswouar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bonswouar/subscriptions","organizations_url":"https://api.github.com/users/bonswouar/orgs","repos_url":"https://api.github.com/users/bonswouar/repos","events_url":"https://api.github.com/users/bonswouar/events{/privacy}","received_events_url":"https://api.github.com/users/bonswouar/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"yurtpage","id":155876573,"node_id":"U_kgDOCUp83Q","avatar_url":"https://avatars.githubusercontent.com/u/155876573?v=4","gravatar_id":"","url":"https://api.github.com/users/yurtpage","html_url":"https://github.com/yurtpage","followers_url":"https://api.github.com/users/yurtpage/followers","following_url":"https://api.github.com/users/yurtpage/following{/other_user}","gists_url":"https://api.github.com/users/yurtpage/gists{/gist_id}","starred_url":"https://api.github.com/users/yurtpage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yurtpage/subscriptions","organizations_url":"https://api.github.com/users/yurtpage/orgs","repos_url":"https://api.github.com/users/yurtpage/repos","events_url":"https://api.github.com/users/yurtpage/events{/privacy}","received_events_url":"https://api.github.com/users/yurtpage/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Vladik01-11","id":70571714,"node_id":"MDQ6VXNlcjcwNTcxNzE0","avatar_url":"https://avatars.githubusercontent.com/u/70571714?v=4","gravatar_id":"","url":"https://api.github.com/users/Vladik01-11","html_url":"https://github.com/Vladik01-11","followers_url":"https://api.github.com/users/Vladik01-11/followers","following_url":"https://api.github.com/users/Vladik01-11/following{/other_user}","gists_url":"https://api.github.com/users/Vladik01-11/gists{/gist_id}","starred_url":"https://api.github.com/users/Vladik01-11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Vladik01-11/subscriptions","organizations_url":"https://api.github.com/users/Vladik01-11/orgs","repos_url":"https://api.github.com/users/Vladik01-11/repos","events_url":"https://api.github.com/users/Vladik01-11/events{/privacy}","received_events_url":"https://api.github.com/users/Vladik01-11/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Midou36O","id":45198486,"node_id":"MDQ6VXNlcjQ1MTk4NDg2","avatar_url":"https://avatars.githubusercontent.com/u/45198486?v=4","gravatar_id":"","url":"https://api.github.com/users/Midou36O","html_url":"https://github.com/Midou36O","followers_url":"https://api.github.com/users/Midou36O/followers","following_url":"https://api.github.com/users/Midou36O/following{/other_user}","gists_url":"https://api.github.com/users/Midou36O/gists{/gist_id}","starred_url":"https://api.github.com/users/Midou36O/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Midou36O/subscriptions","organizations_url":"https://api.github.com/users/Midou36O/orgs","repos_url":"https://api.github.com/users/Midou36O/repos","events_url":"https://api.github.com/users/Midou36O/events{/privacy}","received_events_url":"https://api.github.com/users/Midou36O/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Makhuta","id":23267923,"node_id":"MDQ6VXNlcjIzMjY3OTIz","avatar_url":"https://avatars.githubusercontent.com/u/23267923?v=4","gravatar_id":"","url":"https://api.github.com/users/Makhuta","html_url":"https://github.com/Makhuta","followers_url":"https://api.github.com/users/Makhuta/followers","following_url":"https://api.github.com/users/Makhuta/following{/other_user}","gists_url":"https://api.github.com/users/Makhuta/gists{/gist_id}","starred_url":"https://api.github.com/users/Makhuta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Makhuta/subscriptions","organizations_url":"https://api.github.com/users/Makhuta/orgs","repos_url":"https://api.github.com/users/Makhuta/repos","events_url":"https://api.github.com/users/Makhuta/events{/privacy}","received_events_url":"https://api.github.com/users/Makhuta/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"viraj-sh","id":214743952,"node_id":"U_kgDODMy7kA","avatar_url":"https://avatars.githubusercontent.com/u/214743952?v=4","gravatar_id":"","url":"https://api.github.com/users/viraj-sh","html_url":"https://github.com/viraj-sh","followers_url":"https://api.github.com/users/viraj-sh/followers","following_url":"https://api.github.com/users/viraj-sh/following{/other_user}","gists_url":"https://api.github.com/users/viraj-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/viraj-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/viraj-sh/subscriptions","organizations_url":"https://api.github.com/users/viraj-sh/orgs","repos_url":"https://api.github.com/users/viraj-sh/repos","events_url":"https://api.github.com/users/viraj-sh/events{/privacy}","received_events_url":"https://api.github.com/users/viraj-sh/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Sphet98","id":260131232,"node_id":"U_kgDOD4FJoA","avatar_url":"https://avatars.githubusercontent.com/u/260131232?v=4","gravatar_id":"","url":"https://api.github.com/users/Sphet98","html_url":"https://github.com/Sphet98","followers_url":"https://api.github.com/users/Sphet98/followers","following_url":"https://api.github.com/users/Sphet98/following{/other_user}","gists_url":"https://api.github.com/users/Sphet98/gists{/gist_id}","starred_url":"https://api.github.com/users/Sphet98/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sphet98/subscriptions","organizations_url":"https://api.github.com/users/Sphet98/orgs","repos_url":"https://api.github.com/users/Sphet98/repos","events_url":"https://api.github.com/users/Sphet98/events{/privacy}","received_events_url":"https://api.github.com/users/Sphet98/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"simplylu","id":55274241,"node_id":"MDQ6VXNlcjU1Mjc0MjQx","avatar_url":"https://avatars.githubusercontent.com/u/55274241?v=4","gravatar_id":"","url":"https://api.github.com/users/simplylu","html_url":"https://github.com/simplylu","followers_url":"https://api.github.com/users/simplylu/followers","following_url":"https://api.github.com/users/simplylu/following{/other_user}","gists_url":"https://api.github.com/users/simplylu/gists{/gist_id}","starred_url":"https://api.github.com/users/simplylu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simplylu/subscriptions","organizations_url":"https://api.github.com/users/simplylu/orgs","repos_url":"https://api.github.com/users/simplylu/repos","events_url":"https://api.github.com/users/simplylu/events{/privacy}","received_events_url":"https://api.github.com/users/simplylu/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"ramazansancar","id":8878055,"node_id":"MDQ6VXNlcjg4NzgwNTU=","avatar_url":"https://avatars.githubusercontent.com/u/8878055?v=4","gravatar_id":"","url":"https://api.github.com/users/ramazansancar","html_url":"https://github.com/ramazansancar","followers_url":"https://api.github.com/users/ramazansancar/followers","following_url":"https://api.github.com/users/ramazansancar/following{/other_user}","gists_url":"https://api.github.com/users/ramazansancar/gists{/gist_id}","starred_url":"https://api.github.com/users/ramazansancar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ramazansancar/subscriptions","organizations_url":"https://api.github.com/users/ramazansancar/orgs","repos_url":"https://api.github.com/users/ramazansancar/repos","events_url":"https://api.github.com/users/ramazansancar/events{/privacy}","received_events_url":"https://api.github.com/users/ramazansancar/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"ptah-alexs","id":705210,"node_id":"MDQ6VXNlcjcwNTIxMA==","avatar_url":"https://avatars.githubusercontent.com/u/705210?v=4","gravatar_id":"","url":"https://api.github.com/users/ptah-alexs","html_url":"https://github.com/ptah-alexs","followers_url":"https://api.github.com/users/ptah-alexs/followers","following_url":"https://api.github.com/users/ptah-alexs/following{/other_user}","gists_url":"https://api.github.com/users/ptah-alexs/gists{/gist_id}","starred_url":"https://api.github.com/users/ptah-alexs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ptah-alexs/subscriptions","organizations_url":"https://api.github.com/users/ptah-alexs/orgs","repos_url":"https://api.github.com/users/ptah-alexs/repos","events_url":"https://api.github.com/users/ptah-alexs/events{/privacy}","received_events_url":"https://api.github.com/users/ptah-alexs/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"polarwood","id":199823813,"node_id":"U_kgDOC-kRxQ","avatar_url":"https://avatars.githubusercontent.com/u/199823813?v=4","gravatar_id":"","url":"https://api.github.com/users/polarwood","html_url":"https://github.com/polarwood","followers_url":"https://api.github.com/users/polarwood/followers","following_url":"https://api.github.com/users/polarwood/following{/other_user}","gists_url":"https://api.github.com/users/polarwood/gists{/gist_id}","starred_url":"https://api.github.com/users/polarwood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polarwood/subscriptions","organizations_url":"https://api.github.com/users/polarwood/orgs","repos_url":"https://api.github.com/users/polarwood/repos","events_url":"https://api.github.com/users/polarwood/events{/privacy}","received_events_url":"https://api.github.com/users/polarwood/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"beboprocky","id":110792083,"node_id":"U_kgDOBpqNkw","avatar_url":"https://avatars.githubusercontent.com/u/110792083?v=4","gravatar_id":"","url":"https://api.github.com/users/beboprocky","html_url":"https://github.com/beboprocky","followers_url":"https://api.github.com/users/beboprocky/followers","following_url":"https://api.github.com/users/beboprocky/following{/other_user}","gists_url":"https://api.github.com/users/beboprocky/gists{/gist_id}","starred_url":"https://api.github.com/users/beboprocky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/beboprocky/subscriptions","organizations_url":"https://api.github.com/users/beboprocky/orgs","repos_url":"https://api.github.com/users/beboprocky/repos","events_url":"https://api.github.com/users/beboprocky/events{/privacy}","received_events_url":"https://api.github.com/users/beboprocky/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Poussinou","id":19646549,"node_id":"MDQ6VXNlcjE5NjQ2NTQ5","avatar_url":"https://avatars.githubusercontent.com/u/19646549?v=4","gravatar_id":"","url":"https://api.github.com/users/Poussinou","html_url":"https://github.com/Poussinou","followers_url":"https://api.github.com/users/Poussinou/followers","following_url":"https://api.github.com/users/Poussinou/following{/other_user}","gists_url":"https://api.github.com/users/Poussinou/gists{/gist_id}","starred_url":"https://api.github.com/users/Poussinou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Poussinou/subscriptions","organizations_url":"https://api.github.com/users/Poussinou/orgs","repos_url":"https://api.github.com/users/Poussinou/repos","events_url":"https://api.github.com/users/Poussinou/events{/privacy}","received_events_url":"https://api.github.com/users/Poussinou/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Spaenny","id":5008508,"node_id":"MDQ6VXNlcjUwMDg1MDg=","avatar_url":"https://avatars.githubusercontent.com/u/5008508?v=4","gravatar_id":"","url":"https://api.github.com/users/Spaenny","html_url":"https://github.com/Spaenny","followers_url":"https://api.github.com/users/Spaenny/followers","following_url":"https://api.github.com/users/Spaenny/following{/other_user}","gists_url":"https://api.github.com/users/Spaenny/gists{/gist_id}","starred_url":"https://api.github.com/users/Spaenny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Spaenny/subscriptions","organizations_url":"https://api.github.com/users/Spaenny/orgs","repos_url":"https://api.github.com/users/Spaenny/repos","events_url":"https://api.github.com/users/Spaenny/events{/privacy}","received_events_url":"https://api.github.com/users/Spaenny/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1}] \ No newline at end of file +[{"login":"WardPearce","id":27844174,"node_id":"MDQ6VXNlcjI3ODQ0MTc0","avatar_url":"https://avatars.githubusercontent.com/u/27844174?v=4","gravatar_id":"","url":"https://api.github.com/users/WardPearce","html_url":"https://github.com/WardPearce","followers_url":"https://api.github.com/users/WardPearce/followers","following_url":"https://api.github.com/users/WardPearce/following{/other_user}","gists_url":"https://api.github.com/users/WardPearce/gists{/gist_id}","starred_url":"https://api.github.com/users/WardPearce/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WardPearce/subscriptions","organizations_url":"https://api.github.com/users/WardPearce/orgs","repos_url":"https://api.github.com/users/WardPearce/repos","events_url":"https://api.github.com/users/WardPearce/events{/privacy}","received_events_url":"https://api.github.com/users/WardPearce/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2067},{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false,"contributions":227},{"login":"Lezurex","id":48829956,"node_id":"MDQ6VXNlcjQ4ODI5OTU2","avatar_url":"https://avatars.githubusercontent.com/u/48829956?v=4","gravatar_id":"","url":"https://api.github.com/users/Lezurex","html_url":"https://github.com/Lezurex","followers_url":"https://api.github.com/users/Lezurex/followers","following_url":"https://api.github.com/users/Lezurex/following{/other_user}","gists_url":"https://api.github.com/users/Lezurex/gists{/gist_id}","starred_url":"https://api.github.com/users/Lezurex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lezurex/subscriptions","organizations_url":"https://api.github.com/users/Lezurex/orgs","repos_url":"https://api.github.com/users/Lezurex/repos","events_url":"https://api.github.com/users/Lezurex/events{/privacy}","received_events_url":"https://api.github.com/users/Lezurex/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":39},{"login":"Coool","id":8421903,"node_id":"MDQ6VXNlcjg0MjE5MDM=","avatar_url":"https://avatars.githubusercontent.com/u/8421903?v=4","gravatar_id":"","url":"https://api.github.com/users/Coool","html_url":"https://github.com/Coool","followers_url":"https://api.github.com/users/Coool/followers","following_url":"https://api.github.com/users/Coool/following{/other_user}","gists_url":"https://api.github.com/users/Coool/gists{/gist_id}","starred_url":"https://api.github.com/users/Coool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Coool/subscriptions","organizations_url":"https://api.github.com/users/Coool/orgs","repos_url":"https://api.github.com/users/Coool/repos","events_url":"https://api.github.com/users/Coool/events{/privacy}","received_events_url":"https://api.github.com/users/Coool/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":15},{"login":"araujosemacento","id":60983392,"node_id":"MDQ6VXNlcjYwOTgzMzky","avatar_url":"https://avatars.githubusercontent.com/u/60983392?v=4","gravatar_id":"","url":"https://api.github.com/users/araujosemacento","html_url":"https://github.com/araujosemacento","followers_url":"https://api.github.com/users/araujosemacento/followers","following_url":"https://api.github.com/users/araujosemacento/following{/other_user}","gists_url":"https://api.github.com/users/araujosemacento/gists{/gist_id}","starred_url":"https://api.github.com/users/araujosemacento/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/araujosemacento/subscriptions","organizations_url":"https://api.github.com/users/araujosemacento/orgs","repos_url":"https://api.github.com/users/araujosemacento/repos","events_url":"https://api.github.com/users/araujosemacento/events{/privacy}","received_events_url":"https://api.github.com/users/araujosemacento/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":14},{"login":"ghostofsparta222","id":251893418,"node_id":"U_kgDODwOWqg","avatar_url":"https://avatars.githubusercontent.com/u/251893418?v=4","gravatar_id":"","url":"https://api.github.com/users/ghostofsparta222","html_url":"https://github.com/ghostofsparta222","followers_url":"https://api.github.com/users/ghostofsparta222/followers","following_url":"https://api.github.com/users/ghostofsparta222/following{/other_user}","gists_url":"https://api.github.com/users/ghostofsparta222/gists{/gist_id}","starred_url":"https://api.github.com/users/ghostofsparta222/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ghostofsparta222/subscriptions","organizations_url":"https://api.github.com/users/ghostofsparta222/orgs","repos_url":"https://api.github.com/users/ghostofsparta222/repos","events_url":"https://api.github.com/users/ghostofsparta222/events{/privacy}","received_events_url":"https://api.github.com/users/ghostofsparta222/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":11},{"login":"toolatebot","id":169580663,"node_id":"U_kgDOChuYdw","avatar_url":"https://avatars.githubusercontent.com/u/169580663?v=4","gravatar_id":"","url":"https://api.github.com/users/toolatebot","html_url":"https://github.com/toolatebot","followers_url":"https://api.github.com/users/toolatebot/followers","following_url":"https://api.github.com/users/toolatebot/following{/other_user}","gists_url":"https://api.github.com/users/toolatebot/gists{/gist_id}","starred_url":"https://api.github.com/users/toolatebot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toolatebot/subscriptions","organizations_url":"https://api.github.com/users/toolatebot/orgs","repos_url":"https://api.github.com/users/toolatebot/repos","events_url":"https://api.github.com/users/toolatebot/events{/privacy}","received_events_url":"https://api.github.com/users/toolatebot/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":9},{"login":"Precific","id":30053082,"node_id":"MDQ6VXNlcjMwMDUzMDgy","avatar_url":"https://avatars.githubusercontent.com/u/30053082?v=4","gravatar_id":"","url":"https://api.github.com/users/Precific","html_url":"https://github.com/Precific","followers_url":"https://api.github.com/users/Precific/followers","following_url":"https://api.github.com/users/Precific/following{/other_user}","gists_url":"https://api.github.com/users/Precific/gists{/gist_id}","starred_url":"https://api.github.com/users/Precific/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Precific/subscriptions","organizations_url":"https://api.github.com/users/Precific/orgs","repos_url":"https://api.github.com/users/Precific/repos","events_url":"https://api.github.com/users/Precific/events{/privacy}","received_events_url":"https://api.github.com/users/Precific/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":9},{"login":"yzqzss","id":30341059,"node_id":"MDQ6VXNlcjMwMzQxMDU5","avatar_url":"https://avatars.githubusercontent.com/u/30341059?v=4","gravatar_id":"","url":"https://api.github.com/users/yzqzss","html_url":"https://github.com/yzqzss","followers_url":"https://api.github.com/users/yzqzss/followers","following_url":"https://api.github.com/users/yzqzss/following{/other_user}","gists_url":"https://api.github.com/users/yzqzss/gists{/gist_id}","starred_url":"https://api.github.com/users/yzqzss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yzqzss/subscriptions","organizations_url":"https://api.github.com/users/yzqzss/orgs","repos_url":"https://api.github.com/users/yzqzss/repos","events_url":"https://api.github.com/users/yzqzss/events{/privacy}","received_events_url":"https://api.github.com/users/yzqzss/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"thejenja","id":65224669,"node_id":"MDQ6VXNlcjY1MjI0NjY5","avatar_url":"https://avatars.githubusercontent.com/u/65224669?v=4","gravatar_id":"","url":"https://api.github.com/users/thejenja","html_url":"https://github.com/thejenja","followers_url":"https://api.github.com/users/thejenja/followers","following_url":"https://api.github.com/users/thejenja/following{/other_user}","gists_url":"https://api.github.com/users/thejenja/gists{/gist_id}","starred_url":"https://api.github.com/users/thejenja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thejenja/subscriptions","organizations_url":"https://api.github.com/users/thejenja/orgs","repos_url":"https://api.github.com/users/thejenja/repos","events_url":"https://api.github.com/users/thejenja/events{/privacy}","received_events_url":"https://api.github.com/users/thejenja/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"cookiennn","id":114363954,"node_id":"U_kgDOBtEOMg","avatar_url":"https://avatars.githubusercontent.com/u/114363954?v=4","gravatar_id":"","url":"https://api.github.com/users/cookiennn","html_url":"https://github.com/cookiennn","followers_url":"https://api.github.com/users/cookiennn/followers","following_url":"https://api.github.com/users/cookiennn/following{/other_user}","gists_url":"https://api.github.com/users/cookiennn/gists{/gist_id}","starred_url":"https://api.github.com/users/cookiennn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cookiennn/subscriptions","organizations_url":"https://api.github.com/users/cookiennn/orgs","repos_url":"https://api.github.com/users/cookiennn/repos","events_url":"https://api.github.com/users/cookiennn/events{/privacy}","received_events_url":"https://api.github.com/users/cookiennn/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"SecularSteve","id":33793273,"node_id":"MDQ6VXNlcjMzNzkzMjcz","avatar_url":"https://avatars.githubusercontent.com/u/33793273?v=4","gravatar_id":"","url":"https://api.github.com/users/SecularSteve","html_url":"https://github.com/SecularSteve","followers_url":"https://api.github.com/users/SecularSteve/followers","following_url":"https://api.github.com/users/SecularSteve/following{/other_user}","gists_url":"https://api.github.com/users/SecularSteve/gists{/gist_id}","starred_url":"https://api.github.com/users/SecularSteve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SecularSteve/subscriptions","organizations_url":"https://api.github.com/users/SecularSteve/orgs","repos_url":"https://api.github.com/users/SecularSteve/repos","events_url":"https://api.github.com/users/SecularSteve/events{/privacy}","received_events_url":"https://api.github.com/users/SecularSteve/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":4},{"login":"R0GGER","id":8298741,"node_id":"MDQ6VXNlcjgyOTg3NDE=","avatar_url":"https://avatars.githubusercontent.com/u/8298741?v=4","gravatar_id":"","url":"https://api.github.com/users/R0GGER","html_url":"https://github.com/R0GGER","followers_url":"https://api.github.com/users/R0GGER/followers","following_url":"https://api.github.com/users/R0GGER/following{/other_user}","gists_url":"https://api.github.com/users/R0GGER/gists{/gist_id}","starred_url":"https://api.github.com/users/R0GGER/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/R0GGER/subscriptions","organizations_url":"https://api.github.com/users/R0GGER/orgs","repos_url":"https://api.github.com/users/R0GGER/repos","events_url":"https://api.github.com/users/R0GGER/events{/privacy}","received_events_url":"https://api.github.com/users/R0GGER/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"arcoast","id":81871508,"node_id":"MDQ6VXNlcjgxODcxNTA4","avatar_url":"https://avatars.githubusercontent.com/u/81871508?v=4","gravatar_id":"","url":"https://api.github.com/users/arcoast","html_url":"https://github.com/arcoast","followers_url":"https://api.github.com/users/arcoast/followers","following_url":"https://api.github.com/users/arcoast/following{/other_user}","gists_url":"https://api.github.com/users/arcoast/gists{/gist_id}","starred_url":"https://api.github.com/users/arcoast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arcoast/subscriptions","organizations_url":"https://api.github.com/users/arcoast/orgs","repos_url":"https://api.github.com/users/arcoast/repos","events_url":"https://api.github.com/users/arcoast/events{/privacy}","received_events_url":"https://api.github.com/users/arcoast/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"maboroshin","id":41102508,"node_id":"MDQ6VXNlcjQxMTAyNTA4","avatar_url":"https://avatars.githubusercontent.com/u/41102508?v=4","gravatar_id":"","url":"https://api.github.com/users/maboroshin","html_url":"https://github.com/maboroshin","followers_url":"https://api.github.com/users/maboroshin/followers","following_url":"https://api.github.com/users/maboroshin/following{/other_user}","gists_url":"https://api.github.com/users/maboroshin/gists{/gist_id}","starred_url":"https://api.github.com/users/maboroshin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maboroshin/subscriptions","organizations_url":"https://api.github.com/users/maboroshin/orgs","repos_url":"https://api.github.com/users/maboroshin/repos","events_url":"https://api.github.com/users/maboroshin/events{/privacy}","received_events_url":"https://api.github.com/users/maboroshin/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":3},{"login":"lamarios","id":1192563,"node_id":"MDQ6VXNlcjExOTI1NjM=","avatar_url":"https://avatars.githubusercontent.com/u/1192563?v=4","gravatar_id":"","url":"https://api.github.com/users/lamarios","html_url":"https://github.com/lamarios","followers_url":"https://api.github.com/users/lamarios/followers","following_url":"https://api.github.com/users/lamarios/following{/other_user}","gists_url":"https://api.github.com/users/lamarios/gists{/gist_id}","starred_url":"https://api.github.com/users/lamarios/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lamarios/subscriptions","organizations_url":"https://api.github.com/users/lamarios/orgs","repos_url":"https://api.github.com/users/lamarios/repos","events_url":"https://api.github.com/users/lamarios/events{/privacy}","received_events_url":"https://api.github.com/users/lamarios/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"bonswouar","id":615053,"node_id":"MDQ6VXNlcjYxNTA1Mw==","avatar_url":"https://avatars.githubusercontent.com/u/615053?v=4","gravatar_id":"","url":"https://api.github.com/users/bonswouar","html_url":"https://github.com/bonswouar","followers_url":"https://api.github.com/users/bonswouar/followers","following_url":"https://api.github.com/users/bonswouar/following{/other_user}","gists_url":"https://api.github.com/users/bonswouar/gists{/gist_id}","starred_url":"https://api.github.com/users/bonswouar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bonswouar/subscriptions","organizations_url":"https://api.github.com/users/bonswouar/orgs","repos_url":"https://api.github.com/users/bonswouar/repos","events_url":"https://api.github.com/users/bonswouar/events{/privacy}","received_events_url":"https://api.github.com/users/bonswouar/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"yurtpage","id":155876573,"node_id":"U_kgDOCUp83Q","avatar_url":"https://avatars.githubusercontent.com/u/155876573?v=4","gravatar_id":"","url":"https://api.github.com/users/yurtpage","html_url":"https://github.com/yurtpage","followers_url":"https://api.github.com/users/yurtpage/followers","following_url":"https://api.github.com/users/yurtpage/following{/other_user}","gists_url":"https://api.github.com/users/yurtpage/gists{/gist_id}","starred_url":"https://api.github.com/users/yurtpage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yurtpage/subscriptions","organizations_url":"https://api.github.com/users/yurtpage/orgs","repos_url":"https://api.github.com/users/yurtpage/repos","events_url":"https://api.github.com/users/yurtpage/events{/privacy}","received_events_url":"https://api.github.com/users/yurtpage/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Vladik01-11","id":70571714,"node_id":"MDQ6VXNlcjcwNTcxNzE0","avatar_url":"https://avatars.githubusercontent.com/u/70571714?v=4","gravatar_id":"","url":"https://api.github.com/users/Vladik01-11","html_url":"https://github.com/Vladik01-11","followers_url":"https://api.github.com/users/Vladik01-11/followers","following_url":"https://api.github.com/users/Vladik01-11/following{/other_user}","gists_url":"https://api.github.com/users/Vladik01-11/gists{/gist_id}","starred_url":"https://api.github.com/users/Vladik01-11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Vladik01-11/subscriptions","organizations_url":"https://api.github.com/users/Vladik01-11/orgs","repos_url":"https://api.github.com/users/Vladik01-11/repos","events_url":"https://api.github.com/users/Vladik01-11/events{/privacy}","received_events_url":"https://api.github.com/users/Vladik01-11/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Midou36O","id":45198486,"node_id":"MDQ6VXNlcjQ1MTk4NDg2","avatar_url":"https://avatars.githubusercontent.com/u/45198486?v=4","gravatar_id":"","url":"https://api.github.com/users/Midou36O","html_url":"https://github.com/Midou36O","followers_url":"https://api.github.com/users/Midou36O/followers","following_url":"https://api.github.com/users/Midou36O/following{/other_user}","gists_url":"https://api.github.com/users/Midou36O/gists{/gist_id}","starred_url":"https://api.github.com/users/Midou36O/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Midou36O/subscriptions","organizations_url":"https://api.github.com/users/Midou36O/orgs","repos_url":"https://api.github.com/users/Midou36O/repos","events_url":"https://api.github.com/users/Midou36O/events{/privacy}","received_events_url":"https://api.github.com/users/Midou36O/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"Makhuta","id":23267923,"node_id":"MDQ6VXNlcjIzMjY3OTIz","avatar_url":"https://avatars.githubusercontent.com/u/23267923?v=4","gravatar_id":"","url":"https://api.github.com/users/Makhuta","html_url":"https://github.com/Makhuta","followers_url":"https://api.github.com/users/Makhuta/followers","following_url":"https://api.github.com/users/Makhuta/following{/other_user}","gists_url":"https://api.github.com/users/Makhuta/gists{/gist_id}","starred_url":"https://api.github.com/users/Makhuta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Makhuta/subscriptions","organizations_url":"https://api.github.com/users/Makhuta/orgs","repos_url":"https://api.github.com/users/Makhuta/repos","events_url":"https://api.github.com/users/Makhuta/events{/privacy}","received_events_url":"https://api.github.com/users/Makhuta/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":2},{"login":"viraj-sh","id":214743952,"node_id":"U_kgDODMy7kA","avatar_url":"https://avatars.githubusercontent.com/u/214743952?v=4","gravatar_id":"","url":"https://api.github.com/users/viraj-sh","html_url":"https://github.com/viraj-sh","followers_url":"https://api.github.com/users/viraj-sh/followers","following_url":"https://api.github.com/users/viraj-sh/following{/other_user}","gists_url":"https://api.github.com/users/viraj-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/viraj-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/viraj-sh/subscriptions","organizations_url":"https://api.github.com/users/viraj-sh/orgs","repos_url":"https://api.github.com/users/viraj-sh/repos","events_url":"https://api.github.com/users/viraj-sh/events{/privacy}","received_events_url":"https://api.github.com/users/viraj-sh/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Sphet98","id":260131232,"node_id":"U_kgDOD4FJoA","avatar_url":"https://avatars.githubusercontent.com/u/260131232?v=4","gravatar_id":"","url":"https://api.github.com/users/Sphet98","html_url":"https://github.com/Sphet98","followers_url":"https://api.github.com/users/Sphet98/followers","following_url":"https://api.github.com/users/Sphet98/following{/other_user}","gists_url":"https://api.github.com/users/Sphet98/gists{/gist_id}","starred_url":"https://api.github.com/users/Sphet98/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sphet98/subscriptions","organizations_url":"https://api.github.com/users/Sphet98/orgs","repos_url":"https://api.github.com/users/Sphet98/repos","events_url":"https://api.github.com/users/Sphet98/events{/privacy}","received_events_url":"https://api.github.com/users/Sphet98/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"simplylu","id":55274241,"node_id":"MDQ6VXNlcjU1Mjc0MjQx","avatar_url":"https://avatars.githubusercontent.com/u/55274241?v=4","gravatar_id":"","url":"https://api.github.com/users/simplylu","html_url":"https://github.com/simplylu","followers_url":"https://api.github.com/users/simplylu/followers","following_url":"https://api.github.com/users/simplylu/following{/other_user}","gists_url":"https://api.github.com/users/simplylu/gists{/gist_id}","starred_url":"https://api.github.com/users/simplylu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/simplylu/subscriptions","organizations_url":"https://api.github.com/users/simplylu/orgs","repos_url":"https://api.github.com/users/simplylu/repos","events_url":"https://api.github.com/users/simplylu/events{/privacy}","received_events_url":"https://api.github.com/users/simplylu/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"ramazansancar","id":8878055,"node_id":"MDQ6VXNlcjg4NzgwNTU=","avatar_url":"https://avatars.githubusercontent.com/u/8878055?v=4","gravatar_id":"","url":"https://api.github.com/users/ramazansancar","html_url":"https://github.com/ramazansancar","followers_url":"https://api.github.com/users/ramazansancar/followers","following_url":"https://api.github.com/users/ramazansancar/following{/other_user}","gists_url":"https://api.github.com/users/ramazansancar/gists{/gist_id}","starred_url":"https://api.github.com/users/ramazansancar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ramazansancar/subscriptions","organizations_url":"https://api.github.com/users/ramazansancar/orgs","repos_url":"https://api.github.com/users/ramazansancar/repos","events_url":"https://api.github.com/users/ramazansancar/events{/privacy}","received_events_url":"https://api.github.com/users/ramazansancar/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"ptah-alexs","id":705210,"node_id":"MDQ6VXNlcjcwNTIxMA==","avatar_url":"https://avatars.githubusercontent.com/u/705210?v=4","gravatar_id":"","url":"https://api.github.com/users/ptah-alexs","html_url":"https://github.com/ptah-alexs","followers_url":"https://api.github.com/users/ptah-alexs/followers","following_url":"https://api.github.com/users/ptah-alexs/following{/other_user}","gists_url":"https://api.github.com/users/ptah-alexs/gists{/gist_id}","starred_url":"https://api.github.com/users/ptah-alexs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ptah-alexs/subscriptions","organizations_url":"https://api.github.com/users/ptah-alexs/orgs","repos_url":"https://api.github.com/users/ptah-alexs/repos","events_url":"https://api.github.com/users/ptah-alexs/events{/privacy}","received_events_url":"https://api.github.com/users/ptah-alexs/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"polarwood","id":199823813,"node_id":"U_kgDOC-kRxQ","avatar_url":"https://avatars.githubusercontent.com/u/199823813?v=4","gravatar_id":"","url":"https://api.github.com/users/polarwood","html_url":"https://github.com/polarwood","followers_url":"https://api.github.com/users/polarwood/followers","following_url":"https://api.github.com/users/polarwood/following{/other_user}","gists_url":"https://api.github.com/users/polarwood/gists{/gist_id}","starred_url":"https://api.github.com/users/polarwood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polarwood/subscriptions","organizations_url":"https://api.github.com/users/polarwood/orgs","repos_url":"https://api.github.com/users/polarwood/repos","events_url":"https://api.github.com/users/polarwood/events{/privacy}","received_events_url":"https://api.github.com/users/polarwood/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"beboprocky","id":110792083,"node_id":"U_kgDOBpqNkw","avatar_url":"https://avatars.githubusercontent.com/u/110792083?v=4","gravatar_id":"","url":"https://api.github.com/users/beboprocky","html_url":"https://github.com/beboprocky","followers_url":"https://api.github.com/users/beboprocky/followers","following_url":"https://api.github.com/users/beboprocky/following{/other_user}","gists_url":"https://api.github.com/users/beboprocky/gists{/gist_id}","starred_url":"https://api.github.com/users/beboprocky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/beboprocky/subscriptions","organizations_url":"https://api.github.com/users/beboprocky/orgs","repos_url":"https://api.github.com/users/beboprocky/repos","events_url":"https://api.github.com/users/beboprocky/events{/privacy}","received_events_url":"https://api.github.com/users/beboprocky/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Poussinou","id":19646549,"node_id":"MDQ6VXNlcjE5NjQ2NTQ5","avatar_url":"https://avatars.githubusercontent.com/u/19646549?v=4","gravatar_id":"","url":"https://api.github.com/users/Poussinou","html_url":"https://github.com/Poussinou","followers_url":"https://api.github.com/users/Poussinou/followers","following_url":"https://api.github.com/users/Poussinou/following{/other_user}","gists_url":"https://api.github.com/users/Poussinou/gists{/gist_id}","starred_url":"https://api.github.com/users/Poussinou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Poussinou/subscriptions","organizations_url":"https://api.github.com/users/Poussinou/orgs","repos_url":"https://api.github.com/users/Poussinou/repos","events_url":"https://api.github.com/users/Poussinou/events{/privacy}","received_events_url":"https://api.github.com/users/Poussinou/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1},{"login":"Spaenny","id":5008508,"node_id":"MDQ6VXNlcjUwMDg1MDg=","avatar_url":"https://avatars.githubusercontent.com/u/5008508?v=4","gravatar_id":"","url":"https://api.github.com/users/Spaenny","html_url":"https://github.com/Spaenny","followers_url":"https://api.github.com/users/Spaenny/followers","following_url":"https://api.github.com/users/Spaenny/following{/other_user}","gists_url":"https://api.github.com/users/Spaenny/gists{/gist_id}","starred_url":"https://api.github.com/users/Spaenny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Spaenny/subscriptions","organizations_url":"https://api.github.com/users/Spaenny/orgs","repos_url":"https://api.github.com/users/Spaenny/repos","events_url":"https://api.github.com/users/Spaenny/events{/privacy}","received_events_url":"https://api.github.com/users/Spaenny/received_events","type":"User","user_view_type":"public","site_admin":false,"contributions":1}] \ No newline at end of file diff --git a/update_versions.py b/update_versions.py index 509c035a..8707df2d 100644 --- a/update_versions.py +++ b/update_versions.py @@ -3,7 +3,7 @@ import os import re from datetime import datetime -LATEST_VERSION = "1.15.4" +LATEST_VERSION = "1.15.5" RELEASE_DATE = datetime.now().strftime("%Y-%-m-%d") # Format: YYYY-M-D WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious") From 36c2919504c04c8adbd4aca163a77b75672abac6 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Mon, 16 Feb 2026 08:19:56 +1300 Subject: [PATCH 2/4] Update +server.ts --- materialious/src/routes/api/proxy/[urlToProxy]/+server.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts b/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts index 73b86044..b4a47eab 100644 --- a/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts +++ b/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts @@ -105,13 +105,10 @@ async function proxyRequest( } const response = await fetch(urlToProxy, { ...requestOptions, body }); - - const responseHeaders = new Headers(); const responseBody = await response.blob(); return new Response(responseBody, { - status: response.status, - headers: responseHeaders + status: response.status }); } From 52487bead42bc5754248cee2d0b2d2e6996afc2d Mon Sep 17 00:00:00 2001 From: WardPearce Date: Mon, 16 Feb 2026 08:55:14 +1300 Subject: [PATCH 3/4] Fixed volume slider --- materialious/electron/package-lock.json | 4 +-- materialious/src/lib/components/Player.svelte | 28 +++++-------------- .../src/lib/externalSettings/settings.ts | 4 +-- materialious/src/lib/store.ts | 2 +- 4 files changed, 12 insertions(+), 26 deletions(-) diff --git a/materialious/electron/package-lock.json b/materialious/electron/package-lock.json index de36c361..d2992900 100644 --- a/materialious/electron/package-lock.json +++ b/materialious/electron/package-lock.json @@ -1,12 +1,12 @@ { "name": "Materialious", - "version": "1.15.4", + "version": "1.15.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "Materialious", - "version": "1.15.4", + "version": "1.15.5", "license": "MIT", "dependencies": { "@capacitor-community/electron": "^5.0.0", diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index d730a842..75242ade 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -30,7 +30,7 @@ playerDefaultLanguage, playerDefaultPlaybackSpeed, playerDefaultQualityStore, - playerPreferredVolume, + playerPreferredVolumeStore, playerProxyVideosStore, playerSavePlaybackPositionStore, playerState, @@ -113,7 +113,7 @@ let playerCurrentPlaybackState = $state(false); let playerMaxKnownTime = $state(data.video.lengthSeconds); let playerIsBuffering = $state(true); - let playerVolume = $state(0); + let playerVolume = $state($playerPreferredVolumeStore); let playerSettings: 'quality' | 'speed' | 'language' | 'root' = $state('root'); let playerTextTracks: shaka.extern.TextTrack[] | undefined = $state(undefined); let playerCurrentVideoTrack: shaka.extern.VideoTrack | undefined = $state(undefined); @@ -126,7 +126,6 @@ let playerCloestSponsor: Segment | undefined = $state(); let playerSliderElement: HTMLElement | undefined = $state(); let playerSliderDebounce: ReturnType; - let playerVolumeElement: HTMLElement | undefined = $state(); let playerIsFullscreen: boolean = $state(false); let playerTimelineTooltip: HTMLDivElement | undefined = $state(); let playerTimelineThumbnails: TimelineThumbnail[] = $state([]); @@ -246,12 +245,14 @@ function saveVolumePreference() { if (!playerElement) return; - playerPreferredVolume.set(playerElement.volume); + playerVolume = playerElement.volume; + playerPreferredVolumeStore.set(playerElement.volume); } function restoreVolumePreference() { if (!playerElement) return; - playerElement.volume = $playerPreferredVolume; + playerElement.volume = $playerPreferredVolumeStore; + playerVolume = playerElement.volume; } function restoreQualityPreference() { @@ -964,17 +965,6 @@ showPlayerUI(); }); - playerVolumeElement?.addEventListener('mousewheel', (event) => { - event.preventDefault(); - const delta = Math.sign((event as any).deltaY); - const newVolume = Math.max( - 0, - Math.min(1, (playerElement as HTMLMediaElement).volume - delta * 0.05) - ); - (playerElement as HTMLMediaElement).volume = newVolume; - playerVolume = newVolume; - }); - playerElement?.addEventListener('pause', async () => { playerCurrentPlaybackState = false; playerIsBuffering = false; @@ -1462,11 +1452,7 @@ {#if !isMobile()} -
+
diff --git a/materialious/src/lib/externalSettings/settings.ts b/materialious/src/lib/externalSettings/settings.ts index f96b9a7f..606b9b7d 100644 --- a/materialious/src/lib/externalSettings/settings.ts +++ b/materialious/src/lib/externalSettings/settings.ts @@ -53,7 +53,7 @@ import { playerYouTubeJsFallback, playerYouTubeJsAlways, interfaceSearchHistoryEnabled, - playerPreferredVolume + playerPreferredVolumeStore } from '$lib/store'; import { isOwnBackend } from '$lib/shared'; @@ -260,7 +260,7 @@ export const persistedStores: PersistedStore[] = [ }, { name: 'preferredVolume', - store: playerPreferredVolume, + store: playerPreferredVolumeStore, schema: zFloat }, { diff --git a/materialious/src/lib/store.ts b/materialious/src/lib/store.ts index ea48435d..f387a2df 100644 --- a/materialious/src/lib/store.ts +++ b/materialious/src/lib/store.ts @@ -179,7 +179,7 @@ export const playerAndroidPauseOnNetworkChange = persist( createStorage(), 'pauseOnNetworkChange' ); -export const playerPreferredVolume: Writable = persist( +export const playerPreferredVolumeStore: Writable = persist( writable(0.5), createStorage(), 'preferredVolume' From 526905fae1ea075a6198324d40cdf0290141d16e Mon Sep 17 00:00:00 2001 From: WardPearce Date: Mon, 16 Feb 2026 09:03:45 +1300 Subject: [PATCH 4/4] Moved $lib/fetchProxy --- materialious/src/routes/+layout.svelte | 1 - materialious/src/routes/+layout.ts | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/materialious/src/routes/+layout.svelte b/materialious/src/routes/+layout.svelte index f59f6da5..dcc0a5b6 100644 --- a/materialious/src/routes/+layout.svelte +++ b/materialious/src/routes/+layout.svelte @@ -9,7 +9,6 @@ } from '$lib/store'; import ui from 'beercss'; import { App } from '@capacitor/app'; - import '$lib/fetchProxy'; import { goto } from '$app/navigation'; import { resolve } from '$app/paths'; import { setAmoledTheme, setStatusBarColor, setTheme } from '$lib/theme'; diff --git a/materialious/src/routes/+layout.ts b/materialious/src/routes/+layout.ts index a5d6aad9..2558df89 100644 --- a/materialious/src/routes/+layout.ts +++ b/materialious/src/routes/+layout.ts @@ -20,6 +20,7 @@ import { Preferences } from '@capacitor/preferences'; import { deserialize } from '@macfja/serializer'; import { isYTBackend } from '$lib/misc'; import { isOwnBackend } from '$lib/shared/index'; +import '$lib/fetchProxy'; export const ssr = false; export const prerender = false;