mirror of
https://github.com/Free-TV/IPTV.git
synced 2026-09-29 21:25:44 +02:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cb0731f527 |
@@ -1,19 +1,7 @@
|
|||||||
IPTV Playlist Project
|
Free TV
|
||||||
======
|
=======
|
||||||
|
|
||||||
Welcome to the IPTV project! This repository offers a curated collection of free TV playlists for IPTV players, providing access to various channels from around the world.
|
This is an M3U playlist for free TV channels around the World.
|
||||||
|
|
||||||
Table of Contents
|
|
||||||
======
|
|
||||||
|
|
||||||
1. Introduction
|
|
||||||
2. Philosophy
|
|
||||||
3. Installation & Usage
|
|
||||||
4. Feed Sources
|
|
||||||
5. Format
|
|
||||||
7. Contributing
|
|
||||||
8. Pull Requests
|
|
||||||
9. License
|
|
||||||
|
|
||||||
Either free locally (over the air):
|
Either free locally (over the air):
|
||||||
|
|
||||||
@@ -109,10 +97,6 @@ Or free on the Internet:
|
|||||||
|
|
||||||
To use it point your IPTV player to https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8.
|
To use it point your IPTV player to https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8.
|
||||||
|
|
||||||
Introduction
|
|
||||||
======
|
|
||||||
This project provides a collection of free IPTV playlists, allowing users to stream live TV channels thorugh compatible IPTV players. The playlists are community-driven, regularly updated, and intended for users looking for a wide range of channels.Channels are free-to-air or sourced from free online platforms, ensuring that users only access legal content.
|
|
||||||
|
|
||||||
Philosophy
|
Philosophy
|
||||||
==========
|
==========
|
||||||
|
|
||||||
@@ -142,38 +126,19 @@ This is a playlist for everybody.
|
|||||||
- No channels dedicated to any particular political party
|
- No channels dedicated to any particular political party
|
||||||
- No channels made for a country and funded by a different country
|
- No channels made for a country and funded by a different country
|
||||||
|
|
||||||
Installation and Usage
|
|
||||||
======
|
|
||||||
|
|
||||||
**To use playlists**
|
|
||||||
|
|
||||||
1. Download or clone this repository
|
|
||||||
2. Use any IPTV player (e.g. VLC, Kodi, IPTV Smarters) to load the '.m3u' file or copy the URL into your player.
|
|
||||||
|
|
||||||
**Reccomended Players:**
|
|
||||||
|
|
||||||
- VLC Media Player
|
|
||||||
- Kodi
|
|
||||||
- IPTV Smarters
|
|
||||||
|
|
||||||
**How to Use:**
|
|
||||||
|
|
||||||
1. Open your IPTV player.
|
|
||||||
Import the playlist file or URL.
|
|
||||||
Start streaming live TV channels!
|
|
||||||
|
|
||||||
Feed sources
|
Feed sources
|
||||||
============
|
============
|
||||||
|
|
||||||
Finding up-to-date URLs can be difficult. Here are some useful sources:
|
It can be quite hard to find up to date URLs, here's a list of sources:
|
||||||
|
|
||||||
- https://github.com/iptv-org/iptv/tree/master/streams
|
- https://github.com/iptv-org/iptv/tree/master/streams
|
||||||
- Live streams from platforms like YouTube and Dailymotion, ensuring the stream is active and stable.
|
- Youtube: As long as the channel is live and its URL doesn't change (check the age of the stream, the number of viewers..)
|
||||||
|
- Dailymotion: Same criteria as for youtube
|
||||||
|
|
||||||
Format
|
Format
|
||||||
======
|
======
|
||||||
|
|
||||||
The m3u8 playlist is generated by `make_playlist.py`, using the `.md` files in the `lists` directory.
|
The m3u8 playlist is generated by `make_playlist.py`, using the `.md` files located in `lists`.
|
||||||
|
|
||||||
Each .md file represesnts a group. The `<h1>` line is used as the group title.
|
Each .md file represesnts a group. The `<h1>` line is used as the group title.
|
||||||
|
|
||||||
@@ -190,16 +155,7 @@ Issues
|
|||||||
|
|
||||||
Only create issues for bugs and feature requests.
|
Only create issues for bugs and feature requests.
|
||||||
|
|
||||||
Do not create issues for adding, editing, or removing channels. For these, please submit a pull request.
|
Do not create issues to add/edit or to remove channels. If you want to add/edit/remove channels, create a pull request directly.
|
||||||
|
|
||||||
Contributing
|
|
||||||
======
|
|
||||||
|
|
||||||
**Contributions are welcome! To contribute:**
|
|
||||||
|
|
||||||
1. Fork the repository.
|
|
||||||
2. Create a new branch for your changes.
|
|
||||||
3. Submit a pull request with your updates.
|
|
||||||
|
|
||||||
Pull Requests
|
Pull Requests
|
||||||
=============
|
=============
|
||||||
@@ -221,15 +177,10 @@ To add a new channel, make a Pull Request.
|
|||||||
|
|
||||||
**Removing a Channel**
|
**Removing a Channel**
|
||||||
|
|
||||||
- To remove a channel, make a Pull Request.
|
To remove a channel, make a Pull Request.
|
||||||
|
|
||||||
- In your Pull Request you need to provide information to show that the channel is only available via a private paid subscription.
|
In your Pull Request you need to provide information to show that the channel is only available via a private paid subscription.
|
||||||
|
|
||||||
- Note: Public taxes (whether national or regional, whether called TV License or not) do not constitute a private paid subscription.
|
Note: Public taxes (whether national or regional, whether called TV License or not) do not constitute a private paid subscription.
|
||||||
|
|
||||||
- If a stream is broken, simply move the channel to the invalid category and replace `[>]` with `[x]` in the url column.
|
If a stream is broken, simply move the channel to the invalid category and replace `[>]` with `[x]` in the url column.
|
||||||
|
|
||||||
License
|
|
||||||
======
|
|
||||||
|
|
||||||
This project currently does not have a license. Please clarify the licensing terms before using or contributing.
|
|
||||||
|
|||||||
+4
-4
@@ -96,21 +96,21 @@ class Channel: # pylint: disable=too-few-public-methods,too-many-instance-attri
|
|||||||
"""A single channel entry parsed from a markdown list line."""
|
"""A single channel entry parsed from a markdown list line."""
|
||||||
|
|
||||||
def __init__(self, group, md_line, country_code=""):
|
def __init__(self, group, md_line, country_code=""):
|
||||||
self.group = group.replace('"', '')
|
self.group = group
|
||||||
self.country_code = country_code
|
self.country_code = country_code
|
||||||
md_line = md_line.strip()
|
md_line = md_line.strip()
|
||||||
parts = md_line.split("|")
|
parts = md_line.split("|")
|
||||||
self.number = parts[1].strip()
|
self.number = parts[1].strip()
|
||||||
self.name = parts[2].strip().replace('"', '')
|
self.name = parts[2].strip()
|
||||||
self.url = parts[3].strip()
|
self.url = parts[3].strip()
|
||||||
self.url = self.url[self.url.find("(")+1:self.url.rfind(")")]
|
self.url = self.url[self.url.find("(")+1:self.url.rfind(")")]
|
||||||
self.logo = parts[4].strip()
|
self.logo = parts[4].strip()
|
||||||
self.logo = self.logo[self.logo.find('src="')+5:self.logo.rfind('"')].replace('"', '')
|
self.logo = self.logo[self.logo.find('src="')+5:self.logo.rfind('"')]
|
||||||
|
|
||||||
self.chno = self.number if self.number and self.number != "0" else None
|
self.chno = self.number if self.number and self.number != "0" else None
|
||||||
|
|
||||||
if len(parts) > 6:
|
if len(parts) > 6:
|
||||||
self.epg = parts[5].strip().replace('"', '')
|
self.epg = parts[5].strip()
|
||||||
else:
|
else:
|
||||||
self.epg = None
|
self.epg = None
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user