Giter Site home page Giter Site logo

amilajack / popcorn-time-desktop Goto Github PK

View Code? Open in Web Editor NEW
465.0 24.0 110.0 42.84 MB

๐Ÿฟ ๐Ÿ• ๐ŸŽž A Modern Popcorn Time Client

License: MIT License

JavaScript 29.83% HTML 0.53% Shell 1.79% TypeScript 63.47% SCSS 4.37%
popcorn time movie client

popcorn-time-desktop's Introduction

logo
Popcorn Time

A Modern and Experimental Popcorn Time Client




  • โฉ Performance: Significantly faster than other clients

  • โœ… Cross Platform: Works on Mac, Windows, and Linux

  • ๐Ÿ“ฃ Casting: Supports casting to chromecast devices

  • ๐ŸŽž Subtitles: Subtitle integration for movies

Installation:

  • I am a tester: Download the latest build from the releases section.

  • I am a developer: Compile the project with the installation steps below.

Requirements:

Local Setup:

git clone https://github.com/amilajack/popcorn-time-desktop.git
cd popcorn-time-desktop

# ๐Ÿ’ก For casting support, you will need to satisfy mdns's requirements:
# For windows install bonjour: https://support.apple.com/downloads/bonjour_for_windows
# For linux, make sure you have these dependencies installed with apt-get:
# https://github.com/amilajack/popcorn-time-desktop/blob/v1.3.0/.travis.yml#L24-L35

# Install dependencies
# Have a cup of coffee โ˜•๏ธ this might take a while
yarn

# Customize Build
# Feel free to enable flags and configs in the `.env` file
vi .env

# Developement build
yarn dev

# Production build
yarn package

Contributing:

Please see the contributing guide

Roadmap:

See the roadmap for the full list.

Designs:

Home Page:

Home Page

Movie Page:

Movie page

popcorn-time-desktop's People

Contributors

akovalyov avatar amilajack avatar catalinmiron avatar chentsulin avatar crucialfelix avatar davej avatar domasx2 avatar epilande avatar g1ibby avatar gitter-badger avatar jhen0409 avatar kilian avatar lmatteis avatar longlivechief avatar matbush avatar olegakbarov avatar pascalw avatar pedroabreu avatar renovate-bot avatar renovate[bot] avatar ryanatvicesoftware avatar shea256 avatar thangngoc89 avatar the4dpatrick avatar tsemerad avatar ttacon avatar vramana avatar vzamanillo avatar yeti-or avatar z11h 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

popcorn-time-desktop's Issues

.exe file

When will the .exe file for testing.

Remove jQuery dependency and use more efficiency DOM selector

Hi,

First of all, thanks for working on this. After looking around your codebase, I have some suggestions:

  • Remove jQuery. I don't see why you need jQuery in /app/api/Player.js .
  • Don't use document.querySelector for everything, for ex:
    • document.querySelector('.plyr') can be document.getElementsByClassName('plyr').first. I admit it's more to type but if you do some benchmark, you'll see the different between them

I can send a PR if you're interested in this

Subtitles slow down playback start time

The slow down the download time of movies. They have a pretty noticeable impact, since subtitles are downloaded at a higher priority than the movie. The current implementation also does not start the movie until the subtitles have been download.

A possible solution to this is to asynchronously add the subtitles instead synchronously waiting on them.

Add Issue and PR templates

I have contributed to FreeCodeCamp and they have a very nice Issue and PR templates.

And when PRs are merged, the corresponding Issue mentioned in the template is closed. I don't know how it happens, but somewhere it was mentioned that GitHub does it automatically. Do check out about it.

And Issue template is very useful. You can ask if the person is a user/tester/ developer and you can ask the version of the App he/she is using, for testers(or) the branch he/she is on, for developers and ask them the issue's description, their OS details and then may be even a screenshot. You can add more to the template. The above was was just a suggestion. And yeah, this will make the issue more elaborate and you won't have to ask redundant questions to the people who report the issues.

Audio not playing for certain videos

I've noticed that certain movies or tv shows do not play sound corrrectly. This may be because of the file format of certain torrents. Possible places of error: electron support for mkv, peerflix

Multi-lang subtitles

Currently, this feature doesn't work correctly. It fetches subtitles for the correct show/movie but it retrieves subtitles with different starting times. This means that movies and subtitles are usually out of sync.

Waiting on vankasteelj/opensubtitles-api#16

Some video codecs are not supported

Not sure if this is a known issue or not but the audio works fine when using VLC instead. Could it be the video format? (Only happens on some videos)

If you want to test or anything I was trying to watch: South Park > Season 18 > Episode 2 (720p)
I'm also using the latest public beta version 0.05 on MacOS Sierra.

Thanks for all you do. Super hyped for the next release, this app is great!

Static port for serving files is not good

@amilajack I see that the port 9090 has been used as a static port for serving the video, srt and the image files. But what happens if the port has already been occupied by some other software or by the user ( considering if the user is a developer running a web server or something ).

I think it's a bad idea to use a static port. And even if the user is a developer, he/she would have a hard time finding out why the video doesn't play in the application. I found out that the files are being served through a local server when I opened up a video in VLC. And VLC said "localhost:9090" at the place where subtitles are shown.

I started experimenting and found out that only a static port is used and there is no notification shown in the application saying some error occurred. It just says "Loading torrent..." or it shows the play symbol in the default player, but of course, doesn't play, since I was already running a dummy server at port 9090 to do the testing.

And from my testing, I see that the local server stops ( if it was already started ) when I go back to the main page of the application. And it starts again when I click "Start" in the movie pages, didn't check for TV Shows. Assuming something similar happens there.

A decent fix would be - whenever the start is gonna start, look for open ports and start the server and listen with that port.

Shall I take this issue up and fix it ?

Any plan for adding subtitles ?

On MacOs Sierra, the official popcorn time doesn't work. This fork is working and starting to have faith on it, since the original popcorn time using custom made NWjs which is seem buggy on Sierra.
I guess this version of popcorn time will be a good alternative.

Anyway. Any plan for adding subtitle support ?

Cannot 'npm run dev'

When the electron application starts i get a 404 not found for bundle.js

I'm using Windows 10 and Node version 6.5

Development Issue : Not able to fetch torrents while using development build

@amilajack Hey, I got the App's src files and npm packages and modified some source code and finally did

npm run dev

and was trying to watch a movie. But all it said was "Fetching torrents". Later, I discarded all my changes and tried it all again and still wasn't able to get the torrents loaded.

I was confused, and then I deleted everything and got all the src files again from scratch and redid everything. Still wasn't able to load the torrents. Finally to be sure, I packaged the App using

npm run package

and it packaged the App in the releases directory and when I run the packaged App, I am able to fetch the torrents and the "Start 720p" and other buttons get enabled. I am pretty confused now.

What have I done wrong ? Is it something about the .env file ? But I just copied it from the .env.example file and never changed it. And I think it looks fine.

And when I do API tests using npm run test-api, a lot of tests are failing, including "getting torrents and their magnets for 720p and 1080p" test. I am attaching the images of the test over here.

Image 1 :
1

Image 2 :
2

Image 3 :
3

Image 4 :
4

Image 5 :
5

Please do help me with this!

Linux binary for latest release

There is only a mac binary there. I tried to build linux x86_64 but failed miserably.

assert.js:89
  throw new assert.AssertionError({
  ^
AssertionError: Current node version is not supported for development, expected "4.5.0" to satisfy "6.x".
    at Object.<anonymous> (/tmp/popcorn-time-desktop/node_modules/fbjs-scripts/node/check-dev-engines.js:39:3)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:974:3

I'm guessing here that probably is the version of nodejs of my distro... but anyway, I'm just a simple user. So, could you please add some binary for linux x86_64?

Subtitles

I can't find any option to add subtitles. Drag/Drop subtitle file is also not working. (I am on 16A254g)

0.0.6: Can't click on other episodes

I enter a show, click a different episode or season... nothing happens. I can't switch. The ep or season aren't clickable at all.

On latest 0.0.6 alpha
MacOS Sierra

WebChimera.js Linux support/fallback

I'm having a hard time setting the dev environment on both Windows and ElementaryOS.

The install stucks at this step:

> [email protected] postinstall /home/khoa/web/popcorn/node_modules/wcjs-prebuilt
> node install.js

Fetching WebChimera prebuilt for Electron: 
WebChimera version: v0.2.6 
Electron version: v1.2.6 
Platform: linux 
Arch: x64 
Target dir: ./bin

Looking for WebChimera download at https://api.github.com/repos/RSATom/WebChimera.js/releases/tags/v0.2.6

WebChimera.js_electron_0.33.9_ia32_win.zip  doesn't include VLC 
WebChimera.js_electron_0.37.6_ia32_win.zip  doesn't include VLC 
WebChimera.js_electron_0.37.6_x64_osx.zip  doesn't include VLC 
WebChimera.js_electron_0.37.8_ia32_win.zip  doesn't include VLC 
WebChimera.js_electron_0.37.8_x64_osx.zip  doesn't include VLC 
WebChimera.js_electron_1.2.6_ia32_win.zip  doesn't include VLC 
WebChimera.js_electron_1.2.6_x64_osx.zip  doesn't include VLC 
WebChimera.js_electron_1.2.6_x64_win.zip  doesn't include VLC 
WebChimera.js_nw_0.15.4_ia32_win.zip  doesn't include VLC 
WebChimera.js_nw_0.15.4_x64_osx.zip  doesn't include VLC 
WebChimera.js_nw_0.15.4_x64_win.zip  doesn't include VLC 
WebChimera.js_v0.2.6_electron_v0.33.9_VLC_v2.2.4_ia32_win.zip  not matching environment 
WebChimera.js_v0.2.6_electron_v0.37.6_VLC_v2.2.4_ia32_win.zip  not matching environment 
WebChimera.js_v0.2.6_electron_v0.37.6_VLC_v2.2.4_x64_osx.tar.gz  not matching environment 
WebChimera.js_v0.2.6_electron_v0.37.8_VLC_v2.2.4_ia32_win.zip  not matching environment 
WebChimera.js_v0.2.6_electron_v0.37.8_VLC_v2.2.4_x64_osx.tar.gz  not matching environment 
WebChimera.js_v0.2.6_electron_v1.2.6_VLC_v2.2.4_ia32_win.zip  not matching environment 
WebChimera.js_v0.2.6_electron_v1.2.6_VLC_v2.2.4_x64_osx.tar.gz  not matching environment 
WebChimera.js_v0.2.6_electron_v1.2.6_VLC_v2.2.4_x64_win.zip  not matching environment 
WebChimera.js_v0.2.6_nw_v0.15.4_VLC_v2.2.4_ia32_win.zip  not matching environment 
WebChimera.js_v0.2.6_nw_v0.15.4_VLC_v2.2.4_x64_osx.tar.gz  not matching environment 
WebChimera.js_v0.2.6_nw_v0.15.4_VLC_v2.2.4_x64_win.zip  not matching environment 

No WebChimera release found matching your environment

Did you setup an dev environment on ElementaryOS ? Any advice?

Not listing first season on sidebar

Sometimes a show with multiple seasons, the first season's episode list loads but you can't see a link for season 1 on the sidebar, only season 2 and next.

PT 0.0.5-alpha
Mac OS Sierra Golden Master

Can't watch next episode

After finishing an TV episode, the next one doesn't load up correctly. It either always loads the one I just watched when switching to a new ep, or it loads only audio, with placeholder image on the viewer.

PT 0.0.5-alpha
Mac OS Sierra Golden Master

Broken Styles

I cloned the repo and tried to test out the app, but I found that all the styles are broken like so:

image
and
image

Thanks!

PR: Add e2e tests for torrent playback

Currently, torrent playback isnt tested at all. (capture-frame)[https://github.com/feross/capture-frame] will allow us to easily capture the video playback in intervals and diff the images to see if they movie is in fact playing.

PR: Transition towards Flow

Here are my reasons/thoughts on transitioning towards flow.

Pros:

  1. It embraces FP (functional programming): Functional languages require strong type systems. 'undefined' and 'null' do no exist in functional languages. Removing or at least avoiding these values can provide us with some guarantees that we won't get runtime errors. The unspoken direction of out development stack and environment is towards one that is similar to Elm, which is arguably the best front-end development experience available at the moment. Elm guarantees no runtime errors. One of the ways that Elm guarantees this is because it is a proper functional language that has a strong type system.
  2. Strong types will standardized in ES7/8: It is a widely accepted that future versions of Ecmascript will embrace static typing. Embracing static typing now will prepare us for what is already coming.
  3. Possible Performance optimizations: Javascript's dynamic nature comes at the cost of performance. VM's can significantly improve their optimization by using types as heuristics. Emscripten is a good example of this.

Cons:

1. Learning Barrier: Ideally, people that know standard Javascript should be able to contribute. Flow isn't that hard to learn and its pretty easy to learn.

Note that adding Flow support is a lower priority than enabling all the FP eslint rules

Thoughts?

Redesign

An initial base design for release 0.0.6

The gray represents cover images of movies.

screen shot 2016-08-19 at 9 39 25 am

Thoughts?

Unable to find Save Location

In previous versions, the data was either saved in
var/folders/tx....
OR
tmp/PopcornTime

In v0.0.5, I don't see them there.

Not able to see "Shows" section in Dev build and sometimes Tests for them behave strangely

I am in the release-0.0.6-alpha branch. I have built using it and I have noticed that the Tv Shows section wouldn't show up, instead only the Movies section would be visible even after clicking Shows. But when I did testing using npm run test, somehow my tests passed a few times, but a while ago they didn't pass. An error showed up and said the Shows section isn't shown, which is true.

And after trying the test command a few more times, the tests finally started to pass and the Shows section actually showed up while doing npm run test.

What is this strange behavior ? And when I package the App, the Tv Shows section is visible perfectly. But that can possible because of Webpack's different environments for production and developement.
But why does this strange behavior happen even within different tests on the Dev build ?

Many images causing slow scroll performance

Retaining all the images that have been loaded into the application can have significant performance implications. Setting the src attribute of an img element to a # may be enough to garbage collect it:

document.getElementById('img').src = "#";

Missing dependency type declarations

We cant run flow with any meaningful effect until we have type declarations for our dependencies. Unfortunately, there currently isn't a programatic way of doing this.

Possible solution: Convert Typescript Definitions to Flow

  • ts.d-to-flow.d. This doesnt seem to have any users or community approval so it doesnt seem like a good choice, unless it works.
  • @sheerun's solution. This probably requires a lot of work and it might not end out working correctly. The facebook team has attempted that but found that it wouldnt work because Flow's typechecking semantics are much stricter than those of Typescript.

Screen Alignment

The cover is not aligned in center. It comes in center in few movies but mostly not. Its uncomfortable to watch like this. Can we make it better?

popcorntime - popcorn time - screen shot 18-aug-2016 1 11 50 am

Thankyou

PR: "No Internet connection available" notification

@amilajack

When I switched off Internet, and opened up the application, it just shows the loading symbol. No notification saying that it was unable to connect to the Internet.

Same thing happens if I switch off the Internet while using the application. I try to scroll, and it just shows that it's loading and it goes on infinitely. No notification of "No Internet connectivity".

I think there should be some notification saying that there are some Internet connectivity issues.

node-castv2 incompatible with webpack

This line is holding back support for external playback methods (vlc, dlna, chromecast, airplay). When webpack bundles, the files loaded through ProtoBuf.loadProtoFile are not included because they are not imported natively through require. So in this cannot be solved by Webpack's ContextReplacementPlugin.

A possible solution that I have this is extremely hacky.

First, use good old sed to change the path this line to this:

var builder = ProtoBuf.loadProtoFile("./cast_channel.proto");

at postinstall time (in postinstall.js).

Note that this can also easily be done in a fork, which I've already done.

Then, we'll need to copy that file and its dependencies that are not bundled with webpack ('cast_channel.proto'). They'll need to be moved to the app/dist directory.

Migrate `Butter`, `Player`, `Config`, and `Torrent` to main process

When using this method, show torrents are almost always guaranteed but it retrieving complete show torrents uses a significant amount of memory and causes the main process to drop frames.

Possible solutions include

  • moving this to a separate thread using childProcess
  • Using electron's 'main process' and send messages through IPC

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.