Code Monkey home page Code Monkey logo

mov-cli's Introduction

Stargazers Pypi Version Pypi Downloads Python Versions Issues MIT License

Logo

Watch everything from your terminal.

Report Bug ยท Request Feature



Logo

Note

v4 is constantly changing so be sure to keep the tool and your plugins up to date. Also, I would advise not using it as a library yet as the API still has many breaking changes.

What is mov-cli? ๐Ÿ’ซ

mov-cli is a command line tool that streamlines the process of streaming media from the comfort of your terminal; so you can show off to your friends the superiority of the command line. ๐Ÿ’ช The tool is sort of a framework that handles metadata and configuration, then simply invokes your media player.

mov-cli is not a piracy tool; in fact, we encourage the opposite through the existence of our plugins mov-cli-fs and mov-cli-media-server. ๐Ÿซต You obtain the media. You pick the plugins.

Installation ๐Ÿ› ๏ธ

Tip

For in-depth installation instructions hit the wiki.

Prerequisites

  • A supported platform:
  • python (required, with pip)
  • lxml (optional, โšก faster scraping)
  • fzf (optional but highly recommended)
  • mpv (recommended & default media player)

To get running these are all the prerequisites you'll need.

With the prerequisites installed, mov-cli can be installed via the pip command on all platforms with Python version 3.8 or above.

pip install mov-cli -U

Check out the wiki on installation for more in-depth guidance on installing mov-cli.

Usage ๐Ÿ–ฑ๏ธ

mov-cli comes packaged with a CLI interface via the mov-cli command you can use in your respective terminal.

Note

You may notice mov-cli doesn't ship with any scrapers (or previously known as providers) by default, this is because v4 is plugin-based and scrapers are now part of plugins that must be chosen to be installed. Find out how to do so at the wiki.

  1. Install the scraper plugin of your choice. Visit this wiki page on how to do so and the mov-cli-plugin topic for a list of third-party mov-cli plugins.
mov-cli -e

Alternatively, you may also edit by manually opening the config file. See this Wiki page on that.

[mov-cli.plugins]
youtube = "mov-cli-youtube"
  1. Scrape away!
mov-cli -s youtube flight 370

The command above searches for flight 370 with our youtube plugin, however once again mov-cli is plugin based and there are many of them in the wild. ๐Ÿ˜‰

Star Graph โญ

Star Graph Chart

Contributing โœจ

Pull requests are welcome and appreciated. For major changes, please open an issue first to discuss what you would like to change.

Inspiration ๐ŸŒŸ

Inspired by ani-cli, lobster and animdl

mov-cli's People

Contributors

4cecoder avatar alpha-hexor avatar bachig26 avatar briansalk avatar coolnsx avatar demonkingswarn avatar dependabot[bot] avatar ebannox avatar gdjkhp avatar lo2dev avatar paniash avatar poseidon444 avatar prsouzafm avatar r3tr0ananas avatar shinysocks avatar thegoldenpro avatar wrenfannin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mov-cli's Issues

mov-cli refuses to work on windows ([WinError 3] The system cannot find the path specified)

It gets as far as to episode selection, or movie selection, but when the stream is selected, it doesn't open the stream with mpv, instead it gives this error and closes. I have another account on the system, named "IIT Work", however mov-cli is not installed in that account. Idk why it is searching for anything there.

I have already tried uninstalling and reinstalling.
image

Giving the user a list of providers:

This is more of a life improvement more than anything else. Instead of exiting out of the program after incorrect input of "calls:" , there could be a print("Please select from the following list of options") that keeps the loop running and allows for another entry. So, line 40 in Main.py could have an option to allow the user another try.

This is not a big deal if they have read the code/docs but could help with ease-of-use.

Great job so far.

Feature: Options Menu

Is it possible to make selected episodes "ex: select episode from 3 to 10" like ani-cli did in the last update.
I will do it myself but I'm a noob in scripts

UX (bash)

Maybe you could ask the users if they want to search movies or tv-shows, instead of having movies as default and tv-shows "hidden".
Besides, when searching (i.g.: "Select episode" step) it would be nice to have an option to restart the program without quitting. For now, if you decide you want to search another show, you have to close the program and open it again.

"The Current Provider has changed"

Certain providers cannot load content, only showing this message before the program quits:
"The Current Provider has changed"
this is the Python version of mov-cli.

Perhaps related, theflix doesn't load content either. instead, it sends the user in a loop of "Enter your choice" (in my system monitor, i can see mpv tries to launch, then quits after a few seconds without showing the player window)

[FEATURE] Add support for subtitles.

I have seen the subtitles are available in most the providers via the settings option in the video player but the mov-cli doesn't extract them.

will it be supported? or possible external support to be included like subscene or others?

unable to run mov-cli

in an arch linux vm I installed mov-cli and it just spits out line 1: not: command not found where as on my main pc (windows) it runs completely fine, no I didnt mix up the install cmds

Missing providers??

I just installed mov-cli on a second computer, but only the version installed on the first computer is showing kimcartoon and other providers.

pointblank@ao1-macbook ~ mov-cli       


Movies and Shows:
theflix
actvid
sflix
solar
dopebox
ask4movie

Live TV:
eja
ustvgo / US IP ONLY
    
Cartoons:
kimcartoon  

the installation on the other device only shows theflix, vidsrc, ejz, trailers, and ask4movie

this is my update / install function for zsh:

function mov-cli-update {
        sudo rm -rf /usr/local/bin/mov-cli
        git -C /tmp/ clone https://github.com/mov-cli/mov-cli
        cd /tmp/mov-cli/
        python3 setup.py build && sudo python3 setup.py install
        sudo rm -rf /tmp/mov-cli/
        cd ~
}

theflix shows incorrect number of episodes

while I was watching south park I noticed that "theflix" showed an incorrect total number of episodes
image
this problem doesn't seem to happen in others providers, take "actvid" as an example
image
at first, I through theflix didn't have the full season, but it doesnt seem to be the case considering that if I type a number between 12-17 i can actually watch it.
image
I also tested it with breaking bad and it says seasons one has 12 episodes, when in reality it only have 7

Dependencies not getting installed

pip install git+https://github.com/mov-cli/mov-cli.git --verbose
Using pip 22.1.2 from /home/noel/.local/lib/python3.10/site-packages/pip (python 3.10)
Defaulting to user installation because normal site-packages is not writeable
Collecting git+https://github.com/mov-cli/mov-cli.git
  Cloning https://github.com/mov-cli/mov-cli.git to /tmp/pip-req-build-hcv4qijb
  Running command git version
  git version 2.37.1
  Running command git clone --filter=blob:none https://github.com/mov-cli/mov-cli.git /tmp/pip-req-build-hcv4qijb
  Cloning into '/tmp/pip-req-build-hcv4qijb'...
  Running command git rev-parse HEAD
  86278552635c8809f43ea73e275932d6ae25a65d
  Resolved https://github.com/mov-cli/mov-cli.git to commit 86278552635c8809f43ea73e275932d6ae25a65d
  Running command python setup.py egg_info
  Traceback (most recent call last):
    File "<string>", line 2, in <module>
    File "<pip-setuptools-caller>", line 34, in <module>
    File "/tmp/pip-req-build-hcv4qijb/setup.py", line 2, in <module>
      from mov_cli.__version__ import __core__
    File "/tmp/pip-req-build-hcv4qijb/mov_cli/__init__.py", line 1, in <module>
      from . import __main__
    File "/tmp/pip-req-build-hcv4qijb/mov_cli/__main__.py", line 7, in <module>
      from .websites.theflix import Theflix
    File "/tmp/pip-req-build-hcv4qijb/mov_cli/websites/theflix.py", line 5, in <module>
      import httpx
  ModuleNotFoundError: No module named 'httpx'
  error: subprocess-exited-with-error
  
  ร— python setup.py egg_info did not run successfully.
  โ”‚ exit code: 1
  โ•ฐโ”€> See above for output.
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  full command: /usr/bin/python -c '
  exec(compile('"'"''"'"''"'"'
  # This is <pip-setuptools-caller> -- a caller that pip uses to run setup.py
  #
  # - It imports setuptools before invoking setup.py, to enable projects that directly
  #   import from `distutils.core` to work with newer packaging standards.
  # - It provides a clear error message when setuptools is not installed.
  # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so
  #   setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning:
  #     manifest_maker: standard file '"'"'-c'"'"' not found".
  # - It generates a shim setup.py, for handling setup.cfg-only projects.
  import os, sys, tokenize
  
  try:
      import setuptools
  except ImportError as error:
      print(
          "ERROR: Can not execute `setup.py` since setuptools is not available in "
          "the build environment.",
          file=sys.stderr,
      )
      sys.exit(1)
  
  __file__ = %r
  sys.argv[0] = __file__
  
  if os.path.exists(__file__):
      filename = __file__
      with tokenize.open(__file__) as f:
          setup_py_code = f.read()
  else:
      filename = "<auto-generated setuptools caller>"
      setup_py_code = "from setuptools import setup; setup()"
  
  exec(compile(setup_py_code, filename, "exec"))
  '"'"''"'"''"'"' % ('"'"'/tmp/pip-req-build-hcv4qijb/setup.py'"'"',), "<pip-setuptools-caller>", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-mm0mwpc9
  cwd: /tmp/pip-req-build-hcv4qijb/
  Preparing metadata (setup.py) ... error
error: metadata-generation-failed

ร— Encountered error while generating package metadata.
โ•ฐโ”€> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

I had to install bs4, colorama, and httpx manually and then run pip install to get it installed

All Searches Currently Fail

The scraper is currently failing any searches.

Trying:
./mov-cli $ANYSHOWORMOVIENAME

Returns:
No search results found

I'm gonna try to fix this on my own and open a PR, but it's a lot to read through. The URL's being scraped still exist, maybe need to add some verbose output for failures. I know gogoplay and gogoanime recently had broken keys for ani-cli

Android support?

I remember trying mov-cli on my phone a long time ago but it never worked so I assumed there wasn't support.

So is there currently android support for mov-cli?

FZF

Would be cool to implement FZF instead of displaying plain text.

It's broken

using default provider (theflix):

The name of the provider [theflix]: 
[!] Sorry I don't know that provider! |  The read operation timed out

using Solar to select S3E1 of a tv show (the expanse):

[!] Sorry I don't know that provider! |  list index out of range

add support for asian providers

When pypi release?

The title says it all. I'm just curious as to why this hasn't been added to pypi yet.

Feature: Show trending option

It would be nice to have an option to show what movies and tv shows are trending either through the website or externally (through imdb as an example). It could be parsed as an argument.

Broken on python 3.11

on python 3.11 the program doesn't work, I always get this error:

Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "C:\Users\onepi\scoop\apps\python\current\Scripts\mov-cli.exe\__main__.py", line 4, in <module> File "C:\Users\onepi\scoop\apps\python\current\Lib\site-packages\mov_cli\__init__.py", line 1, in <module> from . import __main__ File "C:\Users\onepi\scoop\apps\python\current\Lib\site-packages\mov_cli\__main__.py", line 6, in <module> from .utils.config import config ModuleNotFoundError: No module named 'mov_cli.utils.config'

Parser Error

Every time the program tries to do a search, this error pops out:
[!] An error has occurred | Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

I found out this error pops out because of the lines:
soup = BS(source, "lxml")
should be:
soup = BS(source, "html.parser")

IDK if this is an error of the lxml library or if the new python version made some breaking changes, anyway using html.parser solves the problem, so I'm going to fix all the lines and make a pull request

Is it broken again?

After the update it worked fine for a few hours but now I am once again unable to get past the "I don't know this provider"
So I am wondering if something broke on my end or did the sites change something again
Screenshot 2022-09-28 161425
I appreciate the work you guys have put into this thanks.

"Error while connecting to Discord"

I tried uninstalling mov-cli to reinstall it and try again but my system claims it doesn't exist. Heres what outputs when I type "mov-cli":

[X]: Error while connecting to Discord
Traceback (most recent call last):
File "/home/yaboi_sakurai/.local/bin/mov-cli", line 5, in
from mov_cli.main import movcli
File "/home/yaboi_sakurai/.local/lib/python3.10/site-packages/mov_cli/init.py", line 1, in
from . import main
File "/home/yaboi_sakurai/.local/lib/python3.10/site-packages/mov_cli/main.py", line 27, in
default=f"{config.getprovider()}",
File "/home/yaboi_sakurai/.local/lib/python3.10/site-packages/mov_cli/utils/config.py", line 45, in getprovider
if config.providerexists() is True:
File "/home/yaboi_sakurai/.local/lib/python3.10/site-packages/mov_cli/utils/config.py", line 59, in providerexists
file = f"{config.winorlinux()}/mov_cli/.provider"
File "/home/yaboi_sakurai/.local/lib/python3.10/site-packages/mov_cli/utils/config.py", line 15, in winorlinux
return f"/home/{os.getlogin()}"
OSError: [Errno 6] No such device or address

AUR Package

An AUR package for this would greatly benefit Arch users.

[Bash version] Please add a way to limit or select the resolution

The bash version of mov-cli, running on debian testing/unstable x64 and mpv (with vdpau as video output) as the player.

I am watching a series this week and today I noticed that the episode was too laggy from the start. Mpv's stats (the on screen info that comes up when pressing "i") showed that the video was an 4k (3840*2160, or 2160p) h265. Similar info was also displayed in the terminal like so

Video link fetched https://urlhere.com/Something-S01E01-HDR.2160p.WEB.h265-blablabla

Sadly, I have neither the bandwith, nor the hardware for such a stream, so a way to select the resolution (either via a switch or from some config file) is more than desirable. The same applies for the codec and hdr.

Thank you in advance :)

Some sort of "Encryption" issue

After the update it was again working fine for a while but now I am running into a new issue, it applies to all providers it just returns a "encrypted" error I will post a screenshot
Screenshot 2022-10-03 175951
is this an issue on my end? thank you for your time

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.