Stream-Cli application that allow you to play your favorite movies from the terminal

Overview

Stram-Cli

Stream-Cli application that allow you to play your favorite movies from the terminal.

Installation:

  • Dependencies: webtorrent

  • Stream-cli is builted with python 3.8 make sure to have the same version or higher: python --version

  • It's Highly recommended to use a virtualenv python -m venv venv

  • First you need to install the python requirements. pip install -r requirements.txt

How it works:

  • Run from the command line python3 stream-cli
  • Type the movie that you want to watch
  • Select the choosen one and type the episode number
  • Bring Some Popcorn, Enjoy 😉
Comments
  • No results displayed, TopMoviesSpider.parse method is never called.

    No results displayed, TopMoviesSpider.parse method is never called.

    2022-05-05 14:10:28 [scrapy.utils.log] INFO: Scrapy 2.6.1 started (bot: scrapybot)
    2022-05-05 14:10:28 [scrapy.utils.log] INFO: Versions: lxml 4.8.0.0, libxml2 2.9.13, cssselect 1.1.0, parsel 1.6.0, w3lib 1.22.0, Twisted 22.4.0, Python 3.10.4 (main, Mar 24 2022, 13:07:27) [GCC 11.2.0], pyOpenSSL 22.0.0 (OpenSSL 3.0.2 15 Mar 2022), cryptography 37.0.1, Platform Linux-5.17.0-1-amd64-x86_64-with-glibc2.33
    2022-05-05 14:10:28 [scrapy.crawler] INFO: Overridden settings:
    {}
    2022-05-05 14:10:28 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.epollreactor.EPollReactor
    2022-05-05 14:10:28 [scrapy.extensions.telnet] INFO: Telnet Password: 91c143582ecd5828
    2022-05-05 14:10:28 [scrapy.middleware] INFO: Enabled extensions:
    ['scrapy.extensions.corestats.CoreStats',
     'scrapy.extensions.telnet.TelnetConsole',
     'scrapy.extensions.memusage.MemoryUsage',
     'scrapy.extensions.logstats.LogStats']
    2022-05-05 14:10:28 [scrapy.middleware] INFO: Enabled downloader middlewares:
    ['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
     'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
     'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
     'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
     'scrapy.downloadermiddlewares.retry.RetryMiddleware',
     'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
     'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
     'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
     'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
     'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
     'scrapy.downloadermiddlewares.stats.DownloaderStats']
    2022-05-05 14:10:28 [scrapy.middleware] INFO: Enabled spider middlewares:
    ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
     'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
     'scrapy.spidermiddlewares.referer.RefererMiddleware',
     'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
     'scrapy.spidermiddlewares.depth.DepthMiddleware']
    2022-05-05 14:10:28 [scrapy.middleware] INFO: Enabled item pipelines:
    []
    2022-05-05 14:10:28 [scrapy.core.engine] INFO: Spider opened
    2022-05-05 14:10:28 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
    2022-05-05 14:10:28 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
    2022-05-05 14:10:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://torrentgalaxy.to/> (failed 1 times): [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', '', 'unexpected eof while reading')]>]
    2022-05-05 14:10:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://torrentgalaxy.to/> (failed 2 times): [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', '', 'unexpected eof while reading')]>]
    2022-05-05 14:10:29 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://torrentgalaxy.to/> (failed 3 times): [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', '', 'unexpected eof while reading')]>]
    2022-05-05 14:10:29 [scrapy.core.scraper] ERROR: Error downloading <GET https://torrentgalaxy.to/>
    Traceback (most recent call last):
      File "/home/aquib/.local/lib/python3.10/site-packages/scrapy/core/downloader/middleware.py", line 49, in process_request
        return (yield download_func(request=request, spider=spider))
    twisted.web._newclient.ResponseNeverReceived: [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', '', 'unexpected eof while reading')]>]
    2022-05-05 14:10:29 [scrapy.core.engine] INFO: Closing spider (finished)
    2022-05-05 14:10:29 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
    {'downloader/exception_count': 3,
     'downloader/exception_type_count/twisted.web._newclient.ResponseNeverReceived': 3,
     'downloader/request_bytes': 648,
     'downloader/request_count': 3,
     'downloader/request_method_count/GET': 3,
     'elapsed_time_seconds': 0.881984,
     'finish_reason': 'finished',
     'finish_time': datetime.datetime(2022, 5, 5, 8, 40, 29, 711889),
     'log_count/DEBUG': 3,
     'log_count/ERROR': 2,
     'log_count/INFO': 10,
     'memusage/max': 62857216,
     'memusage/startup': 62857216,
     'retry/count': 2,
     'retry/max_reached': 1,
     'retry/reason_count/twisted.web._newclient.ResponseNeverReceived': 2,
     'scheduler/dequeued': 3,
     'scheduler/dequeued/memory': 3,
     'scheduler/enqueued': 3,
     'scheduler/enqueued/memory': 3,
     'start_time': datetime.datetime(2022, 5, 5, 8, 40, 28, 829905)}
    2022-05-05 14:10:29 [scrapy.core.engine] INFO: Spider closed (finished)
    
    
    bug help wanted 
    opened by aquib-sh 9
  • Connection refused

    Connection refused

    getting this problem running python3 main.py and selecting top

    Traceback (most recent call last):
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/connection.py", line 174, in _new_conn
        conn = connection.create_connection(
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/util/connection.py", line 95, in create_connection
        raise err
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/util/connection.py", line 85, in create_connection
        sock.connect(sa)
    ConnectionRefusedError: [Errno 111] Connection refused
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 703, in urlopen
        httplib_response = self._make_request(
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 386, in _make_request
        self._validate_conn(conn)
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 1042, in _validate_conn
        conn.connect()
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/connection.py", line 358, in connect
        self.sock = conn = self._new_conn()
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/connection.py", line 186, in _new_conn
        raise NewConnectionError(
    urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7f57355079a0>: Failed to establish a new connection: [Errno 111] Connection refused
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/requests/adapters.py", line 489, in send
        resp = conn.urlopen(
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
        retries = retries.increment(
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/urllib3/util/retry.py", line 592, in increment
        raise MaxRetryError(_pool, url, error or ResponseError(cause))
    urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.torrentgalaxy.to', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f57355079a0>: Failed to establish a new connection: [Errno 111] Connection refused'))
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/elon/stream-cli/main.py", line 130, in <module>
        main()
      File "/home/elon/stream-cli/main.py", line 87, in main
        get_top(hosts)
      File "/home/elon/stream-cli/main.py", line 14, in get_top
        1: apprun(torrent_galaxy()),
      File "/home/elon/stream-cli/stream_cli/runner.py", line 51, in apprun
        movies = start_scrawling(scraping_class)
      File "/home/elon/stream-cli/stream_cli/runner.py", line 35, in start_scrawling
        response = requests.get("https://www.torrentgalaxy.to/").status_code
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/requests/api.py", line 73, in get
        return request("get", url, params=params, **kwargs)
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/requests/api.py", line 59, in request
        return session.request(method=method, url=url, **kwargs)
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/requests/sessions.py", line 587, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/requests/sessions.py", line 701, in send
        r = adapter.send(request, **kwargs)
      File "/home/elon/stream-cli/venv/lib/python3.10/site-packages/requests/adapters.py", line 565, in send
        raise ConnectionError(e, request=request)
    requests.exceptions.ConnectionError: HTTPSConnectionPool(host='www.torrentgalaxy.to', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f57355079a0>: Failed to establish a new connection: [Errno 111] Connection refused'))
    

    using npm 8.15.1; node 18.7.0 and webtorrent 4.1.0 (1.8.26).

    love the project concept, thanks in advance

    opened by doonayy 8
  • No such file or directory

    No such file or directory

    Got this error when running python -m venv venv && source venv/bin/activate.

    I'm using windows 10 and running the command using Git Bash console. image

    opened by ejlocop 7
  • i get this same error everytime i run this file .

    i get this same error everytime i run this file .

    Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 704, in urlopen httplib_response = self._make_request( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 387, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1043, in validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( File "/usr/lib/python3/dist-packages/urllib3/util/ssl.py", line 449, in ssl_wrap_socket ssl_sock = ssl_wrap_socket_impl( File "/usr/lib/python3/dist-packages/urllib3/util/ssl.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) File "/usr/lib/python3.10/ssl.py", line 512, in wrap_socket return self.sslsocket_class._create( File "/usr/lib/python3.10/ssl.py", line 1070, in _create self.do_handshake() File "/usr/lib/python3.10/ssl.py", line 1341, in do_handshake self._sslobj.do_handshake() ConnectionResetError: [Errno 104] Connection reset by peer

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "/home/damn/.local/lib/python3.10/site-packages/requests/adapters.py", line 440, in send resp = conn.urlopen( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 786, in urlopen retries = retries.increment( File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 550, in increment raise six.reraise(type(error), error, _stacktrace) File "/usr/lib/python3/dist-packages/six.py", line 718, in reraise raise value.with_traceback(tb) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 704, in urlopen httplib_response = self._make_request( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 387, in _make_request self._validate_conn(conn) File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1043, in validate_conn conn.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 414, in connect self.sock = ssl_wrap_socket( File "/usr/lib/python3/dist-packages/urllib3/util/ssl.py", line 449, in ssl_wrap_socket ssl_sock = ssl_wrap_socket_impl( File "/usr/lib/python3/dist-packages/urllib3/util/ssl.py", line 493, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) File "/usr/lib/python3.10/ssl.py", line 512, in wrap_socket return self.sslsocket_class._create( File "/usr/lib/python3.10/ssl.py", line 1070, in _create self.do_handshake() File "/usr/lib/python3.10/ssl.py", line 1341, in do_handshake self._sslobj.do_handshake() urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "/home/damn/stream-cli/main.py", line 69, in app() File "/home/damn/.local/lib/python3.10/site-packages/typer/main.py", line 214, in call return get_command(self)(*args, **kwargs) File "/home/damn/.local/lib/python3.10/site-packages/click/core.py", line 1130, in call return self.main(*args, **kwargs) File "/home/damn/.local/lib/python3.10/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) File "/home/damn/.local/lib/python3.10/site-packages/click/core.py", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/damn/.local/lib/python3.10/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/damn/.local/lib/python3.10/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/home/damn/.local/lib/python3.10/site-packages/typer/main.py", line 500, in wrapper return callback(**use_params) # type: ignore File "/home/damn/stream-cli/main.py", line 19, in top apprun(TopMoviesSpider, True) File "/home/damn/stream-cli/src/runner.py", line 43, in apprun movies = start_scrawling(scraping_class) File "/home/damn/stream-cli/src/runner.py", line 30, in start_scrawling response = requests.get("https://www.torrentgalaxy.to/").status_code File "/home/damn/.local/lib/python3.10/site-packages/requests/api.py", line 75, in get return request('get', url, params=params, **kwargs) File "/home/damn/.local/lib/python3.10/site-packages/requests/api.py", line 61, in request return session.request(method=method, url=url, **kwargs) File "/home/damn/.local/lib/python3.10/site-packages/requests/sessions.py", line 529, in request resp = self.send(prep, **send_kwargs) File "/home/damn/.local/lib/python3.10/site-packages/requests/sessions.py", line 645, in send r = adapter.send(request, **kwargs) File "/home/damn/.local/lib/python3.10/site-packages/requests/adapters.py", line 501, in send raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

    opened by gvsdev-bluewave-inc 4
  • "webtorrent is exiting..."

    Running on wsl everything seems to work fine, I set up vlc, but a few seconds after choosing a movie it shows me the message "webtorrent is exiting...". I can't seem to stream any movie.... Every requirement is satisfied and vlc is installed. I'm using Xming to get acess to the graphical interface on windows.

    bug 
    opened by sw33zy 4
  • Change `Unable to connect to torrent provider...` error if movie not found

    Change `Unable to connect to torrent provider...` error if movie not found

    There's an issue with the Unable to connect to torrent provider. Please use vpn. Exiting... message. It is displayed even if the crawler didn't find the movie (for example, looking for a fictional movie name).

    I suggest adding a ping to the website before displaying the message to check whether it's a connection issue or the movie is not found, then display a message accordingly.

    The code to change:

    if spider_class.output == []:
            utils.clear_screen()
            sys.exit(
                "\033[91mUnable to connect to torrent provider. Please use vpn. Exiting...\033[0m"
            )
    
    opened by Aymane11 3
  • cannot import apprun

    cannot import apprun

    copy pasted every command and in python3 main.py config "vlc" i get

    Traceback (most recent call last):
      File "/home/ashroy/Softwares/stream-cli/main.py", line 7, in <module>
        from stream_cli.runner import apprun
    ImportError: cannot import name 'apprun' from 'stream_cli.runner' (/home/ashroy/Softwares/stream-cli/stream_cli/runner.py)
    
    opened by ashroyxi 1
  • Improve user input, replace os usage to clear screen, replace urllib by requests to get status code

    Improve user input, replace os usage to clear screen, replace urllib by requests to get status code

    This PR contains the following changes:

    • Formatting code using black
    • Replace direct execution of cls or clear using os module by rich console's clear method
    • Replace urllib urlopen with requests.get(url).status_code to get website status code see this
    • Improve user input by adding an exit option (0) and keep asking for valid input
    • Use rich colors instead of ANSI escape sequences.
    opened by Aymane11 1
  • Fix FileNotFoundError on Windows when running webtorrent subprocess

    Fix FileNotFoundError on Windows when running webtorrent subprocess

    This fixes the FileNotFoundError error on Windows when calling the stream function in stream.py file.

    I added the shell=True parameter to the subprocess.run function.

    opened by Aymane11 1
  • when trying to play a movie get the message webtorrent is exiting...

    when trying to play a movie get the message webtorrent is exiting...

    basically title, everything works up to the point until I choose an option. The only thing is that when going through the requirments the PyDispactcher gave an error, but I installed it after so when running the requirments everything is satisfied.

    opened by WoahitsQ 1
  • [NOT AN ISSUE] Where does movies go?

    [NOT AN ISSUE] Where does movies go?

    after i've watched a movie, where does the file go ? is it deleted or stored in a specific folder ?

    Also, THIS script is BEAUTIFUL ! in a long time i haven't seen a piece of python script so awesome, Keep it up !

    opened by AlessandroLatto 1
Releases(0.2)
Owner
redouane
redouane
Video processing routines for SciPy

scikit-video Video Processing SciKit BETA Video processing algorithms, including I/O, quality metrics, temporal filtering, motion/object detection, mo

Alex Izvorski 119 Dec 27, 2022
720p FPGA Media Player (RISC-V + Motion JPEG + SD + HDMI on an Artix 7)

FPGA Media Player This project is a FPGA based media player which is capable of playing Motion JPEG encoded video over HDMI or VGA on commonly availab

179 Dec 02, 2022
camKapture is an open source application that allows users to access their webcam device and take pictures or create videos.

camKapture is an open source application that allows users to access their webcam device and take pictures or create videos.

manoj 1 Jun 21, 2022
Tiny python video cutter

tiny_python_video_cutter Source code based on a discussion in StackOverflow Setup project in Pycharm: Configure virtual env in Pycharm. You are done w

Truong 2 May 28, 2022
Examples of usage of GStreamer hlssink3 plugin.

Examples of usage of GStreamer hlssink3 plugin.

Rafael Carício 2 Aug 03, 2022
Stream anime from kaa.si with python

kaa.si-cli Stream anime using MPV player from kaa.si with python

Muhammad Rovino Sanjaya 52 Dec 24, 2022
Streamlink is a CLI utility which pipes video streams from various services into a video player

Streamlink is a CLI utility which pipes video streams from various services into a video player

8.2k Dec 26, 2022
A GUI application for cropping images from videos

v-trimming-gui A GUI application for cropping images from videos. 動画をシークバーで操作しながらスクリーンショットを撮るためのアプリ。 Requirement Python =3.7 opencv-python ^4.5.5 PyS

Menrui 6 Feb 05, 2022
A telegram bot for compressing/encoding videos in h264 format.

Video-Encoder-Bot a telegram bot for compressing/encoding videos in h264 format. Configuration Add values in environment variables or add them in conf

Weeb >.< 61 Dec 29, 2022
Automagically synchronize subtitles with video.

FFsubsync Language-agnostic automatic synchronization of subtitles with video, so that subtitles are aligned to the correct starting point within the

Stephen Macke 5.7k Jan 06, 2023
A pure python media player that can be used in AI media API development.

A pure python media player that can be used in AI media API development.

YDOOK 1 Dec 04, 2021
Create a Video Membership app using FastAPI & NoSQL

Video Membership Create a Video Membership app using FastAPI & NoSQL. In this series, we're going to explore building a membership application using F

Coding For Entrepreneurs 69 Dec 25, 2022
Python retagging utility for mkv files using mkvmerge.

pyretag A python script to retag mkv files. Setting Up pip install pyfiglet pip install rich Move the mkv files to input folder.

25 Dec 04, 2022
Video stream recording dockerized server using python/ffmpeg.

Stream Recording Server Video stream recording dockerized server using python/ffmpeg. Usage Configuration Prepare .env file, check .env.example for th

GR 2 Jan 14, 2022
Python based script to operate FFMPEG.

FMPConvert Python based script to operate FFMPEG. Ver 1.0 -- 2022.02.08 Feature ✅ Maximum compatibility: Third-party dependency libraries unused ✅ Che

cybern000b 1 Feb 28, 2022
Image and video quality assessment

CenseoQoE: 视觉感知画质评价框架 项目介绍 图像/视频在编解码、传输和显示等过程中难免引入不同类型/程度的失真导致图像质量下降。图像/视频质量评价(IVQA)的研究目标是希望模仿人类视觉感知系统, 通过算法评估图片/视频在终端用户的眼中画质主观体验的好坏,目前在视频编解码、画质增强、画质监。

Tencent 133 Dec 20, 2022
FLIR/DJI IR Camera Data Parser, Python Version

FLIR/DJI IR Camera Data Parser, Python Version Parser infrared camera data as NumPy data. Usage Clone this respository and cd thermal_parser. Run pip

14 Dec 23, 2022
Program to play videos with props in Apex Legends

R5Fresh A video player for the Apex Legends mod R5Reloaded

9 Nov 13, 2022
获取斗鱼&虎牙&哔哩哔哩&抖音&快手等 48 个直播平台的真实流媒体地址(直播源)和弹幕,直播源可在 PotPlayer、flv.js 等播放器中播放。

获取斗鱼&虎牙&哔哩哔哩&抖音&快手等 48 个直播平台的真实流媒体地址(直播源)和弹幕,直播源可在 PotPlayer、flv.js 等播放器中播放。

乌帮图 5.6k Jan 06, 2023
It is a simple python package to play videos in the terminal using characters as pixels

It is a simple python package to play videos in the terminal using characters as pixels

Joel Ibaceta 1.4k Jan 07, 2023