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