Skip to content

Latest commit

 

History

History
245 lines (194 loc) · 12 KB

File metadata and controls

245 lines (194 loc) · 12 KB

Development

Search functionality

Search files in current directory

Ongoing Transfers

View ongoing transfers in a table

Output of mega-transfer --help:

Usage: transfers [-c TAG|-a] | [-r TAG|-a]  | [-p TAG|-a] [--only-downloads | --only-uploads] [SHOWOPTIONS]
List or operate with transfers

If executed without option it will list the first 10 tranfers
Options:
 -c (TAG|-a)	Cancel transfer with TAG (or all with -a)
 -p (TAG|-a)	Pause transfer with TAG (or all with -a)
 -r (TAG|-a)	Resume transfer with TAG (or all with -a)
 --only-uploads	Show/Operate only upload transfers
 --only-downloads	Show/Operate only download transfers

Show options:
 --summary	Prints summary of on going transfers
 --show-syncs	Show synchronization transfers
 --show-completed	Show completed transfers
 --only-completed	Show only completed download
 --limit=N	Show only first N transfers
 --path-display-size=N	Use at least N characters for displaying paths
 --col-separator=X	Uses the string "X" as column separator. Otherwise, spaces will be added between columns to align them.
 --output-cols=COLUMN_NAME_1,COLUMN_NAME2,...	Selects which columns to show and their order.

TYPE legend correspondence:
  ⇓ = 	Download transfer
  ⇑ = 	Upload transfer
  ⇵ = 	Sync transfer. The transfer is done in the context of a synchronization
  ⏫ = 	Backup transfer. The transfer is done in the context of a backup

Output of mega-transfers --limit=50 --col-separator='|' --path-display-size=80:

TYPE|TAG|SOURCEPATH|DESTINYPATH|PROGRESS|STATE
⇓|1415|/newfolder/sync.org|/home/aayush/downloads/newfolder/sync.org|0.00% of   28.72 KB|ACTIVE
⇓|1416|/newfolder/redo/rename1/feral.org|/home/aayush/downloads/newfolder/redo/rename1/feral.org|0.00% of    2.37 KB|ACTIVE
⇓|1417|/newfolder/coverletters/aerc/binds.conf|/home/aayush/downloads/newfolder/coverletters/aerc/binds.conf|0.00% of    4.19 KB|ACTIVE

Select transfers and perform actions on them

  • Be able to select transfers and then cancel them, pause them, etc.

File Previews

Relevant commands include:

cat :: Prints content of a file, DO NOT USE THIS ON A MEDIA FILE thumbnail :: Will download thumbnail but it looks rubbish, prefer `preview` instead mediainfo :: Prints out information about media preview :: Downloads preview snapshot

Preview mediainfo of a file

View contents of text files using mega-cat

Previewing a directory gives a summary of its contents

The summary will include:

  • Number of files stored in there.
  • Size of directory.

Media previewing

Download the preview using mega-preview and then then open it using gallery software on the machine

Display how many files are in a folder

Cutting files

  • Instead of the user selecting files and then navigating to a directory to move

them, we should enter ‘cut’ mode after pressing some keybinding.

Copying files

Functional Outline

  • User selects file(s)
  • Presses some keybinding, e.g. ‘y’
  • Enters ‘copy’ mode
  • User navigates into different directory and then can press ‘p’ to paste file there.

Account information summary screen

  • Display detailed directory/account usage (total storage usage, account details, etc).

Handle console resizing events

We need to adjust the width of the ‘Name’ column as the console resizes

We can use: @on("<widget selector">, events.Resize)

Reference implementation:

def on_resize(self, event: events.Resize) -> None:
    console_size: Size = event.size
    aspect_ratio = (console_size.width / 2) / console_size.height
    if aspect_ratio < 1:
        self.layout = "v"
    else:
        self.layout = "h"
    self.log(f"Aspect ratio: {aspect_ratio}, layout: {self.layout}")
    try:
        self.query_one(".content").set_classes(f"content {self.layout}")
    except:  # noqa
        pass
    if self.is_testing:
        self.query_one(".version").update(
            "Layout: " + self.layout + " " + str(aspect_ratio)
        )

Caching

User configuration file

Note

Bugs with mega-cmd

Small spelling mistake in the output of mega-help --paths:

MEGAcmd will allow you to enter local and remote paths.
- REMOTE paths are case-sensitive, and use '/' as path separator.
  The root folder in your cloud will be `/`.
  There are other possible root folders (Rubbish Bin, Inbox & in-shares).
     For further info on root folders, see "mount --help"
- LOCAL paths are system dependant.
  In Windows, you will be able to use both '\' and '/' as separator.

To refer to paths that include spaces, you will need to either surround the path between quotes "",
 or scape the space with '\ '.
----^^^^^
----Spelling mistake here!
....

Mega Commands

You can get a verbose listing of all commands and their descriptions by executing:

mega-help -ff

All Commands

attr remotepath [–force-non-officialficial] [-s attribute value|-d attribute [–print-only-value]: Lists/updates node attributes. backup (localpath remotepath –period=”PERIODSTRING” –num-backups=N | [-lhda] [TAG|localpath] [–period=”PERIODSTRING”] [–num-backups=N]) [–time-format=FORMAT]: Controls backups cancel: Cancels your MEGA account cat remotepath1 remotepath2 …: Prints the contents of remote files cd [remotepath]: Changes the current remote folder clear: Clear screen confirm link email password: Confirm an account using the link provided after the “signup” process. confirmcancel link password: Confirms the cancellation of your MEGA account cp [–use-pcre] srcremotepath [srcremotepath2 srcremotepath3 ..] dstremotepath|dstemail:: Copies files/folders into a new location (all remotes) debug: Enters debugging mode (HIGHLY VERBOSE) deleteversions [-f] (–all | remotepath1 remotepath2 …) [–use-pcre]: Deletes previous versions. df [-h]: Shows storage info du [-h] [–versions] [remotepath remotepath2 remotepath3 … ] [–use-pcre]: Prints size used by files/folders errorcode number: Translate error code into string exclude [(-a|-d) pattern1 pattern2 pattern3]: Manages default exclusion rules in syncs. exit [–only-shell]: Quits MEGAcmd export [-d|-a [–writable] [–mega-hosted] [–password=PASSWORD] [–expire=TIMEDELAY] [-f]] [remotepath] [–use-pcre] [–time-format=FORMAT]: Prints/Modifies the status of current exports find [remotepath] [-l] [–pattern=PATTERN] [–type=d|f] [–mtime=TIMECONSTRAIN] [–size=SIZECONSTRAIN] [–use-pcre] [–time-format=FORMAT] [–show-handles|–print-only-handles]: Find nodes matching a pattern ftp [-d ( –all | remotepath ) ] [ remotepath [–port=PORT] [–data-ports=BEGIN-END] [–public] [–tls –certificate=/path/to/certificate.pem –key=/path/to/certificate.key]] [–use-pcre]: Configures a FTP server to serve a location in MEGA fuse-add [–name=name] [–disabled] [–transient] [–read-only] localPath remotePath: Creates a new FUSE mount. fuse-config [–name=name] [–enable-at-startup=yes|no] [–persistent=yes|no] [–read-only=yes|no] (name|localPath): Modifies the specified FUSE mount configuration. fuse-disable [–temporarily] (name|localPath): Disables a specified FUSE mount. fuse-enable [–temporarily] (name|localPath): Enables a specified FUSE mount. fuse-remove (name|localPath): Deletes a specified FUSE mount. fuse-show [–only-enabled] [–disable-path-collapse] [[–limit=rowcount] | [name|localPath]]: Displays the list of FUSE mounts and their information. If a name or local path provided, displays information of that mount instead. get [-m] [-q] [–ignore-quota-warn] [–use-pcre] [–password=PASSWORD] exportedlink|remotepath [localpath]: Downloads a remote file/folder or a public link graphics [on|off]: Shows if special features related to images and videos are enabled. help [-f|-ff|–non-interactive|–upgrade|–paths] [–show-all-options]: Prints list of commands https [on|off]: Shows if HTTPS is used for transfers. Use “https on” to enable it. import exportedlink [–password=PASSWORD] [remotepath]: Imports the contents of a remote link into user’s cloud invite [-d|-r] dstemail [–message=”MESSAGE”]: Invites a contact / deletes an invitation ipc email|handle -a|-d|-i: Manages contact incoming invitations. killsession [-a | sessionid1 sessionid2 … ]: Kills a session of current user. lcd [localpath]: Changes the current local folder for the interactive console log [-sc] level: Prints/Modifies the log level login [–auth-code=XXXX] email password | exportedfolderurl#key [–auth-key=XXXX] [–resume] | passwordprotectedlink [–password=PASSWORD] | session: Logs into a MEGA account, folder link or a previous session. You can only log into one entity at a time. logout [–keep-session]: Logs out lpwd: Prints the current local folder for the interactive console ls [-halRr] [–show-handles] [–tree] [–versions] [remotepath] [–use-pcre] [–show-creation-time] [–time-format=FORMAT]: Lists files in a remote path masterkey pathtosave: Shows your master key. mediainfo remotepath1 remotepath2 …: Prints media info of remote files mkdir [-p] remotepath: Creates a directory or a directories hierarchy mount: Lists all the root nodes mv srcremotepath [–use-pcre] [srcremotepath2 srcremotepath3 ..] dstremotepath: Moves file(s)/folder(s) into a new location (all remotes) passwd [-f] [–auth-code=XXXX] newpassword: Modifies user password permissions [(–files|–folders) [-s XXX]]: Shows/Establish default permissions for files and folders created by MEGAcmd. preview [-s] remotepath localpath: To download/upload the preview of a file. proxy [URL|–auto|–none] [–username=USERNAME –password=PASSWORD]: Show or sets proxy configuration psa [–discard]: Shows the next available Public Service Announcement (PSA) put [-c] [-q] [–ignore-quota-warn] localfile [localfile2 localfile3 …] [dstremotepath]: Uploads files/folders to a remote folder pwd: Prints the current remote folder quit [–only-shell]: Quits MEGAcmd reload: Forces a reload of the remote files of the user rm [-r] [-f] [–use-pcre] remotepath: Deletes a remote file/folder session: Prints (secret) session ID share [-p] [-d|-a –with=user@email.com [–level=LEVEL]] [remotepath] [–use-pcre] [–time-format=FORMAT]: Prints/Modifies the status of current shares showpcr [–in | –out] [–time-format=FORMAT]: Shows incoming and outgoing contact requests. signup email password [–name=”Your Name”]: Register as user with a given email speedlimit [-u|-d|–upload-connections|–download-connections] [-h] [NEWLIMIT]: Displays/modifies upload/download rate limits: either speed or max connections sync [localpath dstremotepath| [-dpe] [ID|localpath]: Controls synchronizations. sync-config [–delayed-uploads-wait-seconds | –delayed-uploads-max-attempts]: Controls sync configuration. sync-ignore [–show|[–add|–add-exclusion|–remove|–remove-exclusion] filter1 filter2 …] (ID|localpath|DEFAULT): Manages ignore filters for syncs sync-issues [[–detail (ID|–all)] [–limit=rowcount] [–disable-path-collapse]] | [–enable-warning|–disable-warning]: Show all issues with current syncs thumbnail [-s] remotepath localpath: To download/upload the thumbnail of a file. transfers [-c TAG|-a] | [-r TAG|-a] | [-p TAG|-a] [–only-downloads | –only-uploads] [SHOWOPTIONS]: List or operate with transfers tree [remotepath]: Lists files in a remote path in a nested tree decorated output userattr [-s attribute value|attribute|–list] [–user=user@email]: Lists/updates user attributes users [-s] [-h] [-n] [-d contact@email] [–time-format=FORMAT] [–verify|–unverify contact@email.com] [–help-verify [contact@email.com]]: List contacts version [-l][-c]: Prints MEGAcmd versioning and extra info webdav [-d (–all | remotepath ) ] [ remotepath [–port=PORT] [–public] [–tls –certificate=/path/to/certificate.pem –key=/path/to/certificate.key]] [–use-pcre]: Configures a WEBDAV server to serve a location in MEGA whoami [-l]: Prints info of the user