|
0981a08…
|
noreply
|
1 |
"""Cloud, web, and notes source integrations for fetching content from remote sources.""" |
|
a6b6869…
|
leo
|
2 |
|
|
a6b6869…
|
leo
|
3 |
from video_processor.sources.base import BaseSource, SourceFile |
|
a6b6869…
|
leo
|
4 |
|
|
0981a08…
|
noreply
|
5 |
__all__ = [ |
|
0981a08…
|
noreply
|
6 |
"BaseSource", |
|
0981a08…
|
noreply
|
7 |
"SourceFile", |
|
0981a08…
|
noreply
|
8 |
"AppleNotesSource", |
|
0981a08…
|
noreply
|
9 |
"ArxivSource", |
|
0981a08…
|
noreply
|
10 |
"GitHubSource", |
|
0981a08…
|
noreply
|
11 |
"GoogleDriveSource", |
|
0981a08…
|
noreply
|
12 |
"GoogleKeepSource", |
|
0981a08…
|
noreply
|
13 |
"GWSSource", |
|
0981a08…
|
noreply
|
14 |
"HackerNewsSource", |
|
0981a08…
|
noreply
|
15 |
"LogseqSource", |
|
0981a08…
|
noreply
|
16 |
"M365Source", |
|
0981a08…
|
noreply
|
17 |
"MeetRecordingSource", |
|
0981a08…
|
noreply
|
18 |
"NotionSource", |
|
0981a08…
|
noreply
|
19 |
"ObsidianSource", |
|
0981a08…
|
noreply
|
20 |
"OneNoteSource", |
|
0981a08…
|
noreply
|
21 |
"PodcastSource", |
|
0981a08…
|
noreply
|
22 |
"TeamsRecordingSource", |
|
0981a08…
|
noreply
|
23 |
"RedditSource", |
|
0981a08…
|
noreply
|
24 |
"RSSSource", |
|
0981a08…
|
noreply
|
25 |
"TwitterSource", |
|
0981a08…
|
noreply
|
26 |
"WebSource", |
|
0981a08…
|
noreply
|
27 |
"YouTubeSource", |
|
0981a08…
|
noreply
|
28 |
"ZoomSource", |
|
0981a08…
|
noreply
|
29 |
] |
|
0981a08…
|
noreply
|
30 |
|
|
0981a08…
|
noreply
|
31 |
|
|
0981a08…
|
noreply
|
32 |
def __getattr__(name: str): |
|
0981a08…
|
noreply
|
33 |
"""Lazy imports to avoid pulling in optional dependencies at import time.""" |
|
0981a08…
|
noreply
|
34 |
_lazy_map = { |
|
0981a08…
|
noreply
|
35 |
"AppleNotesSource": "video_processor.sources.apple_notes_source", |
|
0981a08…
|
noreply
|
36 |
"ArxivSource": "video_processor.sources.arxiv_source", |
|
0981a08…
|
noreply
|
37 |
"GitHubSource": "video_processor.sources.github_source", |
|
0981a08…
|
noreply
|
38 |
"GoogleDriveSource": "video_processor.sources.google_drive", |
|
0981a08…
|
noreply
|
39 |
"GoogleKeepSource": "video_processor.sources.google_keep_source", |
|
0981a08…
|
noreply
|
40 |
"GWSSource": "video_processor.sources.gws_source", |
|
0981a08…
|
noreply
|
41 |
"HackerNewsSource": "video_processor.sources.hackernews_source", |
|
0981a08…
|
noreply
|
42 |
"LogseqSource": "video_processor.sources.logseq_source", |
|
0981a08…
|
noreply
|
43 |
"M365Source": "video_processor.sources.m365_source", |
|
0981a08…
|
noreply
|
44 |
"MeetRecordingSource": "video_processor.sources.meet_recording_source", |
|
0981a08…
|
noreply
|
45 |
"NotionSource": "video_processor.sources.notion_source", |
|
0981a08…
|
noreply
|
46 |
"ObsidianSource": "video_processor.sources.obsidian_source", |
|
0981a08…
|
noreply
|
47 |
"OneNoteSource": "video_processor.sources.onenote_source", |
|
0981a08…
|
noreply
|
48 |
"PodcastSource": "video_processor.sources.podcast_source", |
|
0981a08…
|
noreply
|
49 |
"TeamsRecordingSource": "video_processor.sources.teams_recording_source", |
|
0981a08…
|
noreply
|
50 |
"RedditSource": "video_processor.sources.reddit_source", |
|
0981a08…
|
noreply
|
51 |
"RSSSource": "video_processor.sources.rss_source", |
|
0981a08…
|
noreply
|
52 |
"TwitterSource": "video_processor.sources.twitter_source", |
|
0981a08…
|
noreply
|
53 |
"WebSource": "video_processor.sources.web_source", |
|
0981a08…
|
noreply
|
54 |
"YouTubeSource": "video_processor.sources.youtube_source", |
|
0981a08…
|
noreply
|
55 |
"ZoomSource": "video_processor.sources.zoom_source", |
|
0981a08…
|
noreply
|
56 |
} |
|
0981a08…
|
noreply
|
57 |
if name in _lazy_map: |
|
0981a08…
|
noreply
|
58 |
import importlib |
|
0981a08…
|
noreply
|
59 |
|
|
0981a08…
|
noreply
|
60 |
module = importlib.import_module(_lazy_map[name]) |
|
0981a08…
|
noreply
|
61 |
return getattr(module, name) |
|
0981a08…
|
noreply
|
62 |
raise AttributeError(f"module {__name__!r} has no attribute {name!r}") |