mirror of
https://github.com/Viren070/stremio-gdrive-addon.git
synced 2025-12-01 23:20:04 +01:00
fix: reduce max files to fetch from 15000 to 3000 and fix pagination
This commit is contained in:
+22
-9
@@ -32,7 +32,7 @@ const CONFIG = {
|
|||||||
tmdbApiKey: null,
|
tmdbApiKey: null,
|
||||||
enableSearchCatalog: true,
|
enableSearchCatalog: true,
|
||||||
enableVideoCatalog: true,
|
enableVideoCatalog: true,
|
||||||
maxFilesToFetch: 15000,
|
maxFilesToFetch: 3000,
|
||||||
driveQueryTerms: {
|
driveQueryTerms: {
|
||||||
episodeFormat: "fullText",
|
episodeFormat: "fullText",
|
||||||
titleName: "name",
|
titleName: "name",
|
||||||
@@ -736,10 +736,11 @@ async function fetchFiles(fetchUrl, accessToken) {
|
|||||||
throw new Error(err);
|
throw new Error(err);
|
||||||
}
|
}
|
||||||
// handle paginated results
|
// handle paginated results
|
||||||
|
|
||||||
const results = await response.json();
|
const results = await response.json();
|
||||||
|
console.log({message: "Initial search yielded results", numItems: results.files.length});
|
||||||
while (results.nextPageToken) {
|
while (results.nextPageToken) {
|
||||||
console.log({ message: "Fetching next page of results", nextPageToken: results.nextPageToken });
|
|
||||||
fetchUrl.searchParams.set("pageToken", results.nextPageToken);
|
fetchUrl.searchParams.set("pageToken", results.nextPageToken);
|
||||||
const nextPageResponse = await fetch(fetchUrl.toString(), {
|
const nextPageResponse = await fetch(fetchUrl.toString(), {
|
||||||
headers: { Authorization: `Bearer ${accessToken}` },
|
headers: { Authorization: `Bearer ${accessToken}` },
|
||||||
@@ -752,8 +753,8 @@ async function fetchFiles(fetchUrl, accessToken) {
|
|||||||
|
|
||||||
const nextPageResults = await nextPageResponse.json();
|
const nextPageResults = await nextPageResponse.json();
|
||||||
results.files = [...results.files, ...nextPageResults.files];
|
results.files = [...results.files, ...nextPageResults.files];
|
||||||
console.log({ message: "Fetched next page of results", nextPageToken: nextPageResults.nextPageToken });
|
|
||||||
results.nextPageToken = nextPageResults.nextPageToken;
|
results.nextPageToken = nextPageResults.nextPageToken;
|
||||||
|
console.log({message: "Searched next page", nextPageResults: nextPageResults.files.length, nextPageToken: nextPageResults.nextPageToken, totalResults: results.files.length});
|
||||||
if (results.files.length >= CONFIG.maxFilesToFetch) {
|
if (results.files.length >= CONFIG.maxFilesToFetch) {
|
||||||
console.log({
|
console.log({
|
||||||
message: "Reached maximum number of files",
|
message: "Reached maximum number of files",
|
||||||
@@ -761,6 +762,10 @@ async function fetchFiles(fetchUrl, accessToken) {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (nextPageResults.files.length === 0) {
|
||||||
|
console.log({message: "No more files to fetch"});
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
@@ -780,7 +785,7 @@ async function fetchFile(fileId, accessToken) {
|
|||||||
);
|
);
|
||||||
const searchParams = {
|
const searchParams = {
|
||||||
supportsAllDrives: true,
|
supportsAllDrives: true,
|
||||||
fields: "id,name,mimeType,size,videoMediaMetadata,fileExtension,createdTime, thumbnailLink, iconLink",
|
fields: "id,name,mimeType,size,videoMediaMetadata,fileExtension,createdTime,thumbnailLink,iconLink",
|
||||||
};
|
};
|
||||||
fetchUrl.search = new URLSearchParams(searchParams).toString();
|
fetchUrl.search = new URLSearchParams(searchParams).toString();
|
||||||
const response = await fetch(fetchUrl.toString(), {
|
const response = await fetch(fetchUrl.toString(), {
|
||||||
@@ -974,13 +979,19 @@ async function handleRequest(request) {
|
|||||||
return createProxiedStreamResponse(fileId, filename, request);
|
return createProxiedStreamResponse(fileId, filename, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
const createMetaObject = (id, name, size, thumbnail, icon) => ({
|
const createMetaObject = (id, name, size, thumbnail, createdTime) => ({
|
||||||
id: `gdrive:${id}`,
|
id: `gdrive:${id}`,
|
||||||
name,
|
name,
|
||||||
posterShape: "landscape",
|
posterShape: "landscape",
|
||||||
background: thumbnail,
|
background: thumbnail,
|
||||||
poster: thumbnail,
|
poster: thumbnail,
|
||||||
description: `Name: ${name}\nSize: ${formatSize(size)}`,
|
description: `Size: ${formatSize(size)} Created: ${new Date(
|
||||||
|
createdTime) .toLocaleDateString("en-GB", {
|
||||||
|
year: "numeric",
|
||||||
|
month: "long",
|
||||||
|
day: "numeric",
|
||||||
|
})}`,
|
||||||
|
|
||||||
type: "movie",
|
type: "movie",
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1019,7 +1030,8 @@ async function handleRequest(request) {
|
|||||||
parsedFile.name,
|
parsedFile.name,
|
||||||
parsedFile.size,
|
parsedFile.size,
|
||||||
file.thumbnailLink,
|
file.thumbnailLink,
|
||||||
file.iconLink
|
file.createdTime
|
||||||
|
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1040,7 +1052,8 @@ async function handleRequest(request) {
|
|||||||
includeItemsFromAllDrives: "true",
|
includeItemsFromAllDrives: "true",
|
||||||
supportsAllDrives: "true",
|
supportsAllDrives: "true",
|
||||||
pageSize: "1000",
|
pageSize: "1000",
|
||||||
fields: "nextPageToken,files(id,name,size,videoMediaMetadata,mimeType,fileExtension,thumbnailLink,iconLink)",
|
orderBy: "createdTime desc",
|
||||||
|
fields: "nextPageToken,incompleteSearch,files(id,name,size,videoMediaMetadata,mimeType,fileExtension,thumbnailLink,iconLink)",
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchUrl = new URL(API_ENDPOINTS.DRIVE_FETCH_FILES);
|
const fetchUrl = new URL(API_ENDPOINTS.DRIVE_FETCH_FILES);
|
||||||
|
|||||||
Reference in New Issue
Block a user