Back

Show HN: CineCLI – Browse and torrent movies directly from your terminal

348 points2 monthsgithub.com

Hi HN

I built CineCLI — a cross-platform terminal app to browse movies, view details, and open torrents directly in your system torrent client.

Features: - Search movies from the terminal - Rich UI with ratings, runtime, genres - Interactive & non-interactive modes - Magnet handling via system default client - Linux/macOS/Windows support - No ads, no tracking

GitHub: https://github.com/eyeblech/cinecli PyPI: https://pypi.org/project/cinecli/

Would love feedback from terminal + Python folks

pedromoss2 months ago

Great job! I've achieved comparable results on my Android TV with Stremio[1] and the Torrentio[2] plugin. Being able to use the terminal for streaming would be a nice thing to have in Linux. It would also be cool to check for malicious files before downloading.

[1]: https://www.stremio.com [2]: https://torrentio.org/

Frotag2 months ago

So torrentio provides the metadata and downloads the video on-demand. And stremio handles UI and playback. That's a pretty neat way to keep the storage reqs minimal.

This got me thinking if jellyfin could be configured for something similar (I don't feel like migrating to yet-another-media-library) and turns out it supports .strm files [0], which are literally just urls in a text file (much like .m3u8 playlists) [1]. My use case is private trackers so I would have to write a custom scraper to replace the torrentio functionality anyways. So it probably wouldn't be too hard to have it generate .strm placeholders at the same time. Hopefully there aren't any performance / transcoding issues ...

[0] - https://github.com/search?q=repo%3Ajellyfin%2Fjellyfin+strm&...

[1] - https://emby.media/support/articles/Strm-Files.html

bl4kers2 months ago
danr42 months ago

shhhhhhhh

Twixes2 months ago

An echo of Popcorn Time can he heard bouncing around the software cathedral… The takedown notices will start coming in if CineCLI is too easy to use! Though looks like it doesn't play anything itself – _might_ be safe

japborst2 months ago

RIP Popcorn Time. It was fucking amazing.

squibonpig2 months ago

Is it actually gone? I found official looking sites on a quick Google.

scirob2 months ago

could we not bring back popcorn time if it goes over to decentralized github : https://radicle.xyz/

scirob2 months ago

its strange how we can't just build software that then works for ever. The emulation boys got something going but netowkred software unlikley

unpopularopp2 months ago

If you know how to use a CLI tool then you could also know how to download proper high quality releases without much effort. No private tracker and interview shenanigans. YTS is a bottom of the barrel quality. I actually don't even see who is the target audience of this unless you just made as an exercise to build an app on top of an API.

flave2 months ago

Where’s good these days? I’m feeling my old Napster ways bubbling back up from the deep…

unpopularopp2 months ago

First of all this the ground 0 for everything piracy (and more, generally free stuff) https://fmhy.net/

Here are the recommended film sites https://fmhy.net/video#torrent-sites

I generally download from https://rutracker.org/ (need an account to search not for downloading). They have pretty much everything that you can imagine (not just films) and in proper quality too (BD Remuxes etc). There will be no scene releases here because they add russian/ukrainian dubs and subs to almost all films but that's a small problem.

The other one is Heartive which lists torrents from the DHT network with Magnet links https://heartiveloves.pages.dev/ You just click on the torrent icon in the middle top of the selected film and all the available releases will be listed in plain text. The only downside that you need to be familiar with the release tags

Last but not least https://nyaa.si/ if you have a slight interest in anything japanese from manga to anime to much more

mrbluecoat2 months ago
plexman2 months ago
thijson2 months ago

Thanks for the links. I'm so out of it these days, I only knew of btdig.com for DHT searches.

voidUpdate2 months ago

I just use ye old faithful of piratebay, through the tor browser so my ISP doesn't do shenanigans to it, then ffmpeg to get only the streams I care about (video, english audio / japanese audio + english subtitles) and reencode it to h264 mp4 so the files aren't gigantic and are compatible with everything. A bit old-school maybe but it generally works fine for me.

I live in the UK so I'll also sometimes pull stuff from iPlayer, which yt-dlp works perfectly for, and also off youtube

IlikeKitties2 months ago

Can you please reconsider using TOR for piracy? It strains the Tor Network and makes life harder for exit node providers. The Tor Project has advised against it as well[0]. There are many cheap VPN Providers that allow port forwarding and will give you an even better torrenting experience.

Using the Tor-Browser to get the links on ThePirateBay et. al. is of course fine, torrenting the content though is where it becomes a problem.

[0] https://support.torproject.org/about-tor/using-and-sharing/t...

+5
voidUpdate2 months ago
hombre_fatal2 months ago

On the other hand, the system would be doomed if it relied on 1:1 message board scolding the few good actors to be viable.

_zoltan_2 months ago

that seems like a lot of work compared to click click watch that one can achieve with *arr stack.

+1
voidUpdate2 months ago
+1
throwaway987532 months ago
cantalopes2 months ago

I highly recommend setting up a kodi combo: real-debrid/fen/seren/coco scrapers/tmdb helper with your trakt account/arctic fuse 2 (netflix like skin). It is a complete "stream everything" netflix interface.

It takes quite a while to understand how to set everything up and needs tons of customization (which is also a positive), but reddit is your friend. For example this is a good guide (although bit dated, some info may be older but generally it still fits https://www.reddit.com/r/Addons4Kodi/comments/zzfdtb/allincl... )

I know people also use *arr stack and jellyfin to setup their own library but my problem is that i never /know/ what to watch. With this setup, i just turn it on, get to browse customized/recommended and random lists like in netflix and it streams directly via real-debrid or premiumize

Oh; if you decide to have a dedicated raspberry pi for this thing (so you can use it with tv easilly), use a regular raspbian os or something, do NOT use libreelec. It is trying to be heavily customized, but in the end is just worse, buggy, bad wifi support, slow releases from small team, and unability to manually update packages

BeetleB2 months ago

> I know people also use *arr stack and jellyfin to setup their own library but my problem is that i never /know/ what to watch.

For people like me, knowing what to watch is never a problem. Getting time to actually watch it is.

I suggest finding a way to do your own curation.

For movies, you could just start with the IMDB Top 250 (pick at random). They used to have other lists (e.g. top non-English movies, etc), but I can't seem to find them any more.

hambos222 months ago

> I know people also use *arr stack ... i never /know/ what to watch

For discoverability you should check overseerr, which is pluggable via API to sonarr and radarr

rochansinha2 months ago

I have been using realdebrid with POV on kodi and it works like a charm. Saving a bunch by not needing to subscribe to what seems like a million OTT’s

colinsane2 months ago

for public torrents, skip the trackers and just run a DHT crawler like bitmagnet. it'll take a month to "catch up", but after that you'll have more indexed content than any individual tracker & it'll be way snappier.

tomtomtom7772 months ago

This is neat. I didn't realize this was possible with the protocol. Thanks!

elliotec2 months ago

Same, I know how to use a terminal quite well but don’t know the latest best way to “sail the seas” as they say.

g947o2 months ago

For old content I often spin up the old RARBG database.

Too bad it's gone.

hauxir2 months ago

built something similar but a webapp where you can search using any tracker supported by jackett and stream in your browser, can have a look here https://github.com/hauxir/rapidbay

bryanrasmussen2 months ago

What I'd like - a tool to stream to timestamps and then stream out between two timestamps to a local file.

This would really improve various workflows.

bryanrasmussen2 months ago

in fact I will point out that if this were possible and people had a lot of data of people using streaming out sections of torrents instead of the whole stream it would be another bit of evidence for torrents being used for fair use.

cbluth2 months ago

How do you stream a timestamp?

bryanrasmussen2 months ago

I'm not sure if you're being facetious and making fun of my saying stream a timestamp instead of stream to a particular time in the video, but if so I guess https://news.ycombinator.com/item?id=46364765 suggested a way.

I just expected you would stream to point X in the stream that would be to the timestamp set to start and then to point y which would be the end. Obviously it would have to be able to figure out how the streamed file would map to time, which I don't know how to do which is why I said I would like a tool that did it other than announcing I made a tool that did it myself.

Of course obviously some tools like yt-dlp etc. have this capability with the --download-sections property but I want something for torrents.

cbluth1 month ago

No, I totally misunderstood.

I vibe coded a little tool [0] that can stream range requests from torrents.

It's a little buggy and super rough around the edges, but it's definitely possible because your torrent client can prioritize piece requests and http standards support http range requests, just requesting parts of a document. I lightly tested it with VLC and seeking the playback to the middle of a video

[0] https://github.com/cbluth/bittorrent

reactordev2 months ago

You negotiate the header to find the video length, to then issue http get requests with the offset to the timestamp. Sometimes there’s an API that cuts with ffmpeg and returns the buffer. Sometimes you just need to fetch the raw bytes between offset+0 and offset+n.

brendami-82 months ago

How do you stream a timestamp?

bryanrasmussen2 months ago
indigodaddy2 months ago

Assuming we could uv run/tool install this or whatever is the best quick/easy way with uv?

nemoniac2 months ago

uvx cinecli search "star wars"

philonoist2 months ago

Hopefully there is a Libgen version of this.

G_o_D2 months ago

Terrarium TV Was OG which gave rise to forks like corn Time, Cinema APK, TeaTV, BeeTv

backtogeek2 months ago

looks pretty cool, will add it to the never ending list of stuff to test

samsep10l2 months ago

leave a feedback folks:|

cfcfcf2 months ago

Perhaps consider a public domain film for the demo?

https://en.wikipedia.org/wiki/List_of_films_in_the_public_do...

brrrrrm2 months ago

looks cool! one bit of feedback: make your demo gif get to the point faster. either practice typing a bit quicker or speed it up 2x for the typing section

froddd2 months ago

Or use a terminal recorder to generate it:

https://github.com/orangekame3/awesome-terminal-recorder

samsep10l2 months ago

oh my god , i have fcking updated my demo.gif

get outta here !

g947o2 months ago

Might want to add a disclaimer/warning and/or add additional confirmation/wording before downloading. You don't want your user to go to jail because of a mistake that could be avoided: https://news.ycombinator.com/item?id=46364645

shlip2 months ago

Great tool I would have loved back when I watched movies :) Could the same be done for music ?

vibesareoff2 months ago

>Use it. Fork it. Improve it.

These———LLM———slop———READMEs———make———me———vomit.

latexr2 months ago

The emoji everywhere is what does it for me. Emoji on every title. Emoji on every item of a list. The same ones over and over. So much visual noise. They’re used like a deficient visual crutch.

mr_mitm2 months ago

I always tell my LLMs: "Try not to sound like an LLM. And no emojis!"

Works alright.

shaky-carrousel2 months ago

Most boring part of developing is writing docs. I see it as boilerplate. If you don't like it, you're free to open a PR.

vibesareoff2 months ago

The whole repo is fucking boilerplate.

_zoltan_2 months ago

Get used to it. Nobody will write readmes by hand. I've always hated it and now I'll just let the LLM write it.

thinkingemote2 months ago

It's certainly a sign of something. Not positive at best neutral. As you say it's at best an indication that the author doesn't like writing.

Could it be an indication that the author didn't write the actual code? Is it a sign that the author doesn't really care that much about their project and furthermore could that be a sign that the project is also be be valued by us as much as the author? Maybe the code quality and documentation is less important than the utility. After all many of us don't like writing tests for code!

Perhaps but perhaps we just need to get used to these signs too and get over it.

samsep10l2 months ago

[flagged]

nurettin2 months ago

It used to be "don't try to outsmart the compiler", I'm waiting for the time people start saying the same thing about LLMs.

rvz2 months ago

"you're absolutely right!"

KeplerBoy2 months ago

Then get some freaking taste in READMEs. We can guide the LLMs to better results.

latexr2 months ago

This argument is getting old. Just because you don’t like something, it doesn’t mean everyone agrees and will take the same shortcuts you do. Fortunately not everyone in the world has the same disregard for their own work, and many of us understand the signal it sends when you’re unwilling to even write your own instructions.

If you want your READMEs sloppily written by LLMs, that’s your prerogative. Just like it’s the prerogative of everyone visiting your repo and bumping into a slop README to decide if they want to even give your tool a second look before abandoning it.

Slop READMEs suggest slop code. Soon everyone who’ll even look at your code are other sloppers and (if it ever gets popular) malicious actors who’ll exploit it in an afternoon because no users understand anything the code does.

_zoltan_2 months ago

the world is moving towards this, so all the naysayers will be dinosaurs :-)

samsep10l2 months ago

[flagged]

samsep10l2 months ago

[flagged]

seyz2 months ago

I honestly couldn't tell if the GIF was lagging or if that's the actual typing speed. I give lessons to help reach double digit WPM if you're interested

mlrtime2 months ago

Came here for this comment, that was the slowest video ever hah. Couldn't watch till the end.

Also OP, you have a pip update!

samsep10l2 months ago

[flagged]

nmstoker2 months ago

Yes, this seems something that would be so easy to get right.

Not to take away from the achievement of this repo but no one benefits from a recording where the person doing it hasn't decided up front what they're going to demo and then ponders if they type magnet or just delete it and go with the default. If someone has gone to this much effort with a project, surely they can do a few fun throughs, till they can demo it smoothly. Sure, leave pauses, for people to follow what's actually happening but don't draw out the typing, that's just painful!

samsep10l2 months ago

wow , you tryna fck me or what!

nmstoker1 month ago

>> Would love feedback from terminal + Python folks

godelski2 months ago

Ironically their GitHub profile links to their monkeytype profile. But really, they just need to learn some basic ffmpeg...

samsep10l2 months ago

[flagged]

orliesaurus2 months ago

W for pirates

mikalauskas2 months ago

This is just a yts API wrapper

Datagenerator2 months ago

Thank you for creating this!

tinuviel2 months ago

YSK there is a (seemingly famous) subreddit named eyeblech that is pretty graphic/NFSW.

notachatbot1232 months ago

PSA: It is NSFL, don't be curious and ruin your day.

Dilettante_2 months ago

I assume OP knows what the word they use as their alias means?

samsep10l2 months ago

[flagged]

Dilettante_1 month ago

Maybe? What obvious thing am I missing here?

g947o2 months ago

I'm confused -- how is that related to the topic here?

herghost2 months ago

the linked Github repo shares the name

godelski2 months ago

[flagged]

cachius2 months ago

This community was banned for repeatedly violating Reddit's Moderator Code of Conduct.

zwnow2 months ago

So people cant name their project in a way cuz of some reddit gooners? Fuck reddit lol

kiddico2 months ago

Not that kind of nsfw.

zwnow2 months ago

Maybe nsfl would have been more fitting then

samsep10l2 months ago

[flagged]

0nabilbk2 months ago

Great Job, Love the idea

0x4572 months ago

Torrenting without seeding should be a crime.

jklein112 months ago

Depending on the content you are torrenting it might be a crime. That goes for Torrenting while seeding too though

0x4571 month ago

I'm aware of the current state of things. I was making a joke out of frustration with 99% of torrent participators not having the entire movie to seed and leaving seeding as soon as they stopped watching.

dcreater2 months ago

Looks vibe coded.

backtogeek2 months ago

Probably is, nice that people who do other things apart from learning to code all day can get their ideas out of their heads.

dcreater1 month ago

Not so nice that those ideas are not production ready i.e. well tested and validated. Leading to all sorts of issues and headaches for the unsuspecting customer

theshrike791 month ago

Do you expect every public github repo to be "production ready"?

I think I have to take every single of mine down then, they're all made for me and do what I need them to do. There's zero consideration for "production" of any kind. It works on my machine and might work on yours.

dcreater1 month ago

If the repo is making releases on its public page, then yes, that literally implies production ready.

behnamoh2 months ago

does it violate ISP terms (like at&t)? how to make it less obvious to them?

Barathkanna2 months ago

the tool itself doesn’t change anything from the ISP’s perspective. It just fetches metadata and opens magnet links. What matters is what you download, where you live, and how your torrent client behaves, not whether you clicked the magnet in a browser or a terminal.

g947o2 months ago

I think the issue is the lack of disclaimer/warnings in the CLI, unlike what most torrent sites do. These sites are very considerate, e.g. for YTS

> Warning! > > If you are not using a VPΝ already: Accessing and Playing Torrents on a Smartphone is risky and dangerous. You may be in [City, Country] and using: () . Your IP is [IP] . We strongly recommend all users protecting their device with a VPΝ.

I couldn't find anything in the CLI, at least from that gif.

Someone who is new or less "experienced" in this might not be aware that they need to use a VPN or similar, since the CLI makes it so easy to search and download. Even you are an experienced user, you may misread and start torrenting by mistake before connecting to VPN.

One could argue this is a serious bug.

samsep10l2 months ago

[flagged]

caminante2 months ago

The subject is movies (cough copyrighted), not Linux distros.

This is an important caveat to raise for someone experimenting.

To your point, it's the upload that gets you in trouble in the US (assuming possession is not illegal in itself)

haunter2 months ago

Yes, it’s just a plain CLI access to YTS torrents

    BASE_URL = "https://yts.lt/api/v2"
samsep10l2 months ago

kinda , yeah - sickos

welferkj2 months ago

Standard precautions apply when using the internet while under authoritarian jurisdictions.

caminante2 months ago

>authoritarian

Copyright is widely adopted even in the most liberal democracies.

welferkj1 month ago

But using the modern affordances of coercive states to benefit copyright holders is very much non-standard in the free world. Only a few countries do it to personal end-users to any meaningful degree.

dewey2 months ago

That depends entirely on what you download, the country you are in and your ISP.