PlanOpticon

planopticon / video_processor / sources / __init__.py
Source Blame History 62 lines
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}")

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button