{ "name": "peertube.futo.org", "description": "A plugin that adds PeerTube as a source", "author": "FUTO", "authorUrl": "https://futo.tech", "platformUrl": "https://joinpeertube.org/", "sourceUrl": "http://pluginhost.grayjay.app/api/plugin/peertube/Config?url=https://peertube.futo.org\u0026id=c41b1e1e-ca9a-47f9-8074-54e7d8d8e2f5", "repositoryUrl": "https://gitlab.futo.org/videostreaming/plugins/peertube", "scriptUrl": "https://plugins.grayjay.app/PeerTube/PeerTubeScript.js", "version": 27, "iconUrl": "https://plugins.grayjay.app/PeerTube/peertube.png", "id": "c41b1e1e-ca9a-47f9-8074-54e7d8d8e2f5", "scriptSignature": "UuIZPDuIzFu9aKwkHhscdrsQFUyHx6qGkgCPzvXFV3t70samRb12pWlMFJzq7mWKcFza0lNSBIRccskDoUpnCdsu34d7AhHA4ekOhNW4RxqKAXrkspwxeeVEg/\u002Bmo/lOePJJDGW6LfiVZnl4JH3PhUgruOn3CveAHp43qnZLS6hnSzyC3xyjIJxvvn69Yf8NSIhlUd/v0/rRYRQ0a484xhDDOTVJ/hO3ytTX9Kf45vzciTKnYGMl8fHRN1IOrR7LgWowCW40chCMQPW/VqJewfNBpufsNk/g2S\u002BAywtx22XfU48GkEoKFY\u002BC1mE0HqHGYkg0Zfqwnsv\u002BIadp92DKYA==", "scriptPublicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsoFJU4AReDyUnSQI9A99UjLCwkY8OH\u002B1o8cdtf2EjSb\u002BfO2qmP8MGMTAvfvgmq5d2QBJE2XHRkRO3JKcTlcc1j0WlOlU8P9W272DYCeX6oYaavpKNqGKoGEuodp9wtiyNwyH46\u002B\u002BJfpU/uIUacZbZKkHv9gIGchmNvpKYZQjFd/8pUqXGpcXZP54tGSC9PLcY\u002B5TozZThK7Oy1\u002B3YEf1bZ44UinRYYATbLk/wNuAfsupvlt6nxZOcJhABhdo9V\u002BgY0FE6Ayg5\u002B1cd1noWhnRtLF\u002BsPdEr3z8Nt15JEK5a/524t25FMhwz8yKxlGW5qW3QLJHSUgLQncL6a1zlZ1s8QIDAQAB", "packages": [ "Http" ], "packagesOptional": [ "HttpImp" ], "allowEval": false, "allowUrls": [ "everywhere" ], "constants": { "baseUrl": "https://peertube.futo.org" }, "authentication": { "loginUrl": "https://peertube.futo.org/login", "completionUrl": "https://peertube.futo.org/api/v1/users/me?*", "headersToFind": [ "Authorization" ], "userAgent": "Mozilla/5.0 (Linux; Android 12) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.230 Mobile Safari/537.36" }, "authenticationDesktop": { "loginUrl": "https://peertube.futo.org/login", "completionUrl": "https://peertube.futo.org/api/v1/users/me?*", "headersToFind": [ "Authorization" ], "userAgent": null, "useMobileEmulation": false }, "captcha": { "userAgent": "Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.200 Mobile Safari/537.36", "captchaUrl": null, "cookiesToFind": [ "cf_clearance" ] }, "captchaDesktop": { "captchaUrl": null, "cookiesToFind": [ "cf_clearance" ], "userAgent": null, "useMobileEmulation": false }, "settings": [ { "variable": "homeHeader", "name": "Home Feed", "description": "Source and sorting for the home feed", "type": "Header" }, { "variable": "homeSourceCurrentInstance", "name": "Current Instance", "description": "Include videos from your configured PeerTube instance.", "type": "Boolean", "default": "true" }, { "variable": "homeSourceSepiaSearch", "name": "Sepia Search", "description": "Include videos from all indexed PeerTube instances via sepiasearch.org.", "type": "Boolean", "default": "false" }, { "variable": "homeFeedSortIndex", "name": "Home Feed Sorting", "description": "Best, Trending, and Hot require PeerTube v3.1.0\u002B (falls back to Newest on older instances).", "type": "Dropdown", "default": "1", "options": [ "Best (Algorithm)", "Newest", "Oldest", "Most Views", "Most Likes", "Trending", "Hot" ] }, { "variable": "homeFiltersHeader", "name": "Home Filters", "description": "Filter home feed by category and language. Multiple filters combine with OR logic. Leave empty to disable.", "type": "Header" }, { "variable": "mainCategoryIndex", "name": "Home Category Filter 1", "description": "", "type": "Dropdown", "default": "0", "options": [ "", "Music", "Films", "Vehicles", "Art", "Sports", "Travels", "Gaming", "People", "Comedy", "Entertainment", "News \u0026 Politics", "How To", "Education", "Activism", "Science \u0026 Technology", "Animals", "Kids", "Food" ] }, { "variable": "secondCategoryIndex", "name": "Home Category Filter 2", "description": "", "type": "Dropdown", "default": "0", "options": [ "", "Music", "Films", "Vehicles", "Art", "Sports", "Travels", "Gaming", "People", "Comedy", "Entertainment", "News \u0026 Politics", "How To", "Education", "Activism", "Science \u0026 Technology", "Animals", "Kids", "Food" ] }, { "variable": "thirdCategoryIndex", "name": "Home Category Filter 3", "description": "", "type": "Dropdown", "default": "0", "options": [ "", "Music", "Films", "Vehicles", "Art", "Sports", "Travels", "Gaming", "People", "Comedy", "Entertainment", "News \u0026 Politics", "How To", "Education", "Activism", "Science \u0026 Technology", "Animals", "Kids", "Food" ] }, { "variable": "fourthCategoryIndex", "name": "Home Category Filter 4", "description": "", "type": "Dropdown", "default": "0", "options": [ "", "Music", "Films", "Vehicles", "Art", "Sports", "Travels", "Gaming", "People", "Comedy", "Entertainment", "News \u0026 Politics", "How To", "Education", "Activism", "Science \u0026 Technology", "Animals", "Kids", "Food" ] }, { "variable": "fifthCategoryIndex", "name": "Home Category Filter 5", "description": "", "type": "Dropdown", "default": "0", "options": [ "", "Music", "Films", "Vehicles", "Art", "Sports", "Travels", "Gaming", "People", "Comedy", "Entertainment", "News \u0026 Politics", "How To", "Education", "Activism", "Science \u0026 Technology", "Animals", "Kids", "Food" ] }, { "variable": "firstLanguageIndex", "name": "Home Language Filter 1", "description": "", "type": "Dropdown", "default": "0", "options": [ "", "English", "Fran\u00E7ais", "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", "Catal\u00E0", "\u010Ce\u0161tina", "Deutsch", "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC", "Esperanto", "Espa\u00F1ol", "Euskara", "\u0641\u0627\u0631\u0633\u06CC", "Suomi", "G\u00E0idhlig", "Galego", "Hrvatski", "Magyar", "\u00CDslenska", "Italiano", "\u65E5\u672C\u8A9E", "Taqbaylit", "Nederlands", "Norsk", "Occitan", "Polski", "Portugu\u00EAs (Brasil)", "Portugu\u00EAs (Portugal)", "P\u0443\u0441\u0441\u043A\u0438\u0439", "Sloven\u010Dina", "Shqip", "Svenska", "\u0E44\u0E17\u0E22", "Toki Pona", "T\u00FCrk\u00E7e", "\u0443\u043A\u0440\u0430\u0457\u0301\u043D\u0441\u044C\u043A\u0430 \u043C\u043E\u0301\u0432\u0430", "Ti\u1EBFng Vi\u1EC7t", "\u7B80\u4F53\u4E2D\u6587\uFF08\u4E2D\u56FD\uFF09", "\u7E41\u9AD4\u4E2D\u6587\uFF08\u53F0\u7063\uFF09" ] }, { "variable": "secondLanguageIndex", "name": "Home Language Filter 2", "description": "", "type": "Dropdown", "default": "0", "options": [ "", "English", "Fran\u00E7ais", "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", "Catal\u00E0", "\u010Ce\u0161tina", "Deutsch", "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC", "Esperanto", "Espa\u00F1ol", "Euskara", "\u0641\u0627\u0631\u0633\u06CC", "Suomi", "G\u00E0idhlig", "Galego", "Hrvatski", "Magyar", "\u00CDslenska", "Italiano", "\u65E5\u672C\u8A9E", "Taqbaylit", "Nederlands", "Norsk", "Occitan", "Polski", "Portugu\u00EAs (Brasil)", "Portugu\u00EAs (Portugal)", "P\u0443\u0441\u0441\u043A\u0438\u0439", "Sloven\u010Dina", "Shqip", "Svenska", "\u0E44\u0E17\u0E22", "Toki Pona", "T\u00FCrk\u00E7e", "\u0443\u043A\u0440\u0430\u0457\u0301\u043D\u0441\u044C\u043A\u0430 \u043C\u043E\u0301\u0432\u0430", "Ti\u1EBFng Vi\u1EC7t", "\u7B80\u4F53\u4E2D\u6587\uFF08\u4E2D\u56FD\uFF09", "\u7E41\u9AD4\u4E2D\u6587\uFF08\u53F0\u7063\uFF09" ] }, { "variable": "thirdLanguageIndex", "name": "Home Language Filter 3", "description": "", "type": "Dropdown", "default": "0", "options": [ "", "English", "Fran\u00E7ais", "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", "Catal\u00E0", "\u010Ce\u0161tina", "Deutsch", "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC", "Esperanto", "Espa\u00F1ol", "Euskara", "\u0641\u0627\u0631\u0633\u06CC", "Suomi", "G\u00E0idhlig", "Galego", "Hrvatski", "Magyar", "\u00CDslenska", "Italiano", "\u65E5\u672C\u8A9E", "Taqbaylit", "Nederlands", "Norsk", "Occitan", "Polski", "Portugu\u00EAs (Brasil)", "Portugu\u00EAs (Portugal)", "P\u0443\u0441\u0441\u043A\u0438\u0439", "Sloven\u010Dina", "Shqip", "Svenska", "\u0E44\u0E17\u0E22", "Toki Pona", "T\u00FCrk\u00E7e", "\u0443\u043A\u0440\u0430\u0457\u0301\u043D\u0441\u044C\u043A\u0430 \u043C\u043E\u0301\u0432\u0430", "Ti\u1EBFng Vi\u1EC7t", "\u7B80\u4F53\u4E2D\u6587\uFF08\u4E2D\u56FD\uFF09", "\u7E41\u9AD4\u4E2D\u6587\uFF08\u53F0\u7063\uFF09" ] }, { "variable": "searchHeader", "name": "Search", "description": "Search engine for finding content.", "type": "Header" }, { "variable": "searchCurrentInstance", "name": "Current Instance", "description": "Search your server and its followed instances.", "type": "Boolean", "default": "true" }, { "variable": "searchSepiaSearch", "name": "Sepia Search", "description": "Search all indexed PeerTube instances via sepiasearch.org.", "type": "Boolean", "default": "false" }, { "variable": "safetyHeader", "name": "Safety", "description": "Content safety and filtering options.", "type": "Header" }, { "variable": "nsfwPolicy", "name": "Policy for sensitive content", "description": "How to handle NSFW content across all feeds, searches, and recommendations.", "type": "Dropdown", "default": "0", "options": [ "Hide all", "Hide thumbnails", "Display all" ] }, { "variable": "allowPlayNsfwContent", "name": "Allow Playing Sensitive Content", "description": "Allow playback of sensitive content, including deep-linked videos.", "type": "Boolean", "default": "false" }, { "variable": "AnalyticsHeader", "name": "Analytics", "description": "Viewing activity reporting", "type": "Header" }, { "variable": "submitActivity", "name": "Report Views", "description": "Send watch activity to instances to count views.", "type": "Boolean", "default": "true" }, { "variable": "ExperimentalHeader", "name": "Experimental", "description": "Features that are still being tested and may not work as expected.", "type": "Header" }, { "variable": "enableBrowserImpersonation", "name": "Browser Impersonation", "description": "Impersonate a browser\u0027s TLS fingerprint to bypass bot detection (e.g. Cloudflare).", "type": "Boolean", "default": "false" }, { "variable": "enableCloudflareCaptcha", "name": "Cloudflare Captcha Support", "description": "Prompt for captcha on Cloudflare-protected instances instead of failing silently.", "type": "Boolean", "default": "false" }, { "variable": "enableSearchSuggestions", "name": "Search Suggestions", "description": "Fetch suggestions from the search API as you type. Makes extra API requests which may increase instance load.", "type": "Boolean", "default": "false" }, { "variable": "showInstanceInfo", "name": "Show Instance Information", "description": "Display PeerTube instance details (name, version, stats) in video and channel descriptions. Makes extra API requests.", "type": "Boolean", "default": "false" } ], "changelog": { "27": [ "Improvement: Support PeerTube federated video redirect to origin instance;", "Improvement: Improve error handling for content details;", "Improvement: Add opt-in setting to show instance info in channel and content descriptions;" ], "26": [ "Improvement: Sync known instances with SepiaSearch, fediverse.observer and fedidb.org;", "Improvement: Update plugin configuration authorUrl from https://futo.org to https://futo.tech;" ], "25": [ "Improvement: Add instance authentication;", "Improvement: Import user subscriptions;", "Improvement: Import user playlists;", "Improvement: Content chapters;", "Improvement: Add browser impersonation support (experimental, disabled by default in plugin setting);", "Improvement: Initial Cloudflare captcha support (experimental, disabled by default in plugin setting);", "Improvement: Add search suggestions support (experimental, disabled by default in plugin settings);", "Improvement: Add independent source toggles for home feed and search to choose between current instance, Sepia Search, or both;", "Improvement: Add home feed sorting settings to customize how videos are displayed on the home page (Best, Newest, Oldest, Most Views, Most Likes, Trending, Hot);", "Improvement: Add plugin settings to filter home feed content by multiple categories and languages;", "Improvement: Add tag search support - tag search URLs are now handled as playlists;", "Improvement: Change default home feed sorting from Best to Newest for better compatibility with all PeerTube instances;", "Improvement: Add NSFW content filter setting to hide NSFW content from home feed (enabled by default, applies to both content sources);", "Improvement: Add support for live chat window on live videos;", "Improvement: Add search filters for videos (Category, Language, License, Duration, NSFW, Features, Search Scope);", "Improvement: Add search for contents within a channel;", "Improvement: Add channel banner image support for channels on PeerTube v6.0.0\u002B instances;", "Improvement: Update known instances from https://instances.joinpeertube.org, https://api.fediverse.observer/, and https://api.fedidb.org/;", "Fix: Handle older instances that truncate video descriptions at 250 characters and need an additional request;", "Fix: Viewer count for livestreams;" ], "24": [ "Fix existing subscription not being recognized as subscribed in video details;", "Sync known instances with https://instances.joinpeertube.org;" ], "23": [ "Fix commenter avatar in federated videos;", "Fix comment replies not showing up;", "Fix channel subscription not being recognized as subscribed;" ], "22": [ "Add support for channel playlists;", "Search online playlists on the playlist tab using current instance or Sepia Search;", "Add subtitles support (when available);", "Improve handling media sources with audio only, and videos with split audio and video;", "Improved URL recognition with hints for all content types;", "Map likes and dislikes display for videos;", "Sync known instances with https://instances.joinpeertube.org;" ], "21": [ "Fix resolving instances with ports;", "Sync known instances with https://instances.joinpeertube.org" ], "20": [ "Add view reporting to PeerTube instances with a plugin setting to disable it.", "Sync known instances with https://instances.joinpeertube.org" ], "19": [ "Sync known instances with https://instances.joinpeertube.org" ], "18": [ "Fix plugin repositoryUrl and add platformUrl configurations;", "Sync known instances from https://instances.joinpeertube.org and user requests;", "Fix playback issues for some videos;", "Add recommendations support;" ], "17": [ "Fixed issue when opening federated content or a channel without opening the Home tab first;", "Fixed issue with deep-linking from an indexed instance while the app is closed;" ], "16": [ "Use host instances from https://instances.joinpeertube.org/instances to support channels and videos from other peertube instances;", "Add a setting to switch the content and channels search from an instance to sepiasearch.org;", "Improve support for older peertube server versions;", "Fix bugs with channel avatars and video thumbnails in some peertube server versions;" ] } }