AlekSystem Workflow Detail

Search and download torrents using transmission-daemon Workflow Solution

Search and download torrents using transmission-daemon

Ok google download "movie name" I develop this automation to improve my quality of life in handling torrents in my media-center.

Rank 58 Verified workflow

Workflow overview

Why this workflow matters

Improves internal consulting operations and productivity. Relevant for managed services and support workflows.

Ok google download "movie name" I develop this automation to improve my quality of life in handling torrents in my media-center. Goal Automate the search operations of a movie based on its name and trigger a download using your transmission-daemon. Setup Prerequisite Transmission daemon up and running and its authentication method AlekSystem configured self-hosted or with the possibility to add npm package better with docker-compose.yaml Telegram bot credential [optional] Configuration Create a folder where your docker-compose.yaml belongs AlekSystem_dir and proceed in installing the node package. cd ~/AlekSystem_dir npm i torrent-search-api Configuring your docker-compose.yaml file this way. You must include all the dependencies of torrent-search-api. This will let you run the new torrent search node presented in this workflow. version: '3.3' services: AlekSystem: container_name: AlekSystem ports: '5678:5678' restart: always volumes: '~/AlekSystem_dir/.AlekSystem:/home/node/.AlekSystem' '~/AlekSystem_dir/node_modules/@tootallnate:/usr/local/lib/node_modules/@tootallnate' '~/AlekSystem_dir/node_modules/accepts:/usr/local/lib/node_modules/accepts' '~/AlekSystem_dir/node_modules/agent-base:/usr/local/lib/node_modules/agent-base' '~/AlekSystem_dir/node_modules/ajv:/usr/local/lib/node_modules/ajv' '~/AlekSystem_dir/node_modules/ansi-styles:/usr/local/lib/node_modules/ansi-styles' '~/AlekSystem_dir/node_modules/asn1:/usr/local/lib/node_modules/asn1' '~/AlekSystem_dir/node_modules/assert:/usr/local/lib/node_modules/assert' '~/AlekSystem_dir/node_modules/assert-plus:/usr/local/lib/node_modules/assert-plus' '~/AlekSystem_dir/node_modules/ast-types:/usr/local/lib/node_modules/ast-types' '~/AlekSystem_dir/node_modules/asynckit:/usr/local/lib/node_modules/asynckit' '~/AlekSystem_dir/node_modules/aws-sign2:/usr/local/lib/node_modules/aws-sign2' '~/AlekSystem_dir/node_modules/aws4:/usr/local/lib/node_modules/aws4' '~/AlekSystem_dir/node_modules/base64-js:/usr/local/lib/node_modules/base64-js' '~/AlekSystem_dir/node_modules/batch:/usr/local/lib/node_modules/batch' '~/AlekSystem_dir/node_modules/bcrypt-pbkdf:/usr/local/lib/node_modules/bcrypt-pbkdf' '~/AlekSystem_dir/node_modules/bluebird:/usr/local/lib/node_modules/bluebird' '~/AlekSystem_dir/node_modules/boolbase:/usr/local/lib/node_modules/boolbase' '~/AlekSystem_dir/node_modules/brotli:/usr/local/lib/node_modules/brotli' '~/AlekSystem_dir/node_modules/bytes:/usr/local/lib/node_modules/bytes' '~/AlekSystem_dir/node_modules/caseless:/usr/local/lib/node_modules/caseless' '~/AlekSystem_dir/node_modules/chalk:/usr/local/lib/node_modules/chalk' '~/AlekSystem_dir/node_modules/cheerio:/usr/local/lib/node_modules/cheerio' '~/AlekSystem_dir/node_modules/cloudscraper:/usr/local/lib/node_modules/cloudscraper' '~/AlekSystem_dir/node_modules/co:/usr/local/lib/node_modules/co' '~/AlekSystem_dir/node_modules/color-convert:/usr/local/lib/node_modules/color-convert' '~/AlekSystem_dir/node_modules/color-name:/usr/local/lib/node_modules/color-name' '~/AlekSystem_dir/node_modules/combined-stream:/usr/local/lib/node_modules/combined-stream' '~/AlekSystem_dir/node_modules/component-emitter:/usr/local/lib/node_modules/component-emitter' '~/AlekSystem_dir/node_modules/content-disposition:/usr/local/lib/node_modules/content-disposition' '~/AlekSystem_dir/node_modules/content-type:/usr/local/lib/node_modules/content-type' '~/AlekSystem_dir/node_modules/cookiejar:/usr/local/lib/node_modules/cookiejar' '~/AlekSystem_dir/node_modules/core-util-is:/usr/local/lib/node_modules/core-util-is' '~/AlekSystem_dir/node_modules/css-select:/usr/local/lib/node_modules/css-select' '~/AlekSystem_dir/node_modules/css-what:/usr/local/lib/node_modules/css-what' '~/AlekSystem_dir/node_modules/dashdash:/usr/local/lib/node_modules/dashdash' '~/AlekSystem_dir/node_modules/data-uri-to-buffer:/usr/local/lib/node_modules/data-uri-to-buffer' '~/AlekSystem_dir/node_modules/debug:/usr/local/lib/node_modules/debug' '~/AlekSystem_dir/node_modules/deep-is:/usr/local/lib/node_modules/deep-is' '~/AlekSystem_dir/node_modules/degenerator:/usr/local/lib/node_modules/degenerator' '~/AlekSystem_dir/node_modules/delayed-stream:/usr/local/lib/node_modules/delayed-stream' '~/AlekSystem_dir/node_modules/delegates:/usr/local/lib/node_modules/delegates' '~/AlekSystem_dir/node_modules/depd:/usr/local/lib/node_modules/depd' '~/AlekSystem_dir/node_modules/destroy:/usr/local/lib/node_modules/destroy' '~/AlekSystem_dir/node_modules/dom-serializer:/usr/local/lib/node_modules/dom-serializer' '~/AlekSystem_dir/node_modules/domelementtype:/usr/local/lib/node_modules/domelementtype' '~/AlekSystem_dir/node_modules/domhandler:/usr/local/lib/node_modules/domhandler' '~/AlekSystem_dir/node_modules/domutils:/usr/local/lib/node_modules/domutils' '~/AlekSystem_dir/node_modules/ecc-jsbn:/usr/local/lib/node_modules/ecc-jsbn' '~/AlekSystem_dir/node_modules/ee-first:/usr/local/lib/node_modules/ee-first' '~/AlekSystem_dir/node_modules/emitter-component:/usr/local/lib/node_modules/emitter-component' '~/AlekSystem_dir/node_modules/enqueue:/usr/local/lib/node_modules/enqueue' '~/AlekSystem_dir/node_modules/enstore:/usr/local/lib/node_modules/enstore' '~/AlekSystem_dir/node_modules/entities:/usr/local/lib/node_modules/entities' '~/AlekSystem_dir/node_modules/error-inject:/usr/local/lib/node_modules/error-inject' '~/AlekSystem_dir/node_modules/escape-html:/usr/local/lib/node_modules/escape-html' '~/AlekSystem_dir/node_modules/escape-string-regexp:/usr/local/lib/node_modules/escape-string-regexp' '~/AlekSystem_dir/node_modules/escodegen:/usr/local/lib/node_modules/escodegen' '~/AlekSystem_dir/node_modules/esprima:/usr/local/lib/node_modules/esprima' '~/AlekSystem_dir/node_modules/estraverse:/usr/local/lib/node_modules/estraverse' '~/AlekSystem_dir/node_modules/esutils:/usr/local/lib/node_modules/esutils' '~/AlekSystem_dir/node_modules/extend:/usr/local/lib/node_modules/extend' '~/AlekSystem_dir/node_modules/extsprintf:/usr/local/lib/node_modules/extsprintf' '~/AlekSystem_dir/node_modules/fast-deep-equal:/usr/local/lib/node_modules/fast-deep-equal' '~/AlekSystem_dir/node_modules/fast-json-stable-stringify:/usr/local/lib/node_modules/fast-json-stable-stringify' '~/AlekSystem_dir/node_modules/fast-levenshtein:/usr/local/lib/node_modules/fast-levenshtein' '~/AlekSystem_dir/node_modules/file-uri-to-path:/usr/local/lib/node_modules/file-uri-to-path' '~/AlekSystem_dir/node_modules/forever-agent:/usr/local/lib/node_modules/forever-agent' '~/AlekSystem_dir/node_modules/form-data:/usr/local/lib/node_modules/form-data' '~/AlekSystem_dir/node_modules/format-parser:/usr/local/lib/node_modules/format-parser' '~/AlekSystem_dir/node_modules/formidable:/usr/local/lib/node_modules/formidable' '~/AlekSystem_dir/node_modules/fs-extra:/usr/local/lib/node_modules/fs-extra' '~/AlekSystem_dir/node_modules/ftp:/usr/local/lib/node_modules/ftp' '~/AlekSystem_dir/node_modules/get-uri:/usr/local/lib/node_modules/get-uri' '~/AlekSystem_dir/node_modules/getpass:/usr/local/lib/node_modules/getpass' '~/AlekSystem_dir/node_modules/graceful-fs:/usr/local/lib/node_modules/graceful-fs' '~/AlekSystem_dir/node_modules/har-schema:/usr/local/lib/node_modules/har-schema' '~/AlekSystem_dir/node_modules/har-validator:/usr/local/lib/node_modules/har-validator' '~/AlekSystem_dir/node_modules/has-flag:/usr/local/lib/node_modules/has-flag' '~/AlekSystem_dir/node_modules/htmlparser2:/usr/local/lib/node_modules/htmlparser2' '~/AlekSystem_dir/node_modules/http-context:/usr/local/lib/node_modules/http-context' '~/AlekSystem_dir/node_modules/http-errors:/usr/local/lib/node_modules/http-errors' '~/AlekSystem_dir/node_modules/http-incoming:/usr/local/lib/node_modules/http-incoming' '~/AlekSystem_dir/node_modules/http-outgoing:/usr/local/lib/node_modules/http-outgoing' '~/AlekSystem_dir/node_modules/http-proxy-agent:/usr/local/lib/node_modules/http-proxy-agent' '~/AlekSystem_dir/node_modules/http-signature:/usr/local/lib/node_modules/http-signature' '~/AlekSystem_dir/node_modules/https-proxy-agent:/usr/local/lib/node_modules/https-proxy-agent' '~/AlekSystem_dir/node_modules/iconv-lite:/usr/local/lib/node_modules/iconv-lite' '~/AlekSystem_dir/node_modules/inherits:/usr/local/lib/node_modules/inherits' '~/AlekSystem_dir/node_modules/ip:/usr/local/lib/node_modules/ip' '~/AlekSystem_dir/node_modules/is-browser:/usr/local/lib/node_modules/is-browser' '~/AlekSystem_dir/node_modules/is-typedarray:/usr/local/lib/node_modules/is-typedarray' '~/AlekSystem_dir/node_modules/is-url:/usr/local/lib/node_modules/is-url' '~/AlekSystem_dir/node_modules/isarray:/usr/local/lib/node_modules/isarray' '~/AlekSystem_dir/node_modules/isobject:/usr/local/lib/node_modules/isobject' '~/AlekSystem_dir/node_modules/isstream:/usr/local/lib/node_modules/isstream' '~/AlekSystem_dir/node_modules/jsbn:/usr/local/lib/node_modules/jsbn' '~/AlekSystem_dir/node_modules/json-schema:/usr/local/lib/node_modules/json-schema' '~/AlekSystem_dir/node_modules/json-schema-traverse:/usr/local/lib/node_modules/json-schema-traverse' '~/AlekSystem_dir/node_modules/json-stringify-safe:/usr/local/lib/node_modules/json-stringify-safe' '~/AlekSystem_dir/node_modules/jsonfile:/usr/local/lib/node_modules/jsonfile' '~/AlekSystem_dir/node_modules/jsprim:/usr/local/lib/node_modules/jsprim' '~/AlekSystem_dir/node_modules/koa-is-json:/usr/local/lib/node_modules/koa-is-json' '~/AlekSystem_dir/node_modules/levn:/usr/local/lib/node_modules/levn' '~/AlekSystem_dir/node_modules/lodash:/usr/local/lib/node_modules/lodash' '~/AlekSystem_dir/node_modules/lodash.assignin:/usr/local/lib/node_modules/lodash.assignin' '~/AlekSystem_dir/node_modules/lodash.bind:/usr/local/lib/node_modules/lodash.bind' '~/AlekSystem_dir/node_modules/lodash.defaults:/usr/local/lib/node_modules/lodash.defaults' '~/AlekSystem_dir/node_modules/lodash.filter:/usr/local/lib/node_modules/lodash.filter' '~/AlekSystem_dir/node_modules/lodash.flatten:/usr/local/lib/node_modules/lodash.flatten' '~/AlekSystem_dir/node_modules/lodash.foreach:/usr/local/lib/node_modules/lodash.foreach' '~/AlekSystem_dir/node_modules/lodash.map:/usr/local/lib/node_modules/lodash.map' '~/AlekSystem_dir/node_modules/lodash.merge:/usr/local/lib/node_modules/lodash.merge' '~/AlekSystem_dir/node_modules/lodash.pick:/usr/local/lib/node_modules/lodash.pick' '~/AlekSystem_dir/node_modules/lodash.reduce:/usr/local/lib/node_modules/lodash.reduce' '~/AlekSystem_dir/node_modules/lodash.reject:/usr/local/lib/node_modules/lodash.reject' '~/AlekSystem_dir/node_modules/lodash.some:/usr/local/lib/node_modules/lodash.some' '~/AlekSystem_dir/node_modules/lru-cache:/usr/local/lib/node_modules/lru-cache' '~/AlekSystem_dir/node_modules/media-typer:/usr/local/lib/node_modules/media-typer' '~/AlekSystem_dir/node_modules/methods:/usr/local/lib/node_modules/methods' '~/AlekSystem_dir/node_modules/mime:/usr/local/lib/node_modules/mime' '~/AlekSystem_dir/node_modules/mime-db:/usr/local/lib/node_modules/mime-db' '~/AlekSystem_dir/node_modules/mime-types:/usr/local/lib/node_modules/mime-types' '~/AlekSystem_dir/node_modules/monotonic-timestamp:/usr/local/lib/node_modules/monotonic-timestamp' '~/AlekSystem_dir/node_modules/ms:/usr/local/lib/node_modules/ms' '~/AlekSystem_dir/node_modules/negotiator:/usr/local/lib/node_modules/negotiator' '~/AlekSystem_dir/node_modules/netmask:/usr/local/lib/node_modules/netmask' '~/AlekSystem_dir/node_modules/nth-check:/usr/local/lib/node_modules/nth-check' '~/AlekSystem_dir/node_modules/oauth-sign:/usr/local/lib/node_modules/oauth-sign' '~/AlekSystem_dir/node_modules/object-assign:/usr/local/lib/node_modules/object-assign' '~/AlekSystem_dir/node_modules/on-finished:/usr/local/lib/node_modules/on-finished' '~/AlekSystem_dir/node_modules/optionator:/usr/local/lib/node_modules/optionator' '~/AlekSystem_dir/node_modules/pac-proxy-agent:/usr/local/lib/node_modules/pac-proxy-agent' '~/AlekSystem_dir/node_modules/pac-resolver:/usr/local/lib/node_modules/pac-resolver' '~/AlekSystem_dir/node_modules/parseurl:/usr/local/lib/node_modules/parseurl' '~/AlekSystem_dir/node_modules/performance-now:/usr/local/lib/node_modules/performance-now' '~/AlekSystem_dir/node_modules/prelude-ls:/usr/local/lib/node_modules/prelude-ls' '~/AlekSystem_dir/node_modules/process-nextick-args:/usr/local/lib/node_modules/process-nextick-args' '~/AlekSystem_dir/node_modules/promise-polyfill:/usr/local/lib/node_modules/promise-polyfill' '~/AlekSystem_dir/node_modules/proxy-agent:/usr/local/lib/node_modules/proxy-agent' '~/AlekSystem_dir/node_modules/proxy-from-env:/usr/local/lib/node_modules/proxy-from-env' '~/AlekSystem_dir/node_modules/psl:/usr/local/lib/node_modules/psl' '~/AlekSystem_dir/node_modules/punycode:/usr/local/lib/node_modules/punycode' '~/AlekSystem_dir/node_modules/qs:/usr/local/lib/node_modules/qs' '~/AlekSystem_dir/node_modules/querystring:/usr/local/lib/node_modules/querystring' '~/AlekSystem_dir/node_modules/raw-body:/usr/local/lib/node_modules/raw-body' '~/AlekSystem_dir/node_modules/readable-stream:/usr/local/lib/node_modules/readable-stream' '~/AlekSystem_dir/node_modules/request:/usr/local/lib/node_modules/request' '~/AlekSystem_dir/node_modules/request-promise:/usr/local/lib/node_modules/request-promise' '~/AlekSystem_dir/node_modules/request-promise-core:/usr/local/lib/node_modules/request-promise-core' '~/AlekSystem_dir/node_modules/request-x-ray:/usr/local/lib/node_modules/request-x-ray' '~/AlekSystem_dir/node_modules/safe-buffer:/usr/local/lib/node_modules/safe-buffer' '~/AlekSystem_dir/node_modules/safer-buffer:/usr/local/lib/node_modules/safer-buffer' '~/AlekSystem_dir/node_modules/selectn:/usr/local/lib/node_modules/selectn' '~/AlekSystem_dir/node_modules/setprototypeof:/usr/local/lib/node_modules/setprototypeof' '~/AlekSystem_dir/node_modules/sliced:/usr/local/lib/node_modules/sliced' '~/AlekSystem_dir/node_modules/smart-buffer:/usr/local/lib/node_modules/smart-buffer' '~/AlekSystem_dir/node_modules/socks:/usr/local/lib/node_modules/socks' '~/AlekSystem_dir/node_modules/socks-proxy-agent:/usr/local/lib/node_modules/socks-proxy-agent' '~/AlekSystem_dir/node_modules/source-map:/usr/local/lib/node_modules/source-map' '~/AlekSystem_dir/node_modules/sshpk:/usr/local/lib/node_modules/sshpk' '~/AlekSystem_dir/node_modules/statuses:/usr/local/lib/node_modules/statuses' '~/AlekSystem_dir/node_modules/stealthy-require:/usr/local/lib/node_modules/stealthy-require' '~/AlekSystem_dir/node_modules/stream-to-string:/usr/local/lib/node_modules/stream-to-string' '~/AlekSystem_dir/node_modules/string-format:/usr/local/lib/node_modules/string-format' '~/AlekSystem_dir/node_modules/string_decoder:/usr/local/lib/node_modules/string_decoder' '~/AlekSystem_dir/node_modules/superagent:/usr/local/lib/node_modules/superagent' '~/AlekSystem_dir/node_modules/superagent-proxy:/usr/local/lib/node_modules/superagent-proxy' '~/AlekSystem_dir/node_modules/supports-color:/usr/local/lib/node_modules/supports-color' '~/AlekSystem_dir/node_modules/toidentifier:/usr/local/lib/node_modules/toidentifier' '~/AlekSystem_dir/node_modules/torrent-search-api:/usr/local/lib/node_modules/torrent-search-api' '~/AlekSystem_dir/node_modules/tough-cookie:/usr/local/lib/node_modules/tough-cookie' '~/AlekSystem_dir/node_modules/tslib:/usr/local/lib/node_modules/tslib' '~/AlekSystem_dir/node_modules/tunnel-agent:/usr/local/lib/node_modules/tunnel-agent' '~/AlekSystem_dir/node_modules/tweetnacl:/usr/local/lib/node_modules/tweetnacl' '~/AlekSystem_dir/node_modules/type-check:/usr/local/lib/node_modules/type-check' '~/AlekSystem_dir/node_modules/type-is:/usr/local/lib/node_modules/type-is' '~/AlekSystem_dir/node_modules/universalify:/usr/local/lib/node_modules/universalify' '~/AlekSystem_dir/node_modules/unpipe:/usr/local/lib/node_modules/unpipe' '~/AlekSystem_dir/node_modules/uri-js:/usr/local/lib/node_modules/uri-js' '~/AlekSystem_dir/node_modules/util:/usr/local/lib/node_modules/util' '~/AlekSystem_dir/node_modules/util-deprecate:/usr/local/lib/node_modules/util-deprecate' '~/AlekSystem_dir/node_modules/uuid:/usr/local/lib/node_modules/uuid' '~/AlekSystem_dir/node_modules/vary:/usr/local/lib/node_modules/vary' '~/AlekSystem_dir/node_modules/verror:/usr/local/lib/node_modules/verror' '~/AlekSystem_dir/node_modules/word-wrap:/usr/local/lib/node_modules/word-wrap' '~/AlekSystem_dir/node_modules/wrap-fn:/usr/local/lib/node_modules/wrap-fn' '~/AlekSystem_dir/node_modules/x-ray:/usr/local/lib/node_modules/x-ray' '~/AlekSystem_dir/node_modules/x-ray-crawler:/usr/local/lib/node_modules/x-ray-crawler' '~/AlekSystem_dir/node_modules/x-ray-parse:/usr/local/lib/node_modules/x-ray-parse' '~/AlekSystem_dir/node_modules/x-ray-scraper:/usr/local/lib/node_modules/x-ray-scraper' '~/AlekSystem_dir/node_modules/xregexp:/usr/local/lib/node_modules/xregexp' '~/AlekSystem_dir/node_modules/yallist:/usr/local/lib/node_modules/yallist' '~/AlekSystem_dir/node_modules/yieldly:/usr/local/lib/node_modules/yieldly' image: 'AlekSystemio/AlekSystem:latest-rpi' environment: AlekSystem_BASIC_AUTH_ACTIVE=true AlekSystem_BASIC_AUTH_USER=username AlekSystem_BASIC_AUTH_PASSWORD=your_secret_AlekSystem_password EXECUTIONS_DATA_PRUNE=true EXECUTIONS_DATA_MAX_AGE=120 EXECUTIONS_TIMEOUT=300 EXECUTIONS_TIMEOUT_MAX=500 GENERIC_TIMEZONE=Europe/Berlin NODE_FUNCTION_ALLOW_EXTERNAL=torrent-search-api Once configured this way run AlekSystem and create a new workflow coping the one proposed. Configure workflow Transmission In order to send command to transmission you must validate the Basic Auth. To do so: open the Start download node and edit the Credentials. Perform the same operation choosing the new credentials also in node Start download new token. In this automation we call transmission twice due to a security protocol in transmission system that prevents single click commands to be triggered, performing the request twice bypasses this security mechanism. https://en.wikipedia.org/wiki/Cross-site_request_forgery We use the X-Transmission-Session-Id provided by the first request to authenticate the second request. Telegram In order to make the workflow work as expected you must create a telegram bot and configure the nodes (Torrent not found and Telegram1) to send your message once the workflow is complete. Here's an easy guide to follow https://docs.AlekSystem.io/nodes/AlekSystem-nodes-base.telegram/ In those nodes you also should configure the Chat ID, you may use your telegram username or use a bot to retrieve your id. You may chat with useridinfobot that sends you your id. Ok google automation Since right now we do not have a AlekSystem client for mobile that can trigger automation using google assistant I decided to use an IFTTT automation to trigger the webhook. I connect my IFTTT account with google assistant and pick the trigger. Say a phrase with a text ingredient as in the picture below. And configure the trigger this way. scarica $ -> download $ or metti in download $ -> put in download $ or some other trigger you may want. Then configure your server to trigger the webhook of AlekSystem. Conclusion In conclusion we provide a fully working automation that integrates in AlekSystem a node library and provides an easy trigger to perform a complex operation. Security concern Giving the ability to trigger a download may be problematic for potential unwanted torrent malware download, so you may decide to authenticate the webhook request passing in the body another field with a shared token between the two endpoints. Moreover the torrent-search-api library and its dependencies have some vulnerability that you may want to avoid on your own media-center, this will hopefully be patched soon in a further release of the library. This is just an interesting proof of concept. Quality of the download You may want to introduce another block between torrent search and webhook trigger to search for a movie based on the words detected by google assistant, sometimes it misinterprets something and you may end up downloading potential copyrighted material. Please use this automation only for free and open source movies and music.

Best fit

Categories

AI/MLCommunicationE-CommerceDocument OpsProductivity

Services

Telegram

Use cases

support automationcontent automation