@@ -40,13 +40,13 @@ func main() {
4040
4141 optionVideoQuality := doDownload .Selector ("q" , "video-quality" , []string {"144" , "240" , "360" , "480" , "720" , "1080" , "1440" , "2160" }, & argparse.Options {
4242 Required : false ,
43- Help : "Quality of the video" ,
43+ Help : "Quality of the video, also applies only to youtube downloads " ,
4444 Default : "1080" ,
4545 })
4646
4747 optionAudioFormat := doDownload .Selector ("f" , "audio-format" , []string {"opus" , "ogg" , "wav" , "mp3" , "best" }, & argparse.Options {
4848 Required : false ,
49- Help : "Audio format/codec to be used. Using the default the audio won 't be re-encoded " ,
49+ Help : "Audio format/codec to be used. \" best \" doesn 't re-encodes the audio " ,
5050 Default : "best" ,
5151 })
5252
@@ -58,19 +58,19 @@ func main() {
5858
5959 optionAudioOnly := doDownload .Flag ("a" , "no-video" , & argparse.Options {
6060 Required : false ,
61- Help : "Extract audio only " ,
61+ Help : "Downloads only the audio, and removes the video " ,
6262 Default : false ,
6363 })
6464
65- optionVimeoDash := doDownload .Flag ("V " , "vimeo-dash " , & argparse.Options {
65+ optionTikTokH265 := doDownload .Flag ("T " , "tiktok-h265 " , & argparse.Options {
6666 Required : false ,
67- Help : "Downloads Vimeo videos using dash instead of progressive " ,
67+ Help : "Downloads TikTok videos using h265 codec " ,
6868 Default : false ,
6969 })
7070
7171 optionFullTikTokAudio := doDownload .Flag ("t" , "full-tiktok-audio" , & argparse.Options {
7272 Required : false ,
73- Help : "Enables download of original sound used in a tiktok video" ,
73+ Help : "Download the original sound used in a tiktok video" ,
7474 Default : false ,
7575 })
7676
@@ -94,21 +94,28 @@ func main() {
9494
9595 optionConvertTwitterGif := doDownload .Flag ("g" , "gif" , & argparse.Options {
9696 Required : false ,
97- Help : "Disables conversion of twitter gifs to a .gif file " ,
97+ Help : "Convert twitter gifs to .gif" ,
9898 Default : true ,
9999 })
100100
101- var outputJson , jsonOutput = doDownload .Flag ("j" , "json" , & argparse.Options {Required : false , Help : "Output to stdout as json" }), getCobaltInstances .Flag ("j" , "json" , & argparse.Options {Required : false , Help : "Output to stdout as json" })
101+ var outputJson , jsonOutput = doDownload .Flag ("j" , "json" , & argparse.Options {
102+ Required : false ,
103+ Help : "Output to stdout as json" ,
104+ }),
105+ getCobaltInstances .Flag ("j" , "json" , & argparse.Options {
106+ Required : false ,
107+ Help : "Output to stdout as json" ,
108+ })
102109
103110 commandStatus := doDownload .Flag ("s" , "status" , & argparse.Options {
104111 Required : false ,
105- Help : "Will only check status of the select cobalt server, print and exit . All other options will be ignored, except -j" ,
112+ Help : "Check status of the selected cobalt server, prints and exits . All other options will be ignored, except -j | --json " ,
106113 Default : false ,
107114 })
108115
109116 customCobaltApi := doDownload .String ("i" , "api" , & argparse.Options {
110117 Required : false ,
111- Help : "Change the cobalt api endpoint to be used. See others instances in https://instances.hyper.lol" ,
118+ Help : "Change the cobalt api url used. See others instances in https://instances.hyper.lol" ,
112119 Default : gobalt .CobaltApi ,
113120 })
114121
@@ -120,22 +127,30 @@ func main() {
120127
121128 openInBrowser := doDownload .Flag ("b" , "browser" , & argparse.Options {
122129 Required : false ,
123- Help : "Opens the response link in default browser, if successful " ,
130+ Help : "Downloads the requested media in your browser" ,
124131 Default : false ,
125132 })
126133
127134 err := flagParser .Parse (os .Args )
128135 if err != nil && errors .Is (err , flagParser .Parse (os .Args )) {
129- panic (fmt .Errorf ("expected sub-command '%v' or '%v'" , doDownload .GetName (), getCobaltInstances .GetName ()))
136+ fmt .Print (`[2;41m[0m[2;41m[0m[0;2mUsage: cobalt <command>
137+ Commands:
138+ download - Use this command to download something.
139+ instances [0m- Use this command to view stats about other cobalt instances.
140+ [2;31mError: [1;31mNo command was provided. Please specify a command.[0m[2;31m[0m
141+ ` )
142+ return
130143 }
131144
132145 if getCobaltInstances .Happened () {
133146 err := getInstances (* jsonOutput )
134147 if err != nil {
135148 if * jsonOutput {
136- panic (errorJson (err ))
149+ fmt .Println (errorJson (err ))
150+ return
137151 }
138- panic (err )
152+ fmt .Println (err )
153+ return
139154 }
140155 return
141156 }
@@ -144,9 +159,11 @@ func main() {
144159 err := checkStatus (* customCobaltApi , * outputJson )
145160 if err != nil {
146161 if * jsonOutput {
147- panic (errorJson (err ))
162+ fmt .Println (errorJson (err ))
163+ return
148164 }
149- panic (err )
165+ fmt .Println (err )
166+ return
150167 }
151168 return
152169 }
@@ -159,9 +176,11 @@ func main() {
159176 validateLanguage := iso6391 .ValidCode (strings .ToLower (* customLanguage ))
160177 if ! validateLanguage {
161178 if * outputJson {
162- panic (fmt .Errorf ("invalid language code, check if the language code is following ISO 639-1 format" ))
179+ fmt .Println (fmt .Errorf ("invalid language code, check if the language code is following ISO 639-1 format" ))
180+ return
163181 }
164- panic ("Invalid language code: " + * customLanguage )
182+ fmt .Println ("Invalid language code: " + * customLanguage )
183+ return
165184 }
166185
167186 newSettings := gobalt .CreateDefaultSettings ()
@@ -208,24 +227,28 @@ func main() {
208227 newSettings .DisableVideoMetadata = * optionDisableMetadata
209228 newSettings .DubbedYoutubeAudio = * optionDubAudio
210229 newSettings .FullTikTokAudio = * optionFullTikTokAudio
211- newSettings .UseVimeoDash = * optionVimeoDash
230+ newSettings .TikTokH265 = * optionTikTokH265
212231 newSettings .Url = * URL
213232 newSettings .VideoOnly = * optionVideoOnly
214233 quality , err := strconv .Atoi (* optionVideoQuality )
215234 if err != nil {
216235 if * outputJson {
217- panic (fmt .Errorf ("expected int on flag -q, got something else: %s" , * optionVideoQuality ))
236+ fmt .Println (fmt .Errorf ("expected int on flag -q, got something else: %s" , * optionVideoQuality ))
237+ return
218238 }
219- panic (fmt .Errorf ("expected int on flag -q, got something else: %s\n Error details: %e" , * optionVideoQuality , err ))
239+ fmt .Println (fmt .Errorf ("expected int on flag -q, got something else: %s\n Error details: %e" , * optionVideoQuality , err ))
240+ return
220241 }
221242 newSettings .VideoQuality = quality
222243
223244 cobaltRequest , err := gobalt .Run (newSettings )
224245 if err != nil {
225246 if * outputJson {
226- panic (errorJson (err ))
247+ fmt .Println (errorJson (err ))
248+ return
227249 }
228- panic (err )
250+ fmt .Println (err )
251+ return
229252 }
230253
231254 if * outputJson {
@@ -257,7 +280,7 @@ func main() {
257280 for _ , urls := range cobaltRequest .URLs {
258281 err := openInDefaultBrowser (urls )
259282 if err != nil {
260- fmt .Println ("Failed to open URL on default browser:" , err )
283+ fmt .Printf ("Failed to open URL on default browser: %v \n Will print instead. " , err )
261284 }
262285 }
263286 }
@@ -335,9 +358,9 @@ func getInstances(args bool) error {
335358
336359 instancesTable := table .NewWriter ()
337360 instancesTable .SetOutputMirror (os .Stdout )
338- instancesTable .AppendHeader (table.Row {"name" , "api url (frontend)" , "api online (frontend) " , "cors" , "since" , "version (branch, commit)" })
361+ instancesTable .AppendHeader (table.Row {"name" , "api url (frontend)" , "API/Front online" , "cors" , "since" , "version (branch, commit)" })
339362 for _ , v := range instances {
340- instancesTable .AppendRow (table.Row {v .Name , fmt .Sprintf ("%v (front: %v)" , v .URL , v .FrontendUrl ), fmt .Sprintf ("%v (front: %v) " , v .ApiOnline , v .FrontEndOnline ), v .Cors , utilHumanTime (v .StartTime ), fmt .Sprintf ("%v (%v, %v)" , v .Version , v .Branch , v .Commit )})
363+ instancesTable .AppendRow (table.Row {v .Name , fmt .Sprintf ("%v (front: %v)" , v .URL , v .FrontendUrl ), fmt .Sprintf ("%v" , resolveApiFrontOnline ( v .ApiOnline , v .FrontEndOnline )), resolveCors ( v .Cors ) , utilHumanTime (v .StartTime ), fmt .Sprintf ("%v (%v, %v)" , v .Version , v .Branch , v .Commit )})
341364 }
342365 instancesTable .SetStyle (table .StyleRounded )
343366 instancesTable .Render ()
@@ -349,3 +372,21 @@ func utilHumanTime(unixTime int64) string {
349372 since := time .UnixMilli (unixTime )
350373 return timediff .TimeDiff (since )
351374}
375+
376+ func resolveApiFrontOnline (api , front bool ) string {
377+ a , f := "no" , "no"
378+ if api {
379+ a = "yes"
380+ }
381+ if front {
382+ f = "yes"
383+ }
384+ return fmt .Sprintf ("%s/%s" , a , f )
385+ }
386+
387+ func resolveCors (cors int ) string {
388+ if cors == 1 {
389+ return "on"
390+ }
391+ return "off"
392+ }
0 commit comments