google-services-mcp 0.1.0-beta.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +303 -0
- package/dist/auth/config.d.ts +43 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +112 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/manager.d.ts +50 -0
- package/dist/auth/manager.d.ts.map +1 -0
- package/dist/auth/manager.js +141 -0
- package/dist/auth/manager.js.map +1 -0
- package/dist/auth/oauth.d.ts +57 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +223 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/store.d.ts +18 -0
- package/dist/auth/store.d.ts.map +1 -0
- package/dist/auth/store.js +50 -0
- package/dist/auth/store.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +137 -0
- package/dist/cli.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +21 -0
- package/dist/main.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +28 -0
- package/dist/server.js.map +1 -0
- package/dist/services/calendar.d.ts +77 -0
- package/dist/services/calendar.d.ts.map +1 -0
- package/dist/services/calendar.js +141 -0
- package/dist/services/calendar.js.map +1 -0
- package/dist/services/contacts-tasks.d.ts +61 -0
- package/dist/services/contacts-tasks.d.ts.map +1 -0
- package/dist/services/contacts-tasks.js +106 -0
- package/dist/services/contacts-tasks.js.map +1 -0
- package/dist/services/docs.d.ts +32 -0
- package/dist/services/docs.d.ts.map +1 -0
- package/dist/services/docs.js +58 -0
- package/dist/services/docs.js.map +1 -0
- package/dist/services/drive.d.ts +72 -0
- package/dist/services/drive.d.ts.map +1 -0
- package/dist/services/drive.js +131 -0
- package/dist/services/drive.js.map +1 -0
- package/dist/services/forms.d.ts +30 -0
- package/dist/services/forms.d.ts.map +1 -0
- package/dist/services/forms.js +54 -0
- package/dist/services/forms.js.map +1 -0
- package/dist/services/gmail.d.ts +159 -0
- package/dist/services/gmail.d.ts.map +1 -0
- package/dist/services/gmail.js +499 -0
- package/dist/services/gmail.js.map +1 -0
- package/dist/services/sheets.d.ts +44 -0
- package/dist/services/sheets.d.ts.map +1 -0
- package/dist/services/sheets.js +53 -0
- package/dist/services/sheets.js.map +1 -0
- package/dist/services/slides.d.ts +30 -0
- package/dist/services/slides.d.ts.map +1 -0
- package/dist/services/slides.js +52 -0
- package/dist/services/slides.js.map +1 -0
- package/dist/services/youtube.d.ts +45 -0
- package/dist/services/youtube.d.ts.map +1 -0
- package/dist/services/youtube.js +97 -0
- package/dist/services/youtube.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +953 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/util/result.d.ts +29 -0
- package/dist/util/result.d.ts.map +1 -0
- package/dist/util/result.js +21 -0
- package/dist/util/result.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Auth, slides_v1 } from "googleapis";
|
|
2
|
+
export interface GetPresentationArgs {
|
|
3
|
+
presentationId: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ReplaceAllTextArgs {
|
|
6
|
+
presentationId: string;
|
|
7
|
+
find: string;
|
|
8
|
+
replace: string;
|
|
9
|
+
matchCase?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function getPresentation(client: Auth.OAuth2Client, { presentationId }: GetPresentationArgs): Promise<slides_v1.Schema$Presentation>;
|
|
12
|
+
export declare function getSlidePage(client: Auth.OAuth2Client, { presentationId, pageObjectId }: GetPresentationArgs & {
|
|
13
|
+
pageObjectId: string;
|
|
14
|
+
}): Promise<slides_v1.Schema$Page>;
|
|
15
|
+
export declare function createPresentation(client: Auth.OAuth2Client, { title }: {
|
|
16
|
+
title: string;
|
|
17
|
+
}): Promise<slides_v1.Schema$Presentation>;
|
|
18
|
+
export declare function replaceAllText(client: Auth.OAuth2Client, { presentationId, find, replace, matchCase }: ReplaceAllTextArgs): Promise<slides_v1.Schema$ReplaceAllTextResponse>;
|
|
19
|
+
export declare function createSlide(client: Auth.OAuth2Client, { presentationId }: GetPresentationArgs): Promise<slides_v1.Schema$CreateSlideResponse>;
|
|
20
|
+
export declare function deleteSlide(client: Auth.OAuth2Client, { presentationId, slideObjectId }: GetPresentationArgs & {
|
|
21
|
+
slideObjectId: string;
|
|
22
|
+
}): Promise<{
|
|
23
|
+
deleted: boolean;
|
|
24
|
+
}>;
|
|
25
|
+
export type BatchUpdateArgs = {
|
|
26
|
+
presentationId: string;
|
|
27
|
+
requests: slides_v1.Schema$Request[];
|
|
28
|
+
};
|
|
29
|
+
export declare function batchUpdatePresentation(client: Auth.OAuth2Client, { presentationId, requests }: BatchUpdateArgs): Promise<slides_v1.Schema$BatchUpdatePresentationResponse>;
|
|
30
|
+
//# sourceMappingURL=slides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slides.d.ts","sourceRoot":"","sources":["../../src/services/slides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,cAAc,EAAE,EAAE,mBAAmB,GACtC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAIxC;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,mBAAmB,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAC/E,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAIhC;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAIxC;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,SAAgB,EAAE,EAAE,kBAAkB,GACtE,OAAO,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAWlD;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,cAAc,EAAE,EAAE,mBAAmB,GACtC,OAAO,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAS/C;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,mBAAmB,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACjF,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAO/B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC;CACtC,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,eAAe,GAC5C,OAAO,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAI3D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { google } from "googleapis";
|
|
2
|
+
export async function getPresentation(client, { presentationId }) {
|
|
3
|
+
const slides = google.slides({ version: "v1", auth: client });
|
|
4
|
+
const res = await slides.presentations.get({ presentationId });
|
|
5
|
+
return res.data;
|
|
6
|
+
}
|
|
7
|
+
export async function getSlidePage(client, { presentationId, pageObjectId }) {
|
|
8
|
+
const slides = google.slides({ version: "v1", auth: client });
|
|
9
|
+
const res = await slides.presentations.pages.get({ presentationId, pageObjectId });
|
|
10
|
+
return res.data;
|
|
11
|
+
}
|
|
12
|
+
export async function createPresentation(client, { title }) {
|
|
13
|
+
const slides = google.slides({ version: "v1", auth: client });
|
|
14
|
+
const res = await slides.presentations.create({ requestBody: { title } });
|
|
15
|
+
return res.data;
|
|
16
|
+
}
|
|
17
|
+
export async function replaceAllText(client, { presentationId, find, replace, matchCase = true }) {
|
|
18
|
+
const slides = google.slides({ version: "v1", auth: client });
|
|
19
|
+
const res = await slides.presentations.batchUpdate({
|
|
20
|
+
presentationId,
|
|
21
|
+
requestBody: {
|
|
22
|
+
requests: [
|
|
23
|
+
{ replaceAllText: { containsText: { text: find, matchCase }, replaceText: replace } },
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
return res.data.replies?.[0]?.replaceAllText ?? { occurrencesChanged: 0 };
|
|
28
|
+
}
|
|
29
|
+
export async function createSlide(client, { presentationId }) {
|
|
30
|
+
const slides = google.slides({ version: "v1", auth: client });
|
|
31
|
+
const res = await slides.presentations.batchUpdate({
|
|
32
|
+
presentationId,
|
|
33
|
+
requestBody: {
|
|
34
|
+
requests: [{ createSlide: { slideLayoutReference: { predefinedLayout: "BLANK" } } }],
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
return res.data.replies?.[0]?.createSlide ?? { objectId: undefined };
|
|
38
|
+
}
|
|
39
|
+
export async function deleteSlide(client, { presentationId, slideObjectId }) {
|
|
40
|
+
const slides = google.slides({ version: "v1", auth: client });
|
|
41
|
+
await slides.presentations.batchUpdate({
|
|
42
|
+
presentationId,
|
|
43
|
+
requestBody: { requests: [{ deleteObject: { objectId: slideObjectId } }] },
|
|
44
|
+
});
|
|
45
|
+
return { deleted: true };
|
|
46
|
+
}
|
|
47
|
+
export async function batchUpdatePresentation(client, { presentationId, requests }) {
|
|
48
|
+
const slides = google.slides({ version: "v1", auth: client });
|
|
49
|
+
const res = await slides.presentations.batchUpdate({ presentationId, requestBody: { requests } });
|
|
50
|
+
return res.data;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=slides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slides.js","sourceRoot":"","sources":["../../src/services/slides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Auth, youtube_v3 } from "googleapis";
|
|
2
|
+
export interface SearchVideosArgs {
|
|
3
|
+
query: string;
|
|
4
|
+
maxResults?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface GetVideoArgs {
|
|
7
|
+
videoId: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function searchVideos(client: Auth.OAuth2Client, { query, maxResults }: SearchVideosArgs): Promise<Array<{
|
|
10
|
+
id: string;
|
|
11
|
+
type: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
channelTitle?: string;
|
|
14
|
+
}>>;
|
|
15
|
+
export declare function getVideo(client: Auth.OAuth2Client, { videoId }: GetVideoArgs): Promise<youtube_v3.Schema$Video | null>;
|
|
16
|
+
export declare function getMyVideos(client: Auth.OAuth2Client, { maxResults }: {
|
|
17
|
+
maxResults?: number;
|
|
18
|
+
}): Promise<{
|
|
19
|
+
uploadsPlaylistId: string | null;
|
|
20
|
+
videos: youtube_v3.Schema$PlaylistItem[];
|
|
21
|
+
}>;
|
|
22
|
+
export declare function listPlaylists(client: Auth.OAuth2Client, { maxResults }: {
|
|
23
|
+
maxResults?: number;
|
|
24
|
+
}): Promise<youtube_v3.Schema$Playlist[]>;
|
|
25
|
+
export declare function createPlaylist(client: Auth.OAuth2Client, { title, description, privacyStatus, }: {
|
|
26
|
+
title: string;
|
|
27
|
+
description?: string;
|
|
28
|
+
privacyStatus?: string;
|
|
29
|
+
}): Promise<youtube_v3.Schema$Playlist>;
|
|
30
|
+
export declare function deletePlaylist(client: Auth.OAuth2Client, { playlistId }: {
|
|
31
|
+
playlistId: string;
|
|
32
|
+
}): Promise<{
|
|
33
|
+
deleted: boolean;
|
|
34
|
+
}>;
|
|
35
|
+
export declare function addVideoToPlaylist(client: Auth.OAuth2Client, { playlistId, videoId }: {
|
|
36
|
+
playlistId: string;
|
|
37
|
+
videoId: string;
|
|
38
|
+
}): Promise<youtube_v3.Schema$PlaylistItem>;
|
|
39
|
+
export declare function listSubscriptions(client: Auth.OAuth2Client, { maxResults }: {
|
|
40
|
+
maxResults?: number;
|
|
41
|
+
}): Promise<Array<{
|
|
42
|
+
title?: string;
|
|
43
|
+
channelId?: string;
|
|
44
|
+
}>>;
|
|
45
|
+
//# sourceMappingURL=youtube.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"youtube.d.ts","sourceRoot":"","sources":["../../src/services/youtube.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,KAAK,EAAE,UAAe,EAAE,EAAE,gBAAgB,GAC3C,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAoBrF;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,OAAO,EAAE,EAAE,YAAY,GACxB,OAAO,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,CAOzC;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAe,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC;IAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,mBAAmB,EAAE,CAAA;CAAE,CAAC,CAoBzF;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAe,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAQvC;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EACE,KAAK,EACL,WAAW,EACX,aAAkC,GACnC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAUrC;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAI/B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/D,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CASzC;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAe,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAWxD"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { google } from "googleapis";
|
|
2
|
+
export async function searchVideos(client, { query, maxResults = 10 }) {
|
|
3
|
+
const yt = google.youtube({ version: "v3", auth: client });
|
|
4
|
+
const res = await yt.search.list({
|
|
5
|
+
part: ["snippet"],
|
|
6
|
+
q: query,
|
|
7
|
+
type: ["video"],
|
|
8
|
+
maxResults,
|
|
9
|
+
});
|
|
10
|
+
return (res.data.items ?? []).map((item) => ({
|
|
11
|
+
id: item.id?.videoId ?? item.id?.channelId ?? item.id?.playlistId ?? "",
|
|
12
|
+
type: item.id?.videoId
|
|
13
|
+
? "video"
|
|
14
|
+
: item.id?.channelId
|
|
15
|
+
? "channel"
|
|
16
|
+
: item.id?.playlistId
|
|
17
|
+
? "playlist"
|
|
18
|
+
: "unknown",
|
|
19
|
+
title: item.snippet?.title ?? undefined,
|
|
20
|
+
channelTitle: item.snippet?.channelTitle ?? undefined,
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
export async function getVideo(client, { videoId }) {
|
|
24
|
+
const yt = google.youtube({ version: "v3", auth: client });
|
|
25
|
+
const res = await yt.videos.list({
|
|
26
|
+
part: ["snippet", "contentDetails", "statistics"],
|
|
27
|
+
id: [videoId],
|
|
28
|
+
});
|
|
29
|
+
return res.data.items?.[0] ?? null;
|
|
30
|
+
}
|
|
31
|
+
export async function getMyVideos(client, { maxResults = 25 }) {
|
|
32
|
+
// Find the uploads playlist for the signed-in channel, then list its items.
|
|
33
|
+
const yt = google.youtube({ version: "v3", auth: client });
|
|
34
|
+
const playlists = await yt.playlists.list({
|
|
35
|
+
part: ["snippet"],
|
|
36
|
+
mine: true,
|
|
37
|
+
maxResults: 50,
|
|
38
|
+
});
|
|
39
|
+
const uploadsPlaylist = (playlists.data.items ?? []).find((p) => p.id && p.snippet?.title === "Uploads");
|
|
40
|
+
if (!uploadsPlaylist?.id) {
|
|
41
|
+
return { videos: [], uploadsPlaylistId: null };
|
|
42
|
+
}
|
|
43
|
+
const items = await yt.playlistItems.list({
|
|
44
|
+
part: ["snippet", "contentDetails"],
|
|
45
|
+
playlistId: uploadsPlaylist.id,
|
|
46
|
+
maxResults,
|
|
47
|
+
});
|
|
48
|
+
return { uploadsPlaylistId: uploadsPlaylist.id, videos: items.data.items ?? [] };
|
|
49
|
+
}
|
|
50
|
+
export async function listPlaylists(client, { maxResults = 25 }) {
|
|
51
|
+
const yt = google.youtube({ version: "v3", auth: client });
|
|
52
|
+
const res = await yt.playlists.list({
|
|
53
|
+
part: ["snippet", "contentDetails"],
|
|
54
|
+
mine: true,
|
|
55
|
+
maxResults,
|
|
56
|
+
});
|
|
57
|
+
return res.data.items ?? [];
|
|
58
|
+
}
|
|
59
|
+
export async function createPlaylist(client, { title, description, privacyStatus = "private", }) {
|
|
60
|
+
const yt = google.youtube({ version: "v3", auth: client });
|
|
61
|
+
const res = await yt.playlists.insert({
|
|
62
|
+
part: ["snippet", "status"],
|
|
63
|
+
requestBody: {
|
|
64
|
+
snippet: { title, description },
|
|
65
|
+
status: { privacyStatus },
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
return res.data;
|
|
69
|
+
}
|
|
70
|
+
export async function deletePlaylist(client, { playlistId }) {
|
|
71
|
+
const yt = google.youtube({ version: "v3", auth: client });
|
|
72
|
+
await yt.playlists.delete({ id: playlistId });
|
|
73
|
+
return { deleted: true };
|
|
74
|
+
}
|
|
75
|
+
export async function addVideoToPlaylist(client, { playlistId, videoId }) {
|
|
76
|
+
const yt = google.youtube({ version: "v3", auth: client });
|
|
77
|
+
const res = await yt.playlistItems.insert({
|
|
78
|
+
part: ["snippet"],
|
|
79
|
+
requestBody: {
|
|
80
|
+
snippet: { playlistId, resourceId: { kind: "youtube#video", videoId } },
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
return res.data;
|
|
84
|
+
}
|
|
85
|
+
export async function listSubscriptions(client, { maxResults = 50 }) {
|
|
86
|
+
const yt = google.youtube({ version: "v3", auth: client });
|
|
87
|
+
const res = await yt.subscriptions.list({
|
|
88
|
+
part: ["snippet"],
|
|
89
|
+
mine: true,
|
|
90
|
+
maxResults,
|
|
91
|
+
});
|
|
92
|
+
return (res.data.items ?? []).map((item) => ({
|
|
93
|
+
title: item.snippet?.title ?? undefined,
|
|
94
|
+
channelId: item.snippet?.resourceId?.channelId ?? undefined,
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=youtube.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"youtube.js","sourceRoot":"","sources":["../../src/services/youtube.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0GzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA85CrD"}
|