Mafa is a command-line tool that helps people interact with online websites in a terminal(tty).

Related tags

Command-line mafa
Overview

Table of Contents

A Small Demo

(captured by LICEcap)

demo

Installation

Prerequisite

Mafa does not work alone, below are programs that it depends on:

  1. firefox (91 or later)

  2. curl (any version)

  3. tar (any version)

  4. gzip (any version)

Option 1: Cargo install (recommended)

This is recommended because by cargo install, you always get the latest stable version of Mafa.

If you have Cargo installed, then you can

cargo install mafa

# check installed version
mafa --version

Option 2: Build from source

# grab the source
git clone https://github.com/imichael2e2/mafa

# into source directory
cd mafa

# build
cargo build --release --features imode,twtl,gtrans

# check built version
./target/release/mafa --version

Option 3: Prebuilt binaries

Check releases.

Mafa is for me?

Mafa is for you if Mafa has whatever you can make use of.

However, Mafa is NOT for you if

  • You want to browse websites without a web browser. (Mafa needs Firefox)

  • You want to see every detail of a website. (Use your favorite web browser instead)

  • You plan to crawl a whole website and extract all its data. (A dedicated web crawler or data scraper does a better job)

What is Mafa

Mafa is a command-line tool that helps people interact with online websites in a terminal(tty). It accesses websites through modules. Modules are child programs that rely on WebDriver to do their job. Each module has a fixed destination website and has a specific job for that site. With modules, users can browse websites without interacting with web browsers directly. The supported
modules are listed below.

How Mafa works

Mafa leverages WebDriver to achieve its goals. More specifically, Mozilla's GeckoDriver is in use. With WebDriver, Mafa can act like a human, browsing websites naturally for its user.

Why Mafa

Usable & Convenient

Unlike other counterparts, Mafa strives to balance usability and convenience: Mafa will try its best to finish the task on its own or instruct users to open web browser directly if it cannot perfectly handle the situation(such as in cases where the website is equipped with CAPTCHA or requires user login). What Mafa tries to be is a browser companion, not a replacement.

Neutral

The underlying WebDriver backs by a nearly full-functional web browser. Overall, Mafa default not to subjectively strip any feature a website user or provider can take advantage of, just like on a normal full-functional web browser.

Therefore there is no reason for providers to particularly prevent Mafa from accessing their websites, which likely leads to a negative result for both sides.

It is noteworthy that Mafa does not wipe out the user identity by default, as a regular web browser does. It is essential for website providers because while many websites abuse user privacy, there are always ones collecting it for a good reason, such as Ecosia.

Stable & Long-lasting

One of Mafa's goals is to handle websites stably for a relatively long period. Modern web pages are famous for their dynamic characteristic. However, Mafa can handle those dynamic and unpredictable web pages as effortlessly as the static ones.

About Mafa

Mafa is initially developed for (M)aking (A)PI (F)ree (A)gain. Here "free" is the same word defined in What is Free Software?, i.e., as in "free speech", not as in"free beer". Some websites provide their data publicly but do not publish corresponding APIs to access it, while others offer their data publicly in their carefully designed websites and APIs but with even more carefully designed pricing. Those websites are blocking users from accessing their public data by either not providing APIs or providing ones with non-trivial barriers, examples of disrespecting users' freedom.

Mafa is the one who fights against them and protects web users' freedom. Because Mafa believes that as long as the data is publicly accessible for all users without discrimination, the APIs to access it should be as well.

Supported modules

  • IMODE: Interactive mode.

  • TWTL: Twitter users' timeline.

  • GTRANS: Google translation service.

Contributing

Mafa is still in early development, any contribution is welcomed!

License

Mafa is proudly licensed under GPLv3.

See LICENSE-GPL for details.

You might also like...
Tiny CLI tool that helps to visualize iCal file content in the terminal.
Tiny CLI tool that helps to visualize iCal file content in the terminal.

Calio Calio is a tiny CLI tool that helps to visualize iCal file in the terminal. Installation You can either install it via cargo or download the bin

Zellij is a workspace aimed at developers, ops-oriented people and anyone who loves the terminal
Zellij is a workspace aimed at developers, ops-oriented people and anyone who loves the terminal

Zellij is a workspace aimed at developers, ops-oriented people and anyone who loves the terminal. At its core, it is a terminal multiplexer (similar to tmux and screen), but this is merely its infrastructure layer.

💻 Interact with Hop in your terminal

Hop CLI The Hop CLI allows you to interface with Hop services through your command line. It can be used as a replacement for the Console. Installation

CLI tool for generating a summary of recent github activity for people who are incredibly forgetful

CLI tool for generating a summary of recent github activity for people who are incredibly forgetful but still need to give weekly status updates to their boss without getting depressed and convincing themselves they did nothing because they can't remember what they did!

Pink is a command-line tool inspired by the Unix man command.

Pink is a command-line tool inspired by the Unix man command. It displays custom-formatted text pages in the terminal using a subset of HTML-like tags.

A Rust CLI tool that helps you enforce Git policies through Git hooks both server and client side

GitPolicyEnforcer This is a command line utility written in Rust, that helps you utilize Git hooks, to enforce various policies. It currently supports

A Yocto setup and management tool that helps you keep your environment up-to-date and in-sync with your team
A Yocto setup and management tool that helps you keep your environment up-to-date and in-sync with your team

yb (Yocto Buddy) yb is designed to make it easy to setup and (perhaps more importantly) keep Yocto environments up-to-date and in-sync with your team.

Sleek is a CLI tool for formatting SQL. It helps you maintain a consistent style across your SQL code, enhancing readability and productivity.

Sleek: SQL Formatter ✨ Sleek is a CLI tool for formatting SQL. It helps you maintain a consistent style across your SQL code, enhancing readability an

rpm (Rust project manager) is a tool that helps you to manage your rust projects

rpm rpm (Rust project manager) is a open source tool for managing your rust project in an organized way Installation # make sure you have rust install

Releases(v0.1.0-beta2-rc1)
Owner
Michael Lee
Michael Lee
Upkeep your websites and web applications with ease from the comfort of the command line.

Upkeep Upkeep your websites and web applications with ease from the comfort of the command line. Explore the docs » View Demo · Report Bug · Request F

Kevin B 0 Dec 24, 2021
A command line tool for people of transgender experience to replace their deadname within a Git repo.

chowndn (Change Owner from Dead Name) A command line tool for people of transgender experience to replace their dead name within a Git repo. See chown

Christi Miller 23 Dec 6, 2022
🔍 quickly search with your favorite websites straight from the terminal

gg Search with your favorite websites straight from the terminal! gg-example.mp4 Configure gg To add more websites, just edit the ~/.gg.toml or %APP_D

Vedant Nandwana 4 Dec 31, 2022
This is a simple command-line interface tool that allows you to interact with ChatGPT from OpenAI or Azure.

HeyGPT This is a simple command-line interface tool that allows you to interact with ChatGPT from OpenAI or Azure. You can use it to: Chat with ChatGP

Philip 5 Mar 28, 2023
Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers

Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers. It deals only with integer arithmetic. Expressions may involve mixed bases (limited to decimal, hexadecimal, octal and binary numbers). The global output format may be set to a particular radix - by default it is hex.

Deep Majumder 50 Dec 22, 2022
A bit like tee, a bit like script, but all with a fake tty. Lets you remote control and watch a process

teetty teetty is a wrapper binary to execute a command in a pty while providing remote control facilities. This allows logging the stdout of a process

Armin Ronacher 259 Jan 3, 2023
A program to share a TTY like a GPS UART between 2 processes.

TTYTEE - A process that exposes 2 copies of the same TTY. The initial use case for this crate has been sharing a single GPS device talking through an

Skyways 4 Jun 25, 2023
This is a command line utility written in Rust that helps you plan factories in Satisfactory.

Satisfactory Factory Planning Utility This is a command line utility written in Rust that helps you plan factories in Satisfactory. Tell it what you w

Maurdekye 4 Nov 29, 2023
Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

William D. Jones 5 Aug 20, 2022