Браузер Fork - Wiki:Fork Browser - Forkplayer.tv — различия между версиями

Материал из Браузер Fork - Wiki
Перейти к: навигация, поиск
(Пример прасера на Nodejs с обходом РКН через Tor на телефоне андроид c termux: новая тема)
(Установка и настройка APPFXML STORE)
 
(не показано 45 промежуточных версий 12 участников)
Строка 1: Строка 1:
  
ForkPlayer — это прикладное программное обеспечение для просмотра fxml(Fork eXtensible Markup Language)-страниц в глобальной сети. ForkPlayer используют для запроса, обработки, манипулирования и отображения содержания [[FXML-сайт|fxml-сайтов]] а также для непосредственного просмотра содержания файлов плейлистов (m3u,xml,xspf), изображений (gif, jpeg, png), аудио-видео форматов (mp3, mpeg, mkv), потокового видео (udp, hls).
+
Fork Browser - это прикладное программное обеспечение для просмотра страниц, написанных на языке разметки FXML (Fork eXtensible Markup Language). Он используется для запросов, обработки, манипуляции и отображения содержимого [[FXML-сайт|fxml-сайтов]], а также для просмотра файлов плейлистов (m3u, xml, xspf), изображений (gif, jpeg, png), аудио-видео форматов (mp3, mpeg, mkv) и потокового видео (udp, hls).
  
В отличии от веб-сайтов,  [[FXML-сайт|FXML-порталам]] не нужна для навигации мышь или сенсорный экран, страницы просты в отображении и серфинге по ним с помощью кнопочного пульта, не требовательны к ресурсам и удобные для просмотра на телевизорах.
+
[[FXML-сайт|FXML-порталы]] отличаются от веб-сайтов тем, что для навигации не требуется мышь или сенсорный экран. Страницы легко отображаются и могут быть просмотрены с помощью кнопочного пульта. Они также экономичны в ресурсах и удобны для просмотра на телевизорах.
  
Создаются и размещаются  [[FXML-сайт|FXML-сайты]] аналогично веб-сайтам на своем сервере или хостинге со своим уникальным доменным именем, доступ происходит по протоколу HTTP ([[Files Headers For ForkPlayer]]).   
+
[[FXML-сайт|FXML-сайты]] создаются и размещаются так же, как и веб-сайты, на своем сервере или хостинге с уникальным доменным именем, доступ происходит по протоколу HTTP ([[Files Headers For ForkPlayer]]).   
  
 
С помощью [[FXML CMS]] создать свой fxml-портал может даже начинающий вебмастер.  
 
С помощью [[FXML CMS]] создать свой fxml-портал может даже начинающий вебмастер.  
Строка 12: Строка 12:
 
<br />
 
<br />
  
==История технических изменений ForkPlayer==
+
==Установка и настройка магазина приложений APPFXML STORE==
 +
[[Файл:Msxappfxml.png|мини|Магазин приложений APPFXML STORE]]
 +
Зайдите в "магазин" вашего устройства и скачайте приложение "Media Station X"
 +
 
 +
Запустите приложение Media Station X
 +
 
 +
Откройте настройки (Settings) - (Start Parameter) - (Setup)
 +
 
 +
Введите в поле адрес плейлиста: '''msx.appfxml.com'''
 +
 
 +
Далее следуйте указаниям в приложении Media Station X для запуска APPFXML STORE
 +
 
 +
==История технических изменений браузера Fork==
 
[[CHANGELOG]]
 
[[CHANGELOG]]
  
=='''Пользователям ForkPlayer'''==
+
=='''Пользователям браузера Fork'''==
[[Установить_ForkPlayer|'''Инструкции по установке ForkPlayer''']]
+
[http://forkplayer.tv/w/index.php?title=%D0%91%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80_Fork_-_Wiki:%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C_%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80_Fork'''Инструкции по установке браузера Fork''']
  
  
[http://cloudflare.appinfo.su/ Хранилище закладок, загрузить плейлист в свой аккаунт в ForkPlayer]
+
[http://cloudflare.appinfo.su/ Хранилище закладок, загрузить плейлист в свой аккаунт в браузер Fork]
  
 
[[Настройка ForkPlayer]]
 
[[Настройка ForkPlayer]]
Строка 27: Строка 39:
 
[[RemoteFork|RemoteFork]]&nbsp;(Windows, Android)
 
[[RemoteFork|RemoteFork]]&nbsp;(Windows, Android)
  
[[Частые_проблемы_ForkPlayer|Частые проблемы ForkPlayer]]
+
[[Частые_проблемы_ForkPlayer|Частые проблемы браузера Fork]]
  
 
[[Проверка DNS серверов]]
 
[[Проверка DNS серверов]]
  
[[TODO|TODO]]&nbsp;- ошибки в ForkPlayer
+
[[TODO|TODO]]&nbsp;- ошибки в браузере Fork
  
 
<br />
 
<br />
 +
 +
=='''Просмотр торрентов'''==
 +
 +
[[Torrserve Fork]]
  
 
=='''Авторам / издателям'''==
 
=='''Авторам / издателям'''==
[[FXML CMS]] - Готовый портал под ForkPlayer на вашем хостинге
+
[[FXML CMS]] - Готовый портал под браузер Fork на вашем хостинге
  
 
[[DLE FXML]] - Модуль для популярной CMS Data Life Engine
 
[[DLE FXML]] - Модуль для популярной CMS Data Life Engine
Строка 44: Строка 60:
 
[[PHP JSON генерация страниц под ForkPlayer]]
 
[[PHP JSON генерация страниц под ForkPlayer]]
  
[[Формат_XML_и_M3U_страниц_ForkPlayer|Формат XML и M3U страниц ForkPlayer]]
+
[[Формат_XML_и_M3U_страниц_ForkPlayer|Формат XML и M3U страниц браузера Fork]]
  
[[Свой_DNS_сервер_Bind9_для_запуска_ForkPlayer|Свой DNS сервер Bind9 для запуска ForkPlayer]]
+
[[Свой_DNS_сервер_Bind9_для_запуска_ForkPlayer|Свой DNS сервер Bind9 для запуска Fork]]
  
 
=='''Владелец существующего вебсайта?'''==
 
=='''Владелец существующего вебсайта?'''==
Увеличьте аудиторию и ее лояльность сделав версию под ForkPlayer!
+
Увеличьте аудиторию и ее лояльность сделав версию под браузер Fork!
  
[[Сигнатуры ForkPlayer]] - по наличию GET параметра box_mac определяем что ваш сайт был открыт в ForkPlayer
+
[[Сигнатуры ForkPlayer]] - по наличию GET параметра box_mac определяем что ваш сайт был открыт в браузере Fork
  
===Пример готовых решений и структуры порталов под ForkPlayer===
+
===Пример готовых решений и структуры порталов под браузер Fork===
Модуль, если у вас сайт на DLE [[DLE FXML]]<br />Готовый простенький портал на PHP с авторизацией, поиском и выводом страниц в JSON https://github.com/alexkdpu/kino.pub_forkplayerPHP/blob/master/index.php
+
Модуль, если у вас сайт на DLE [[DLE FXML]]<br />Готовый простенький портал на PHP с авторизацией, поиском и выводом страниц в JSON https://github.com/vengo634/kino.pub_forkplayerPHP/blob/master/index.php
  
 
=='''От авторов / издателей'''==
 
=='''От авторов / издателей'''==
Строка 65: Строка 81:
  
 
[[Создать_свою_страницу_на_ForkPlayer_Wiki|Создать свою страницу на ForkPlayer Wiki]]&nbsp;- дополнить проект недостающей информацией!
 
[[Создать_свою_страницу_на_ForkPlayer_Wiki|Создать свою страницу на ForkPlayer Wiki]]&nbsp;- дополнить проект недостающей информацией!
 
== Пример прасера на Nodejs с обходом РКН через Tor на телефоне андроид c termux ==
 
 
 
 
 
termux
 
 
https://f-droid.org/ru/packages/com.termux/
 
 
---- install ubuntu
 
https://wiki.termux.com/wiki/PRoot
 
 
https://asciinema.org/a/355177
 
 
---- terminal ubuntu
 
 
sudo apt update
 
sudo apt install nodejs
 
sudo apt install npm
 
sudo apt install tor
 
 
sudo apt install obfs4proxy
 
 
-- if Failed to fetch http://ports.ubuntu.com/ubuntu-ports/pool/universe/o/obfs4proxy/obfs4proxy_0.0.8-1build2_arm64.deb
 
 
-- install optional from http://ports.ubuntu.com/ubuntu-ports/pool/universe/o/obfs4proxy/
 
 
TEMP_DEB="$(mktemp)" && wget -O "$TEMP_DEB" 'http://ports.ubuntu.com/ubuntu-ports/pool/universe/o/obfs4proxy/obfs4proxy_0.0.8-1_arm64.deb' && sudo dpkg -i "$TEMP_DEB"
 
rm -f "$TEMP_DEB"
 
 
---- https://zalinux.ru/?p=6049
 
 
Get tor bridges https://bridges.torproject.org/options/
 
 
Add works  bridges in '/etc/tor/torrc'    Ubuntu
 
 
----
 
 
https://www.npmjs.com/package/tor-request
 
 
npm install tor-request 
 
 
npm install pm2 -g   
 
 
---- Autostart tor + kinobase.js
 
 
add in 'etc/profile'  Ubuntu
 
 
pm2 start 'DIRname'/kinobase.js;
 
 
tor --ExitNodes {ua},{by},{am},{kz};
 
 
---- Autostart vnc server  with port:5901 and ip:192.168.1.xx
 
 
add in 'etc/profile' Ubuntu
 
 
rm -rf /tmp/.X1-lock;
 
 
rm -rf /tmp/.X11-unix/X1;
 
 
vncserver -localhost no;
 
 
<h1>kinobase.js</h1>
 
 
<pre>
 
const http  = require('http');
 
const https = require('https');
 
const tr = require('tor-request');
 
const hostname = '192.168.1.66';    // ip телефона в wifi
 
const port = 8001;                  // port
 
 
const server = http.createServer((req, res) => {
 
 
const headers = {
 
    'Access-Control-Allow-Origin': '*',
 
    'Access-Control-Allow-Methods': 'OPTIONS, POST, GET',
 
    'Access-Control-Allow-Headers': 'Accept, Content-Type',
 
    'Content-Type': 'text/html; charset=utf-8',
 
};
 
res.writeHead(200, headers);
 
 
function returnXml(a, b, c) {
 
if (!c)c = "";
 
  return  "<channel>\n\
 
          <title>" + a + " </title>\n\
 
          <stream_url>" + b + "</stream_url>\n\
 
          <description><div style='font-size:24px'>" + c + "</div>\n\
 
          </channel>\n";
 
}
 
 
  if (e = req.url.match(/getm3u8\/(.*?.)((\?|&)box_|$)/)) {
 
    var urlreq = decodeURI(e[1].toString());
 
    var com = "<items> \n"
 
    tr.request(urlreq, function(err, resTOR, body) {
 
      if (!err && resTOR.statusCode == 200) {
 
        const regexT = /<div class="data clearfix">(.*?)<div id="watch_block">/gms;
 
        while ((m = regexT.exec(body)) !== null) {
 
          com += returnXml('info', 0, ((m[1].replace(/(<([^>]+)>)|\n/gi, "")).trim()).replace(/\s\s\s+/gi, "<br>"))
 
        }
 
        const regf = /MOVIE_ID = (\d+).*?PLAYER_CUID = "(.*?)".*?IDENTIFIER = "(.*?)"/gms;
 
        while ((m = regf.exec(body)) !== null) {
 
          var idm = m[1];
 
          var CUID = m[2];
 
          var IDENTIFIER = m[3];
 
          var time = Math.floor(Date.now() / 100) + '00';
 
          var requrl = 'https://kinobase.org/user_data?page=movie&movie_id=' + idm + '&cuid=' + CUID + '&device=DESKTOP&_=' + time;
 
          tr.request(requrl, function(err, resTOR, body) {
 
            if (!err && resTOR.statusCode == 200) {
 
              const regs = /"vod_time":(\d+),"vod_hash":"(.*?)"/gms;
 
              while ((m = regs.exec(body)) !== null) {
 
                var vod_time = m[1];
 
                var vod_hash = m[2];
 
                time = Date.now();
 
                var vodurl = 'https://kinobase.org/vod/' + idm + '?identifier=' + IDENTIFIER + '&player_type=new&file_type=hls&st=' + vod_hash + '&e=' + vod_time + '&_=' + time;
 
                tr.request(vodurl, function(err, resTOR, body) {
 
                  if (!err && resTOR.statusCode == 200) {
 
                    let f;
 
                    var regex = /pl\|(.*?)\|/gm;
 
                    while ((m = regex.exec(body)) !== null) {f = JSON.parse(m[1])}
 
                    //Playlist
 
                    if (Array.isArray(f)) {
 
                      for (let x of f) {
 
                        if (x.playlist) { // have seasons
 
                          for (let y of x.playlist) {
 
                            var regex = /\[(.*?)\](.*?)(,|$)/gm; //  have  quality
 
                            while ((m = regex.exec(y.file)) !== null) {
 
                              if (/\{/.test(m[2])) {
 
                                var regex2 = /\{(.*?)\}(http.*?.mp4|http.*?.m3u8)\s+/gi; // have  translate
 
                                while ((v = regex2.exec(m[2])) !== null) {com += returnXml(x.comment + " " + y.comment + " " + m[1] + " " + v[1], v[2], 0);}
 
                              } else {
 
                                var regex2 = /(http.*?.mp4|http.*?.m3u8)\s+/gi; // without translate
 
                                while ((v = regex2.exec(m[2])) !== null) {com += returnXml(x.comment + " " + y.comment + " " + m[1], v[1], 0);}
 
                              }
 
                            }
 
                          }
 
                        } else { // no have seasons
 
                          var regex = /\[(.*?)\](.*?)(,|$)/gm;
 
                          while ((m = regex.exec(x.file)) !== null) {
 
                            var t = m[2]; //file
 
                            if (/\{/.test(t)) {
 
                              var regex2 = /\{(.*?)\}(http.*?.mp4|http.*?.m3u8)\s+/gi; // have  translate
 
                              while ((v = regex2.exec(t)) !== null) {com += returnXml(x.comment + " " + m[1] + " " + v[1], v[2], 0);}
 
                            } else {
 
                              var regex2 = /(http.*?.mp4|http.*?.m3u8)\s+/gi; // without translate
 
                              while ((v = regex2.exec(t)) !== null) {com += returnXml(x.comment + " " + m[1], v[1], 0);}
 
                            }
 
                          }
 
                        }
 
                      }
 
                    }
 
                    // not playlist
 
                    else {
 
                      var regex = /\[(.*?)\](.*?)(,|$)/gm;
 
                      while ((m = regex.exec(body)) !== null) {
 
                        var t = m[2]; //file
 
                        if (/\{/.test(t)) {
 
                          var regex2 = /\{(.*?)\}(http.*?.mp4|http.*?.m3u8)\s+/gi; // have translate
 
                          while ((v = regex2.exec(t)) !== null) {com += returnXml(m[1] + " " + v[1], v[2], 0);}
 
                        } else {
 
                          var regex2 = /(http.*?.mp4|http.*?.m3u8)\s+/gi; // without translate
 
                          while ((v = regex2.exec(t)) !== null) {com += returnXml(m[1], v[1], 0);}
 
                        }
 
                      }
 
                    }
 
                    com += "</items> \n"
 
                    res.write(com);
 
                    res.end();
 
                  }
 
                })
 
              }
 
            }
 
          })
 
        }
 
      }
 
    })
 
  }
 
});
 
 
server.listen(port, hostname, () => {console.log("Server running at "+hostname+":"+port);});
 
 
 
</pre>
 
<pre>
 
адрес для телевизора http://192.168.1.66:8001/getm3u8/https://kinobase.org/film/4756-radiovolna
 
</pre>
 

Текущая версия на 23:43, 17 апреля 2024

Fork Browser - это прикладное программное обеспечение для просмотра страниц, написанных на языке разметки FXML (Fork eXtensible Markup Language). Он используется для запросов, обработки, манипуляции и отображения содержимого fxml-сайтов, а также для просмотра файлов плейлистов (m3u, xml, xspf), изображений (gif, jpeg, png), аудио-видео форматов (mp3, mpeg, mkv) и потокового видео (udp, hls).

FXML-порталы отличаются от веб-сайтов тем, что для навигации не требуется мышь или сенсорный экран. Страницы легко отображаются и могут быть просмотрены с помощью кнопочного пульта. Они также экономичны в ресурсах и удобны для просмотра на телевизорах.

FXML-сайты создаются и размещаются так же, как и веб-сайты, на своем сервере или хостинге с уникальным доменным именем, доступ происходит по протоколу HTTP (Files Headers For ForkPlayer).

С помощью FXML CMS создать свой fxml-портал может даже начинающий вебмастер.

Спецификация разметки FXML для написания кода вручную.


Установка и настройка магазина приложений APPFXML STORE[править]

Магазин приложений APPFXML STORE

Зайдите в "магазин" вашего устройства и скачайте приложение "Media Station X"

Запустите приложение Media Station X

Откройте настройки (Settings) - (Start Parameter) - (Setup)

Введите в поле адрес плейлиста: msx.appfxml.com

Далее следуйте указаниям в приложении Media Station X для запуска APPFXML STORE

История технических изменений браузера Fork[править]

CHANGELOG

Пользователям браузера Fork[править]

Инструкции по установке браузера Fork


Хранилище закладок, загрузить плейлист в свой аккаунт в браузер Fork

Настройка ForkPlayer

Подключение архива iptv

RemoteFork (Windows, Android)

Частые проблемы браузера Fork

Проверка DNS серверов

TODO - ошибки в браузере Fork


Просмотр торрентов[править]

Torrserve Fork

Авторам / издателям[править]

FXML CMS - Готовый портал под браузер Fork на вашем хостинге

DLE FXML - Модуль для популярной CMS Data Life Engine

Files Headers For ForkPlayer - Обязательно настройте нужные заголовки ваших страниц

PHP JSON генерация страниц под ForkPlayer

Формат XML и M3U страниц браузера Fork

Свой DNS сервер Bind9 для запуска Fork

Владелец существующего вебсайта?[править]

Увеличьте аудиторию и ее лояльность сделав версию под браузер Fork!

Сигнатуры ForkPlayer - по наличию GET параметра box_mac определяем что ваш сайт был открыт в браузере Fork

Пример готовых решений и структуры порталов под браузер Fork[править]

Модуль, если у вас сайт на DLE DLE FXML
Готовый простенький портал на PHP с авторизацией, поиском и выводом страниц в JSON https://github.com/vengo634/kino.pub_forkplayerPHP/blob/master/index.php

От авторов / издателей[править]

Dstore - магазин приложений, кинозалы, новостные и развлекательные порталы

Тем кто хочет помочь[править]

Создать свою страницу на ForkPlayer Wiki - дополнить проект недостающей информацией!