Skip to content

Commit f73b02f

Browse files
committed
Initial Commit
0 parents  commit f73b02f

File tree

695 files changed

+292472
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

695 files changed

+292472
-0
lines changed

.vscode/launch.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"preLaunchTask": "tsc build",
6+
"name": "Launch Package",
7+
"type": "go",
8+
"request": "launch",
9+
"mode": "auto",
10+
"program": "${fileDirname}",
11+
"args": ["-dev"]
12+
}
13+
]
14+
}

.vscode/tasks.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"version": "2.0.0",
3+
"tasks": [
4+
{
5+
"type": "typescript",
6+
"tsconfig": "ts/tsconfig.json",
7+
"problemMatcher": [
8+
"$tsc"
9+
],
10+
"group": "build",
11+
"label": "tsc build"
12+
}
13+
]
14+
}

LICENSE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2022 fyb3roptik@threadfin
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README-DEV.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Information for the developers will come soon

README.md

+146
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
<div align="center" style="background-color: #111; padding: 100;">
2+
<a href="https://github.com/Threadfin/Threadfin"><img width="880" height="200" src="html/img/logo_b_880x200.jpg" alt="Threadfin" /></a>
3+
</div>
4+
<br>
5+
6+
# Threadfin
7+
## M3U Proxy for Plex DVR and Emby/Jellyfin Live TV. Based on xTeVe.
8+
9+
Documentation for setup and configuration is [here](https://github.com/xteve-project/xTeVe-Documentation/blob/master/en/configuration.md).
10+
11+
#### Donation
12+
* **Bitcoin:** 3AyZ16uGWGJ4HdvZ3wx4deE5HsKZ5QxFBL
13+
![Bitcoin](html/img/BC-QR.png "Bitcoin - Threadfin")
14+
15+
## Requirements
16+
### Plex
17+
* Plex Media Server (1.11.1.4730 or newer)
18+
* Plex Client with DVR support
19+
* Plex Pass
20+
21+
### Emby
22+
* Emby Server (3.5.3.0 or newer)
23+
* Emby Client with Live-TV support
24+
* Emby Premiere
25+
26+
---
27+
28+
## Features
29+
30+
#### Files
31+
* Merge external M3U files
32+
* Merge external XMLTV files
33+
* Automatic M3U and XMLTV update
34+
* M3U and XMLTV export
35+
36+
#### Channel management
37+
* Filtering streams
38+
* Channel mapping
39+
* Channel order
40+
* Channel logos
41+
* Channel categories
42+
43+
#### Streaming
44+
* Buffer with HLS / M3U8 support
45+
* Re-streaming
46+
* Number of tuners adjustable
47+
* Compatible with Plex / Emby EPG
48+
49+
---
50+
51+
#### Recommended Docker Image (Linux 64 Bit)
52+
Thanks to @alturismo and @LeeD for creating the Docker Images.
53+
54+
**Created by alturismo:**
55+
[xTeVe](https://hub.docker.com/r/alturismo/xteve)
56+
[xTeVe / Guide2go](https://hub.docker.com/r/alturismo/xteve_guide2go)
57+
[xTeVe / Guide2go / owi2plex](https://hub.docker.com/r/alturismo/xteve_g2g_owi)
58+
59+
Including:
60+
- Guide2go: XMLTV grabber for Schedules Direct
61+
- owi2plex: XMLTV file grabber for Enigma receivers
62+
63+
**Created by LeeD:**
64+
[xTeVe / Guide2go / Zap2XML](https://hub.docker.com/r/dnsforge/xteve)
65+
66+
Including:
67+
- Guide2go: XMLTV grabber for Schedules Direct
68+
- Zap2XML: Perl based zap2it XMLTV grabber
69+
- Bash: A Unix / Linux shell
70+
- Crond: Daemon to execute scheduled commands
71+
- Perl: Programming language
72+
73+
---
74+
75+
### Threadfin Beta branch
76+
New features and bug fixes are only available in beta branch. Only after successful testing are they are merged into the master branch.
77+
78+
**It is not recommended to use the beta version in a production system.**
79+
80+
With the command line argument `branch` the Git Branch can be changed. xTeVe must be started via the terminal.
81+
82+
#### Switch from master to beta branch:
83+
```
84+
xteve -branch beta
85+
86+
...
87+
[Threadfin] GitHub: https://github.com/Threadfin
88+
[Threadfin] Git Branch: beta [Threadfin]
89+
...
90+
```
91+
92+
#### Switch from beta to master branch:
93+
```
94+
threadfin -branch master
95+
96+
...
97+
[Threadfin] GitHub: https://github.com/Threadfin
98+
[Threadfin] Git Branch: master [Threadfin]
99+
...
100+
```
101+
102+
When the branch is changed, an update is only performed if there is a new version and the update function is activated in the settings.
103+
104+
---
105+
106+
## Build from source code [Go / Golang]
107+
108+
#### Requirements
109+
* [Go](https://golang.org) (go1.16.2 or newer)
110+
111+
#### Dependencies
112+
* [go-ssdp](https://github.com/koron/go-ssdp)
113+
* [websocket](https://github.com/gorilla/websocket)
114+
* [osext](https://github.com/kardianos/osext)
115+
116+
#### Build
117+
1. Download source code
118+
2. Install dependencies
119+
```
120+
go mod tidy
121+
```
122+
3. Build Threadfin
123+
```
124+
go build threadfin.go
125+
```
126+
127+
---
128+
129+
## Fork without pull request :mega:
130+
When creating a fork, the Threadfin GitHub account must be changed from the source code or the update function disabled.
131+
Future updates of Threadfin would update your fork. :wink:
132+
133+
threadfin.go - Line: 29
134+
```Go
135+
var GitHub = GitHubStruct{Branch: "main", User: "Threadfin", Repo: "Threadfin", Update: true}
136+
137+
/*
138+
Branch: GitHub Branch
139+
User: GitHub Username
140+
Repo: GitHub Repository
141+
Update: Automatic updates from the GitHub repository [true|false]
142+
*/
143+
144+
```
145+
146+

changelog-beta.md

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#### 2.1.1.0116-beta
2+
If no user agent is specified, the default FFmpeg or VLC user agent is used.
3+
4+
#### 2.1.1.0115-beta
5+
```diff
6+
+ GZIP compression for threadfin.xml file. (http://threadfin.ip:34400/xmltv/threadfin.xml.gz)
7+
- Removed protocol setting for reverse proxy. HTTPS can also be configured in the proxy, where it makes more sense.
8+
```
9+
10+
#### 2.1.0.0106-beta
11+
```diff
12+
+ User-Agent is now also used by VLC and FFmpeg.
13+
```
14+
15+
#### 2.1.0.0105-beta
16+
```diff
17+
+ Fixed wrong buffer value in log
18+
+ New setting: URL protocol for M3U and XML file
19+
+ Add xml tag premiere to threadfin.xml
20+
```
21+
22+
#### 2.1.0.0101-beta
23+
```diff
24+
+ Reverse proxy fix
25+
```
26+
27+
#### 2.0.3.0042-beta
28+
**Version 2.0.3.0042 changes the settings.json.**
29+
Settings from the current beta can not be used for the current master version 2.0.3
30+
- New default options for VLC and FFmpeg
31+
- VLC and FFmpeg log entries in the Threadfin log
32+
- Less CPU load with VLC and FFmpeg
33+
34+
#### 2.0.3.0035-beta
35+
```diff
36+
+ FFmpeg support
37+
+ VLC support
38+
```
39+
**Version 2.0.3.0035 changes the settings.json.**
40+
Settings from the current beta can not be used for the current master version 2.0.3
41+
42+
#### 2.0.2.0024-beta
43+
```diff
44+
+ Improved monitoring of the buffer process
45+
+ Update the XEPG database a bit faster
46+
```
47+
48+
##### Fixes
49+
- Error message if filter rule is missing
50+
- Channels are lost when saving again (Mapping)
51+
- Plex log, invalid source: IPTV
52+
53+
#### 2.0.1.0012-beta
54+
```diff
55+
+ Add support for "video/m2ts" video streams (Pull request #14)
56+
```
57+
#### 2.0.1.0011-beta
58+
```diff
59+
+ Original group title is shown in the Mapping Editor
60+
```
61+
##### Fixes
62+
- incorrect original-air-date
63+
64+
#### 2.0.1.0010-beta
65+
```diff
66+
+ Set timestamp to <episode-num system="original-air-date">
67+
```
68+
69+
#### 2.0.0.0008-beta
70+
##### Fixes
71+
- Pull request #6 [Error in http/https detection] window.location.protocol return "https:", not "https://"
72+
73+
#### 2.0.0.0007-beta
74+
```diff
75+
+ Buffer HLS: Add VOD tag from M3U8
76+
+ CLI: Add new arguments [-restore]
77+
+ CLI: Add new arguments [-info]
78+
```
79+
##### Fixes
80+
- Missing images with caching for localhost URL
81+
82+
83+
#### 2.0.0.0001-beta
84+
```diff
85+
+ Wizard: Add HTML input placeholder (M3U, XMLTV)
86+
+ Wizard: Alert by empty value (M3U, XMLTV)
87+
+ Image caching: Ignore invalid image URLs
88+
```

go.mod

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module threadfin
2+
3+
go 1.18
4+
5+
require (
6+
github.com/gorilla/websocket v1.5.0
7+
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0
8+
github.com/koron/go-ssdp v0.0.3
9+
golang.org/x/text v0.3.7
10+
)
11+
12+
require (
13+
golang.org/x/net v0.0.0-20220517181318-183a9ca12b87 // indirect
14+
golang.org/x/sys v0.0.0-20220519141025-dcacdad47464 // indirect
15+
)

go.sum

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
2+
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
3+
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
4+
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
5+
github.com/koron/go-ssdp v0.0.3 h1:JivLMY45N76b4p/vsWGOKewBQu6uf39y8l+AQ7sDKx8=
6+
github.com/koron/go-ssdp v0.0.3/go.mod h1:b2MxI6yh02pKrsyNoQUsk4+YNikaGhe4894J+Q5lDvA=
7+
golang.org/x/net v0.0.0-20220517181318-183a9ca12b87 h1:cCR+9mKLOGyX4Zx+uBZDXEDAQsvKQ/XbW4vreG5v1jU=
8+
golang.org/x/net v0.0.0-20220517181318-183a9ca12b87/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
9+
golang.org/x/sys v0.0.0-20220519141025-dcacdad47464 h1:MpIuURY70f0iKp/oooEFtB2oENcHITo/z1b6u41pKCw=
10+
golang.org/x/sys v0.0.0-20220519141025-dcacdad47464/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11+
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
12+
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=

html/configuration.html

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<!doctype html>
2+
<html>
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7+
<title>Threadfin</title>
8+
<link rel="stylesheet" href="css/screen.css" type="text/css">
9+
<link rel="stylesheet" href="css/base.css" type="text/css">
10+
<script language="javascript" type="text/javascript" src="js/configuration_ts.js"></script>
11+
<script language="javascript" type="text/javascript" src="js/network_ts.js"></script>
12+
<script language="javascript" type="text/javascript" src="js/menu_ts.js"></script>
13+
<script language="javascript" type="text/javascript" src="js/settings_ts.js"></script>
14+
<script language="javascript" type="text/javascript" src="js/base_ts.js"></script>
15+
</head>
16+
17+
<body onload="javascript: readyForConfiguration(0);">
18+
19+
<div id="loading" class="block">
20+
<div class="loader"></div>
21+
</div>
22+
23+
<div id="header" class="imgCenter"></div>
24+
<div id="box">
25+
26+
<table id="clientInfo" class="visible">
27+
<tr>
28+
<td class="tdKey">Version:</td>
29+
<td id="version" class="tdVal">&nbsp;</td>
30+
<td class="tdKey">OS:</td>
31+
<td id="os" class="tdVal">&nbsp;</td>
32+
</tr>
33+
<tr>
34+
<td class="tdKey">UUID:</td>
35+
<td id="uuid" class="tdVal">&nbsp;</td>
36+
<td class="tdKey">Arch:</td>
37+
<td id="arch" class="tdVal">&nbsp;</td>
38+
</tr>
39+
<tr>
40+
<td class="tdKey">Streams:</td>
41+
<td id="streams" class="tdVal">&nbsp;</td>
42+
<td class="tdKey">DVR:</td>
43+
<td id="DVR" class="tdVal">&nbsp;</td>
44+
</tr>
45+
</table>
46+
47+
<div id="headline">
48+
<h1 id="head-text" class="center">Configuration</h1>
49+
</div>
50+
<p id="err" class="errorMsg center"></p>
51+
<div id="content">
52+
53+
</div>
54+
<div id="box-footer">
55+
<input id="next" class="" type="button" name="next" value="Next" onclick="javascript: saveWizard();">
56+
</div>
57+
</div>
58+
</body>
59+
60+
</html>

0 commit comments

Comments
 (0)