├── .dockerignore ├── .eslintrc.json ├── .gitignore ├── Dockerfile ├── README.md ├── dist ├── ZooqleClient.js ├── ZooqleClient.js.map ├── convertTorrentsToStreams.js ├── convertTorrentsToStreams.js.map ├── index.js └── index.js.map ├── package.json ├── src ├── ZooqleClient.js ├── convertTorrentsToStreams.js └── index.js ├── static ├── bg.jpg ├── logo-white.png ├── logo.png └── screenshot_movie.jpg ├── tests ├── ZooqleClient.test.js ├── index.test.js ├── moviePageAuthorized.html ├── moviePageGuest.html └── showResponse.html └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | ./** 2 | !dist/** 3 | !static/** 4 | !package.json 5 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "eslint:recommended", 4 | "plugin:import/errors", 5 | "plugin:jest/recommended" 6 | ], 7 | "parser": "babel-eslint", 8 | "parserOptions": { 9 | "ecmaVersion": 7, 10 | "sourceType": "module", 11 | "codeFrame": false 12 | }, 13 | "env": { 14 | "es6": true, 15 | "node": true, 16 | "jest": true 17 | }, 18 | "rules": { 19 | "no-constant-condition": "off", 20 | "no-empty": ["error", { 21 | "allowEmptyCatch": true 22 | }], 23 | "array-callback-return": "error", 24 | "curly": "error", 25 | "dot-location": ["error", "property"], 26 | "eqeqeq": "error", 27 | "no-alert": "error", 28 | "no-caller": "error", 29 | "no-eval": "error", 30 | "no-extend-native": "error", 31 | "no-floating-decimal": "error", 32 | "no-implicit-globals": "error", 33 | "no-implicit-coercion": "error", 34 | "no-implied-eval": "error", 35 | "no-iterator": "error", 36 | "no-loop-func": "error", 37 | "no-multi-spaces": "error", 38 | "no-proto": "error", 39 | "no-return-assign": "error", 40 | "no-return-await": "error", 41 | "no-self-compare": "error", 42 | "no-sequences": "error", 43 | "no-throw-literal": "error", 44 | "no-useless-call": "error", 45 | "no-useless-concat": "error", 46 | "no-useless-escape": "error", 47 | "no-useless-return": "error", 48 | "no-void": "error", 49 | "no-warning-comments": "warn", 50 | "no-with": "error", 51 | "prefer-promise-reject-errors": "error", 52 | "wrap-iife": "error", 53 | "yoda": "error", 54 | "no-undef-init": "error", 55 | "no-use-before-define": [ 56 | "error", 57 | { 58 | "functions": false, 59 | "classes": false, 60 | "variables": true 61 | } 62 | ], 63 | "global-require": "error", 64 | "array-bracket-spacing": "error", 65 | "block-spacing": "error", 66 | "brace-style": "error", 67 | "camelcase": "error", 68 | "comma-dangle": ["error", { 69 | "arrays": "always-multiline", 70 | "objects": "always-multiline", 71 | "imports": "never", 72 | "exports": "never", 73 | "functions": "never" 74 | }], 75 | "comma-spacing": "error", 76 | "comma-style": "error", 77 | "computed-property-spacing": "error", 78 | "consistent-this": ["error", "self"], 79 | "eol-last": "error", 80 | "func-call-spacing": "error", 81 | "indent": ["error", 2, { 82 | "SwitchCase": 1 83 | }], 84 | "jsx-quotes": "error", 85 | "key-spacing": "error", 86 | "keyword-spacing": "error", 87 | "linebreak-style": "error", 88 | "lines-around-directive": "error", 89 | "max-depth": ["error", 4], 90 | "max-len": ["error", { 91 | "code": 80, 92 | "ignoreStrings": true 93 | }], 94 | "max-params": ["error", 5], 95 | "new-cap": "error", 96 | "new-parens": "error", 97 | "no-lonely-if": "error", 98 | "no-mixed-operators": "error", 99 | "no-multi-assign": "error", 100 | "no-multiple-empty-lines": ["error", { 101 | "max": 2, 102 | "maxEOF": 0 103 | }], 104 | "no-nested-ternary": "error", 105 | "no-tabs": "error", 106 | "no-trailing-spaces": "error", 107 | "no-unneeded-ternary": "error", 108 | "no-whitespace-before-property": "error", 109 | "object-curly-spacing": ["error", "always"], 110 | "one-var-declaration-per-line": "error", 111 | "operator-linebreak": ["error", "after"], 112 | "quote-props": ["error", "as-needed"], 113 | "quotes": ["error", "single"], 114 | "semi": ["error", "never"], 115 | "space-before-blocks": ["error", "always"], 116 | "space-before-function-paren": ["error", { 117 | "anonymous": "never", 118 | "named": "never", 119 | "asyncArrow": "always" 120 | }], 121 | "space-in-parens": "error", 122 | "space-infix-ops": "error", 123 | "space-unary-ops": ["error", { 124 | "words": true, 125 | "nonwords": false 126 | }], 127 | "spaced-comment": "error", 128 | "template-tag-spacing": "error", 129 | "unicode-bom": "error", 130 | "arrow-parens": "error", 131 | "arrow-spacing": "error", 132 | "generator-star-spacing": ["error", "after"], 133 | "no-class-assign": "error", 134 | "no-confusing-arrow": "error", 135 | "no-duplicate-imports": "error", 136 | "no-new-symbol": "error", 137 | "no-useless-computed-key": "error", 138 | "no-useless-constructor": "error", 139 | "no-var": "error", 140 | "prefer-arrow-callback": ["error", { 141 | "allowNamedFunctions": true 142 | }], 143 | "prefer-rest-params": "error", 144 | "prefer-template": "error", 145 | "rest-spread-spacing": "error", 146 | "symbol-description": "error", 147 | "template-curly-spacing": "error", 148 | "yield-star-spacing": "error", 149 | "import/newline-after-import": ["error", { 150 | "count": 2 151 | }], 152 | "import/order": ["error"] 153 | } 154 | } 155 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | wip 2 | node_modules 3 | .DS_Store 4 | Thumbs.db 5 | .idea 6 | .vs 7 | .vscode 8 | *.log 9 | .npmrc 10 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:alpine 2 | 3 | WORKDIR /var/stremio_addon 4 | # The exact files included are controlled by .dockerignore 5 | COPY . . 6 | RUN npm install --only=prod --no-package-lock 7 | 8 | CMD node dist/index.js 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |


3 | 4 |


5 |
6 |

Zooqle Addon for Stremio

7 | 8 | This is a [Stremio](https://www.stremio.com/) addon that provides movies and series indexed by [Zooqle](https://zooqle.com/) from RARBG, KAT, YTS, MegaTorrents and other torrent trackers. 9 | 10 | 11 | ## Features 12 | 13 | - Includes _36,000+_ movies and _1,600+_ series from _2,200+_ trackers 14 | - Many videos include audio tracks in different languages 15 | - Formats stream titles in a user-friendly way (see the screenshot) 16 | - Works in Stremio v4 and v3.6 17 | - Supports Docker out of the box 18 | - Caches results in memory or Redis 19 | - Limits the number of concurrent requests to avoid overloading the API 20 | - Supports HTTPS proxy 21 | - Configurable via environment variables 22 | - Prints a nicely formatted status message when run 23 | 24 | 25 | ## Running 26 | 27 | The addon is a web server that fetches torrent files from Zooqle, which indexes them from various trackers. It uses environment variables for configuration and includes a handful of npm scripts to run with or without Docker. 28 | 29 | __IMPORTANT:__ it requires a Zooqle account to scrape magnet links from movie pages. Before starting the addon, register on [Zooqle](https://zooqle.com) and then set the `STREMIO_ZOOQLE_USERNAME` and `STREMIO_ZOOQLE_PASSWORD` environment variables to the corresponding values. 30 | 31 | To install and quickly start the addon, do: 32 | 33 | ```bash 34 | git clone https://github.com/naughty-doge/stremio-zooqle 35 | cd stremio-zooqle 36 | yarn # or `npm install` 37 | yarn start # or `npm start` 38 | ``` 39 | 40 | By default the server starts on `localhost:80` in development mode and doesn't announce itself to the Stremio addon tracker. To add the addon to Stremio app, open its endpoint in the browser and click the Install button, or enter the URL in the app's Addons section. 41 | 42 | In order for the addon to work publicly, the following environment variables must be set in addition to the account variables: 43 | - `NODE_ENV` to `production` 44 | - `STREMIO_ZOOQLE_ENDPOINT` to a public URL of the addon 45 | - `STREMIO_ZOOQLE_ID` to a non-default value 46 | 47 | Note: since this addon scrapes pages, it is recommended to run it behind a proxy and use Redis caching. 48 | 49 | 50 | ## Development 51 | 52 | The code is written in ES7 and then transpiled with Babel. It is covered by a suite of Jest tests, and the staged files are automatically linted with ESLint. The transpiled files are included in the repository: this makes for quicker start and eases deployment to different environments such as Docker and Heroku. 53 | 54 | 55 | ## npm scripts 56 | 57 | Each of these scripts can be used with `yarn 18 | 19 | 160 | 169 | 170 | 171 | 479 |
480 |
481 |
530 |
531 |
532 |
533 |
534 |

535 | 536 | Three Billboards Outside Ebbing, Missouri (2017) 537 |

538 |
Crime / Drama • 115 minutes 539 | 540 | 541 | 542 | 543 | 544 |  8.4/10 545 | 546 |
547 |
548 | Starring: 549 | Frances McDormand 550 | Woody Harrelson 551 | Sam Rockwell 552 | John Hawkes 553 | Peter Dinklage 554 | Abbie Cornish 555 | Lucas Hedges 556 | Caleb Landry Jones 557 | and others. 558 |
559 | Director: 560 | Martin McDonagh 561 | Writer: 562 | Martin McDonagh 563 | Director of Photography: 564 | Ben Davis 565 | Producer: 566 | Graham Broadbent 567 | Martin McDonagh 568 | Peter Czernin 569 | Editor: 570 | Jon Gregory 571 | Original Music Composer: 572 | Carter Burwell 573 | 574 |
575 |
576 |
577 | Released • November 10, 2017 578 |
579 |

580 | A mother personally challenges the local authorities to solve her daughter's murder when they fail to catch the culprit. 581 |

582 |
583 |
584 |
585 |
Ultra 2 586 | 587 | 588 |
1.Три билборда на границе Эббинга, Миссури / Three Billboards Outside Ebbing, Missouri (2017) BDRemux 2160p от ExKinoRay | 4K | HDR | D, A | Лицензия
5.1 en,ru,uk
53.1 GB
2 months
87
28
2.Three Billboards Outside Ebbing Missouri 2017 (2160p x265 10bit S89 Joy)
5.1 ar,cs,da,de,el,en,es,fa,fi,fr
5.4 GB
2 months
10
9
1080p 39
1.Three Billboards Outside Ebbing Missouri 2017 1080p BluRay H264
2.2 GB
3 months
2 K
250
2.Three Billboards Outside Ebbing, Missouri (2017) (1080p) [YTS AM]1
1.8 GB
3 months
1 K
171
3.Three Billboards Outside Ebbing Missouri 2017 1080p BluRay x264-
5.1 en
8.8 GB
3 months
311
43
4.Three Billboards Outside Ebbing Missouri 2017 1080p WEB-DL X2
5.1 en
3.7 GB
3 months
255
42
5.Three Billboards Outside Ebbing Missouri 2017 1080p AMZN WEBRip DDP5 1 x264-SiGMA
5.1 en
5.1 GB
3 months
118
41
+ 34 torrents  
720p 61
1.Three Billboards Outside Ebbing, Missouri (2017) [720p]
847 MB
3 months
951
64
2.Три билборда на границе Эббинга, Миссури / Three Billboards Outside Ebbing, Missouri (2017) BDRip 720p | D
5.1 en,ru
5.0 GB
3 months
535
25
3.Three Billboards Outside Ebbing Missouri 2017 720p WEB-DL DD5 1 H264
5.1 en
3.6 GB
3 months
484
90
4.Three Billboards Outside Ebbing Missouri 2017 720p BluRay H264 AAC
1.4 GB
3 months
193
207
5.Three Billboards Outside Ebbing Missouri 2017 720p WEB-DL XviD AC3
5.1
3.2 GB
3 months
128
155
+ 56 torrents  
Std 70
1.Three Billboards Outside Ebbing,Missouri 2017 DVDScr XVID AC32
2.0
1.5 GB
4 months
3 K
493
2.Три билборда на границе Эббинга, Миссури / Three Billboards Outside Ebbing, Missouri (2017) HDRip | Лицензия
5.1
1.5 GB
3 months
2 K
34
3.Три билборда на границе Эббинга, Миссури / Three Billboards Outside Ebbing, Missouri (2017) BDRip-AVC от HELLYWOOD | Лицензия
5.1 ru
1.5 GB
2 months
328
50
4.Three Billboards Outside Ebbing,Missouri 2017 DVDSCR
2.0 en
752 MB
4 months
282
70
5.Three Billboards Outside Ebbing Missouri 2017 DVDScr x264 AC3-M2
2.0 en
984 MB
4 months
256
35
+ 65 torrents  
589 | 592 |

A.K.A. 593 | AR: Tres Anuncios por un Crimen  594 | BG: Три билборда извън града  595 | BR: Três Anúncios Para Um Crime  596 | CN: 三塊廣告牌  597 | CO: Tres anuncios por un Crimen  598 | ES: Tres anuncios en las afueras  599 | FR: 3 Billboards : Les Panneaux de la vengeance  600 | HK: 廣告牌殺人事件  601 | HU: Három óriásplakát Ebbing határában  602 | IT: Tre manifesti a Ebbing, Missouri  603 | KR: 쓰리 빌보드  604 | PL: Trzy billboardy za Ebbing, Missouri  605 | PT: Três Cartazes à Beira da Estrada  606 | RU: Три биллборда на границе Эббинга, Миссури  607 | TR: Üç Billboard Ebbing Çıkışı, Missouri  608 | UA: Три білборди на кордоні Еббінга, Міссурі  609 |

610 |
611 | 1033 |
1034 |
1035 | 1045 | 1384 | 1393 | 1398 | 1506 | 1597 | 1601 | 1602 | 1615 | 1616 | -------------------------------------------------------------------------------- /tests/showResponse.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |
1.The Simpsons 20x14 (PDTV-RiVER) [VTV] [eztv]
2.0  
175 MB
long ago
2
1
2.The Simpsons S20E14 HDTV XviD-BiA [eztv]
2.0  
175 MB
long ago
1
4
7 | --------------------------------------------------------------------------------