diff options
| author | s <[email protected]> | 2025-11-06 22:15:13 -0500 |
|---|---|---|
| committer | s <[email protected]> | 2025-11-06 22:15:13 -0500 |
| commit | eab6a1b6899413154f855abbd200ac775b22be75 (patch) | |
| tree | d2671b1609ff38f3f5c60944017ac063088aa162 /cmd | |
| parent | 27add8c96a7df242618e1ebcb8c7271661e21688 (diff) | |
| download | dborg-eab6a1b6899413154f855abbd200ac775b22be75.tar.gz dborg-eab6a1b6899413154f855abbd200ac775b22be75.zip | |
refactor: split x command into history and tweets subcommands with streaming support
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/x.go | 42 |
1 files changed, 39 insertions, 3 deletions
@@ -10,18 +10,34 @@ import ( ) var xCmd = &cobra.Command{ - Use: "x [username]", + Use: "x", + Short: "Twitter/X tools and searches", + Long: `Tools for searching Twitter/X username history and scraping tweets`, +} + +var xHistoryCmd = &cobra.Command{ + Use: "history [username]", Short: "Search Twitter/X username history", Long: `Search for Twitter/X username history and previous usernames`, Args: cobra.ExactArgs(1), - RunE: runXSearch, + RunE: runXHistorySearch, +} + +var xTweetsCmd = &cobra.Command{ + Use: "tweets [username]", + Short: "Scrape tweets by username (Free OSINT)", + Long: `Discovers tweet IDs from Internet Archive and fetches tweet content. Free and unauthenticated endpoint.`, + Args: cobra.ExactArgs(1), + RunE: runXTweetsSearch, } func init() { rootCmd.AddCommand(xCmd) + xCmd.AddCommand(xHistoryCmd) + xCmd.AddCommand(xTweetsCmd) } -func runXSearch(cmd *cobra.Command, args []string) error { +func runXHistorySearch(cmd *cobra.Command, args []string) error { apiKey, _ := cmd.Flags().GetString("api-key") cfg := config.New().WithAPIKey(apiKey) @@ -59,3 +75,23 @@ func runXSearch(cmd *cobra.Command, args []string) error { return nil } + +func runXTweetsSearch(cmd *cobra.Command, args []string) error { + cfg := config.New() + + c, err := client.New(cfg) + if err != nil { + return err + } + + err = c.FetchTweetsStream(args[0], func(result json.RawMessage) error { + fmt.Println(string(result)) + return nil + }) + + if err != nil { + return err + } + + return nil +} |
