mirror of
https://github.com/lalifeier/IPTV.git
synced 2025-12-16 23:10:57 +08:00
init
This commit is contained in:
45
.devcontainer/Dockerfile
Normal file
45
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
FROM mcr.microsoft.com/devcontainers/base:jammy
|
||||||
|
# FROM mcr.microsoft.com/devcontainers/base:jammy
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
ARG USER=vscode
|
||||||
|
|
||||||
|
RUN DEBIAN_FRONTEND=noninteractive \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y build-essential --no-install-recommends make \
|
||||||
|
ca-certificates \
|
||||||
|
git \
|
||||||
|
libssl-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
libbz2-dev \
|
||||||
|
libreadline-dev \
|
||||||
|
libsqlite3-dev \
|
||||||
|
wget \
|
||||||
|
curl \
|
||||||
|
llvm \
|
||||||
|
libncurses5-dev \
|
||||||
|
xz-utils \
|
||||||
|
tk-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libxmlsec1-dev \
|
||||||
|
libffi-dev \
|
||||||
|
liblzma-dev
|
||||||
|
|
||||||
|
# Python and poetry installation
|
||||||
|
USER $USER
|
||||||
|
ARG HOME="/home/$USER"
|
||||||
|
ARG PYTHON_VERSION=3.11
|
||||||
|
# ARG PYTHON_VERSION=3.10
|
||||||
|
|
||||||
|
ENV PYENV_ROOT="${HOME}/.pyenv"
|
||||||
|
ENV PATH="${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${HOME}/.local/bin:$PATH"
|
||||||
|
|
||||||
|
RUN echo "done 0" \
|
||||||
|
&& curl https://pyenv.run | bash \
|
||||||
|
&& echo "done 1" \
|
||||||
|
&& pyenv install ${PYTHON_VERSION} \
|
||||||
|
&& echo "done 2" \
|
||||||
|
&& pyenv global ${PYTHON_VERSION} \
|
||||||
|
&& echo "done 3" \
|
||||||
|
&& curl -sSL https://install.python-poetry.org | python3 - \
|
||||||
|
&& poetry config virtualenvs.in-project true
|
||||||
29
.devcontainer/devcontainer.json
Normal file
29
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"name": "poetry3-poetry-pyenv",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "Dockerfile"
|
||||||
|
},
|
||||||
|
|
||||||
|
// 👇 Features to add to the Dev Container. More info: https://containers.dev/implementors/features.
|
||||||
|
// "features": {},
|
||||||
|
|
||||||
|
// 👇 Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||||
|
// "forwardPorts": [],
|
||||||
|
|
||||||
|
// 👇 Use 'postCreateCommand' to run commands after the container is created.
|
||||||
|
// "postCreateCommand": "",
|
||||||
|
|
||||||
|
// 👇 Configure tool-specific properties.
|
||||||
|
"customizations": {
|
||||||
|
"vscode": {
|
||||||
|
"extensions":["ms-python.python", "njpwerner.autodocstring"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"features": {
|
||||||
|
"ghcr.io/devcontainers/features/node:1": {},
|
||||||
|
"ghcr.io/balazs23/devcontainers-features/bazel:1": {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 👇 Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||||
|
// "remoteUser": "root"
|
||||||
|
}
|
||||||
6
.flake8
Normal file
6
.flake8
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[flake8]
|
||||||
|
max-line-length = 120
|
||||||
|
extend-ignore = E203
|
||||||
|
exclude =
|
||||||
|
v_parse
|
||||||
|
tests
|
||||||
39
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
39
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
name: 🐛 Bug Report
|
||||||
|
description: Create a new ticket for a bug
|
||||||
|
title: "🐛 [BUG] - <title>"
|
||||||
|
labels: ['bug']
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: >
|
||||||
|
#### Before submitting a bug, please make sure the issue hasn't been already addressed by searching through [the existing and past issues](https://github.com/lalifeier/IPTV/issues?q=is%3Aissue+sort%3Acreated-desc+).
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: 🐛 Describe the bug
|
||||||
|
description: |
|
||||||
|
Please provide a clear and concise description of what the bug is.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: 🌐 Network Environment
|
||||||
|
description: |
|
||||||
|
Please provide details about your network environment (e.g., ISP, connection type, VPN, etc.).
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: 📺 Player
|
||||||
|
description: |
|
||||||
|
Please provide details about the player you are using (e.g., VLC, MPV, web player, etc.).
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: >
|
||||||
|
Thanks for contributing 🎉!
|
||||||
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
20
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: 🚀 Feature request
|
||||||
|
description: Create a new ticket for a new feature request
|
||||||
|
title: "🚀 [FEATURE] - <title>"
|
||||||
|
labels: ['question']
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: 🚀 Feature Description
|
||||||
|
description: >
|
||||||
|
A clear and concise description of the feature proposal. Please outline the motivation for the proposal.
|
||||||
|
Is your feature request related to a specific problem? For example, *"I'm working on X and would like Y to be possible"*.
|
||||||
|
If this is related to another GitHub issue, please link it here.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: >
|
||||||
|
Thanks for contributing 🎉!
|
||||||
62
.github/workflows/ci.yml
vendored
Normal file
62
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
#----------------------------------------------
|
||||||
|
# check-out repo and set-up python
|
||||||
|
#----------------------------------------------
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
- name: Set up python
|
||||||
|
id: setup-python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: "3.11"
|
||||||
|
#----------------------------------------------
|
||||||
|
# ----- install & configure poetry -----
|
||||||
|
#----------------------------------------------
|
||||||
|
- name: Install Poetry
|
||||||
|
uses: snok/install-poetry@v1
|
||||||
|
with:
|
||||||
|
virtualenvs-create: true
|
||||||
|
virtualenvs-in-project: true
|
||||||
|
installer-parallel: true
|
||||||
|
|
||||||
|
#----------------------------------------------
|
||||||
|
# load cached venv if cache exists
|
||||||
|
#----------------------------------------------
|
||||||
|
- name: Load cached venv
|
||||||
|
id: cached-poetry-dependencies
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: .venv
|
||||||
|
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
|
||||||
|
#----------------------------------------------
|
||||||
|
# install dependencies if cache does not exist
|
||||||
|
#----------------------------------------------
|
||||||
|
- name: Install dependencies
|
||||||
|
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
|
||||||
|
run: poetry install --no-interaction --no-root && poetry install --no-interaction --no-root --with test
|
||||||
|
#----------------------------------------------
|
||||||
|
# install your root project, if required
|
||||||
|
#----------------------------------------------
|
||||||
|
- name: Install project
|
||||||
|
run: poetry install --no-interaction && poetry install --no-interaction --with test
|
||||||
|
#----------------------------------------------
|
||||||
|
# run test suite
|
||||||
|
#----------------------------------------------
|
||||||
|
# - name: Run tests
|
||||||
|
# run: |
|
||||||
|
# source .venv/bin/activate
|
||||||
|
# pytest tests/
|
||||||
|
# coverage report
|
||||||
38
.github/workflows/cleanup.yml
vendored
Normal file
38
.github/workflows/cleanup.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
name: Monthly Cleanup
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '30 0 1 * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
cleanup:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Set up Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'temurin'
|
||||||
|
|
||||||
|
- name: Download BFG
|
||||||
|
run: curl -Lo bfg.jar https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar
|
||||||
|
|
||||||
|
- name: Delete all files with BFG
|
||||||
|
run: java -jar bfg.jar --delete-all-files .
|
||||||
|
|
||||||
|
# 或者,如果要删除特定文件:
|
||||||
|
# - name: Delete specific files with BFG
|
||||||
|
# run: java -jar bfg.jar --delete-files '要删除的文件名' .
|
||||||
|
|
||||||
|
|
||||||
|
- name: Commit changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_message: "Monthly cleanup with BFG"
|
||||||
|
branch: main
|
||||||
|
push_options: --force
|
||||||
39
.github/workflows/epg.yml
vendored
Normal file
39
.github/workflows/epg.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
name: Auto Update EPG
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: "5 1 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
epg:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions: write-all
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Run Update EPG Files
|
||||||
|
run: |
|
||||||
|
rm -f e.xml
|
||||||
|
wget https://epg.112114.xyz/pp.xml -O e.xml
|
||||||
|
|
||||||
|
- name: Git Auto Commit
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_message: Auto Update EPG
|
||||||
|
branch: main
|
||||||
|
push_options: '--force'
|
||||||
|
|
||||||
|
- name: Delete workflow runs
|
||||||
|
uses: MajorScruffy/delete-old-workflow-runs@v0.3.0
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}
|
||||||
|
workflow: ".github/workflows/epg.yml"
|
||||||
|
older-than-seconds: 3600
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
64
.github/workflows/iptv.yml
vendored
Normal file
64
.github/workflows/iptv.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
name: Auto Update IPTV
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 * * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
iptv:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions: write-all
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Set up Python 3.11
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: 3.11
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
- name: Get Currrent Date
|
||||||
|
run: echo "DATE=$(date +'%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Run Update IPTV
|
||||||
|
run: |
|
||||||
|
python iptv.py
|
||||||
|
env:
|
||||||
|
SALT: ${{ secrets.SALT }}
|
||||||
|
PROXY_URL: ${{ secrets.PROXY_URL }}
|
||||||
|
|
||||||
|
- name: Update Deployment Time
|
||||||
|
run: |
|
||||||
|
if grep -q "Last deployment time:" README.md; then
|
||||||
|
sed -i "/Last deployment time:/c\Last deployment time: $DATE" README.md
|
||||||
|
else
|
||||||
|
echo "Last deployment time: $DATE" >> README.md
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Git Auto Commit
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_message: Auto Update IPTV
|
||||||
|
branch: main
|
||||||
|
push_options: '--force'
|
||||||
|
|
||||||
|
- name: Delete workflow runs
|
||||||
|
uses: MajorScruffy/delete-old-workflow-runs@v0.3.0
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}
|
||||||
|
workflow: ".github/workflows/iptv.yml"
|
||||||
|
older-than-seconds: 3600
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
50
.github/workflows/iptv_hotel_ip.yml
vendored
Normal file
50
.github/workflows/iptv_hotel_ip.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Auto Update Hotel IPTV IP
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: "5 2 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
iptv:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions: write-all
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Set up Python 3.11
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: 3.11
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install -r requirements.txt && playwright install && playwright install-deps
|
||||||
|
|
||||||
|
- name: Get Currrent Date
|
||||||
|
run: echo "DATE=$(date +'%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Run Update Hotel IPTV
|
||||||
|
run: |
|
||||||
|
python main.py --type hotel --ip
|
||||||
|
|
||||||
|
- name: Git Auto Commit
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_message: Auto Update IPTV
|
||||||
|
branch: main
|
||||||
|
push_options: '--force'
|
||||||
|
|
||||||
|
- name: Delete workflow runs
|
||||||
|
uses: MajorScruffy/delete-old-workflow-runs@v0.3.0
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}
|
||||||
|
workflow: ".github/workflows/iptv_hotel_ip.yml"
|
||||||
|
older-than-seconds: 3600
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
50
.github/workflows/iptv_hotel_playlist.yml
vendored
Normal file
50
.github/workflows/iptv_hotel_playlist.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Auto Update Hotel IPTV
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: "15 6,12,18,22 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
iptv:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions: write-all
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Set up Python 3.11
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: 3.11
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install -r requirements.txt && playwright install && playwright install-deps
|
||||||
|
|
||||||
|
- name: Get Currrent Date
|
||||||
|
run: echo "DATE=$(date +'%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Run Update Hotel IPTV
|
||||||
|
run: |
|
||||||
|
python main.py --type hotel --playlist
|
||||||
|
|
||||||
|
- name: Git Auto Commit
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_message: Auto Update IPTV
|
||||||
|
branch: main
|
||||||
|
push_options: '--force'
|
||||||
|
|
||||||
|
- name: Delete workflow runs
|
||||||
|
uses: MajorScruffy/delete-old-workflow-runs@v0.3.0
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}
|
||||||
|
workflow: ".github/workflows/iptv_hotel_playlist.yml"
|
||||||
|
older-than-seconds: 3600
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
50
.github/workflows/iptv_udpxy_ip.yml
vendored
Normal file
50
.github/workflows/iptv_udpxy_ip.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Auto Update udpxy IPTV IP
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: "5 8,16 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
iptv:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions: write-all
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Set up Python 3.11
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: 3.11
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install -r requirements.txt && playwright install && playwright install-deps
|
||||||
|
|
||||||
|
- name: Get Currrent Date
|
||||||
|
run: echo "DATE=$(date +'%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Run Update udpxy IPTV
|
||||||
|
run: |
|
||||||
|
python main.py --type udpxy --ip
|
||||||
|
|
||||||
|
- name: Git Auto Commit
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_message: Auto Update IPTV
|
||||||
|
branch: main
|
||||||
|
push_options: '--force'
|
||||||
|
|
||||||
|
- name: Delete workflow runs
|
||||||
|
uses: MajorScruffy/delete-old-workflow-runs@v0.3.0
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}
|
||||||
|
workflow: ".github/workflows/iptv_udpxy_ip.yml"
|
||||||
|
older-than-seconds: 3600
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
50
.github/workflows/iptv_udpxy_playlist.yml
vendored
Normal file
50
.github/workflows/iptv_udpxy_playlist.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Auto Update udpxy IPTV
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: "45 6,12,18,22 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
iptv:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions: write-all
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Set up Python 3.11
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: 3.11
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install -r requirements.txt && playwright install && playwright install-deps
|
||||||
|
|
||||||
|
- name: Get Currrent Date
|
||||||
|
run: echo "DATE=$(date +'%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Run Update udpxy IPTV
|
||||||
|
run: |
|
||||||
|
python main.py --type udpxy --playlist
|
||||||
|
|
||||||
|
- name: Git Auto Commit
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_message: Auto Update IPTV
|
||||||
|
branch: main
|
||||||
|
push_options: '--force'
|
||||||
|
|
||||||
|
- name: Delete workflow runs
|
||||||
|
uses: MajorScruffy/delete-old-workflow-runs@v0.3.0
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}
|
||||||
|
workflow: ".github/workflows/iptv_udpxy_playlist.yml"
|
||||||
|
older-than-seconds: 3600
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
50
.github/workflows/iptv_udpxy_rtp.yml
vendored
Normal file
50
.github/workflows/iptv_udpxy_rtp.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Auto Update udpxy RTP IPTV
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: "5 4 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
iptv:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions: write-all
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Set up Python 3.11
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: 3.11
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install -r requirements.txt && playwright install && playwright install-deps
|
||||||
|
|
||||||
|
- name: Get Currrent Date
|
||||||
|
run: echo "DATE=$(date +'%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Run Update udpxy IPTV
|
||||||
|
run: |
|
||||||
|
python main.py --type udpxy --rtp
|
||||||
|
|
||||||
|
- name: Git Auto Commit
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_message: Auto Update IPTV
|
||||||
|
branch: main
|
||||||
|
push_options: '--force'
|
||||||
|
|
||||||
|
- name: Delete workflow runs
|
||||||
|
uses: MajorScruffy/delete-old-workflow-runs@v0.3.0
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}
|
||||||
|
workflow: ".github/workflows/iptv_udpxy_rtp.yml"
|
||||||
|
older-than-seconds: 3600
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
43
.github/workflows/pull_request_lint.yml
vendored
Normal file
43
.github/workflows/pull_request_lint.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: Pull Request Linting
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, synchronize, reopened]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint_pull_requests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Lint pull request
|
||||||
|
run: |
|
||||||
|
echo "Performing lint checks on the pull request"
|
||||||
|
# Add your linting commands or scripts here
|
||||||
|
# For example, running a linting tool or script
|
||||||
|
# ./run-lint.sh
|
||||||
|
|
||||||
|
- name: Check for stale pull requests
|
||||||
|
uses: actions/stale@v9
|
||||||
|
with:
|
||||||
|
days-before-stale: 30
|
||||||
|
days-before-close: 7
|
||||||
|
stale-message: "This pull request has been marked as stale due to inactivity."
|
||||||
|
closed-message: "This pull request has been closed due to inactivity."
|
||||||
|
|
||||||
|
- name: Comment on pull request
|
||||||
|
if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' }}
|
||||||
|
uses: actions-ecosystem/action-create-comment@v1
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
body: |
|
||||||
|
Hi @${{ github.event.pull_request.user.login }}, thank you for your pull request. We will review it soon.
|
||||||
176
.gitignore
vendored
Normal file
176
.gitignore
vendored
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
cover/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
.pybuilder/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
# For a library or package, you might want to ignore these files since the code is
|
||||||
|
# intended to run in multiple environments; otherwise, check them in:
|
||||||
|
# .python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
#Pipfile.lock
|
||||||
|
|
||||||
|
# poetry
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||||
|
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||||
|
# commonly ignored for libraries.
|
||||||
|
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||||
|
#poetry.lock
|
||||||
|
|
||||||
|
# pdm
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||||
|
#pdm.lock
|
||||||
|
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||||
|
# in version control.
|
||||||
|
# https://pdm.fming.dev/#use-with-ide
|
||||||
|
.pdm.toml
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# Cython debug symbols
|
||||||
|
cython_debug/
|
||||||
|
|
||||||
|
# PyCharm
|
||||||
|
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||||
|
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||||
|
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||||
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
|
#.idea/
|
||||||
|
|
||||||
|
logs
|
||||||
|
|
||||||
|
node_modules/
|
||||||
|
data/
|
||||||
|
constraints.txt
|
||||||
|
|
||||||
|
# Bazel directories
|
||||||
|
/bazel-*
|
||||||
|
/bazel-bin
|
||||||
|
/bazel-genfiles
|
||||||
|
/bazel-out
|
||||||
|
/bazel-testlogs
|
||||||
|
user.bazelrc
|
||||||
|
|
||||||
|
.vercel
|
||||||
101
.pre-commit-config.yaml
Normal file
101
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
# sets up .pre-commit-ci.yaml to ensure pre-commit dependencies stay up to date
|
||||||
|
ci:
|
||||||
|
autoupdate_schedule: weekly
|
||||||
|
skip: []
|
||||||
|
submodules: false
|
||||||
|
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v4.4.0
|
||||||
|
hooks:
|
||||||
|
- id: check-added-large-files
|
||||||
|
- id: check-case-conflict
|
||||||
|
- id: check-merge-conflict
|
||||||
|
- id: check-toml
|
||||||
|
- id: check-yaml
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
- repo: https://github.com/asottile/pyupgrade
|
||||||
|
rev: v3.3.1
|
||||||
|
hooks:
|
||||||
|
- id: pyupgrade
|
||||||
|
args: [--py39-plus]
|
||||||
|
- repo: https://github.com/pycqa/isort
|
||||||
|
rev: 5.11.4
|
||||||
|
hooks:
|
||||||
|
- id: isort
|
||||||
|
- repo: https://github.com/psf/black
|
||||||
|
rev: 22.12.0
|
||||||
|
hooks:
|
||||||
|
- id: black
|
||||||
|
# - repo: https://github.com/myint/autoflake
|
||||||
|
# rev: v2.0.0
|
||||||
|
# hooks:
|
||||||
|
# - id: autoflake
|
||||||
|
# args:
|
||||||
|
# [
|
||||||
|
# --in-place,
|
||||||
|
# --remove-all-unused-imports,
|
||||||
|
# --remove-unused-variable,
|
||||||
|
# --ignore-init-module-imports,
|
||||||
|
# ]
|
||||||
|
- repo: https://github.com/PyCQA/flake8
|
||||||
|
rev: 6.0.0
|
||||||
|
hooks:
|
||||||
|
- id: flake8
|
||||||
|
# - repo: https://github.com/pre-commit/mirrors-mypy
|
||||||
|
# rev: v0.991
|
||||||
|
# hooks:
|
||||||
|
# - id: mypy
|
||||||
|
# - repo: https://github.com/asottile/blacken-docs
|
||||||
|
# rev: v1.12.1
|
||||||
|
# hooks:
|
||||||
|
# - id: blacken-docs
|
||||||
|
|
||||||
|
# - repo: local
|
||||||
|
# hooks:
|
||||||
|
# - id: isort
|
||||||
|
# name: isort
|
||||||
|
# stages: [commit]
|
||||||
|
# language: system
|
||||||
|
# entry: poetry run isort
|
||||||
|
# types: [python]
|
||||||
|
|
||||||
|
# - id: black
|
||||||
|
# name: black
|
||||||
|
# stages: [commit]
|
||||||
|
# language: system
|
||||||
|
# entry: poetry run black
|
||||||
|
# types: [python]
|
||||||
|
|
||||||
|
# - id: flake8
|
||||||
|
# name: flake8
|
||||||
|
# stages: [commit]
|
||||||
|
# language: system
|
||||||
|
# entry: poetry run flake8
|
||||||
|
# types: [python]
|
||||||
|
|
||||||
|
# - id: mypy
|
||||||
|
# name: mypy
|
||||||
|
# stages: [commit]
|
||||||
|
# language: system
|
||||||
|
# entry: poetry run mypy .
|
||||||
|
# types: [python]
|
||||||
|
# pass_filenames: false
|
||||||
|
|
||||||
|
# - id: pytest
|
||||||
|
# name: pytest
|
||||||
|
# stages: [commit]
|
||||||
|
# language: system
|
||||||
|
# entry: poetry run pytest -v
|
||||||
|
# types: [python]
|
||||||
|
# pass_filenames: false
|
||||||
|
# always_run: true
|
||||||
|
|
||||||
|
# - id: pytest-cov
|
||||||
|
# name: pytest-cov
|
||||||
|
# stages: [push]
|
||||||
|
# language: system
|
||||||
|
# entry: poetry run pytest -v --cov --cov-fail-under=0
|
||||||
|
# types: [python]
|
||||||
|
# pass_filenames: false
|
||||||
|
# always_run: true
|
||||||
1
.python-version
Normal file
1
.python-version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.11.1
|
||||||
8
.vscode/extensions.json
vendored
Normal file
8
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"ms-vscode.cpptools",
|
||||||
|
"ms-python.python",
|
||||||
|
"ms-python.vscode-pylance",
|
||||||
|
"bungcip.better-toml"
|
||||||
|
]
|
||||||
|
}
|
||||||
26
.vscode/launch.json
vendored
Normal file
26
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Python: Current File",
|
||||||
|
"type": "python",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${file}",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"justMyCode": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Python: FastAPI",
|
||||||
|
"type": "python",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${workspaceFolder}/main.py",
|
||||||
|
// "module": "uvicorn"
|
||||||
|
// "args": ["v_parse.server:app", "--reload", "--port", "8080"]
|
||||||
|
"jinja": true,
|
||||||
|
"justMyCode": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
17
.vscode/settings.json
vendored
Normal file
17
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
// Python & Pylance Setup
|
||||||
|
"python.languageServer": "Pylance",
|
||||||
|
// "python.envFile": "${workspaceFolder}/.env",
|
||||||
|
// "python.venvFolders": ["~/.cache/pypoetry/virtualenvs"],
|
||||||
|
// "python.defaultInterpreterPath": "/usr/bin/python",
|
||||||
|
|
||||||
|
// We use "black" as a formatter:
|
||||||
|
"python.formatting.provider": "black",
|
||||||
|
"python.formatting.blackArgs": ["--line-length", "120"],
|
||||||
|
|
||||||
|
// Use flake8 for linting
|
||||||
|
"python.linting.enabled": true,
|
||||||
|
"python.linting.pylintEnabled": false,
|
||||||
|
"python.linting.flake8Enabled": true,
|
||||||
|
"python.linting.flake8Args": ["--max-line-length=120"]
|
||||||
|
}
|
||||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 lalifeier
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
104
README.md
Normal file
104
README.md
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|

|
||||||
|
|
||||||
|
## ⚠️ 警告
|
||||||
|
|
||||||
|
- **本项目出于个人兴趣,仅供学习使用,禁止用于商业化活动。**
|
||||||
|
- **直播源均来自网络,仅供学习交流使用,未经版权方同意不得商用。因私自商用引发的问题,本人概不负责,感谢理解!**
|
||||||
|
- **请批判性看待部分电视节目内容,节目观点仅代表主持人与嘉宾,不代表作者立场。**
|
||||||
|
- **如本仓库中部分内容存在侵权行为,请留言联系我删除。**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 订阅链接
|
||||||
|
|
||||||
|
- **TXT 订阅链接**
|
||||||
|
- `https://proxy.lalifeier.eu.org/https://raw.githubusercontent.com/lalifeier/IPTV/main/txt/IPTV.txt`
|
||||||
|
|
||||||
|
- **M3U 订阅链接**
|
||||||
|
- `https://proxy.lalifeier.eu.org/https://raw.githubusercontent.com/lalifeier/IPTV/main/m3u/IPTV.m3u`
|
||||||
|
|
||||||
|
- **酒店源 TXT 订阅链接**
|
||||||
|
- `https://proxy.lalifeier.eu.org/https://raw.githubusercontent.com/lalifeier/IPTV/main/txt/hotel/全国.txt`
|
||||||
|
|
||||||
|
- **组播源 TXT 订阅链接**
|
||||||
|
- `https://proxy.lalifeier.eu.org/https://raw.githubusercontent.com/lalifeier/IPTV/main/txt/udpxy/全国.txt`
|
||||||
|
|
||||||
|
- **聚合直播源 订阅链接**
|
||||||
|
- `https://proxy.lalifeier.eu.org/https://raw.githubusercontent.com/lalifeier/IPTV/main/m3u/Live.m3u`
|
||||||
|
|
||||||
|
- **虎牙直播源 订阅链接**
|
||||||
|
- `https://proxy.lalifeier.eu.org/https://raw.githubusercontent.com/lalifeier/IPTV/main/m3u/huya.m3u`
|
||||||
|
|
||||||
|
- **斗鱼直播源 订阅链接**
|
||||||
|
- `https://proxy.lalifeier.eu.org/https://raw.githubusercontent.com/lalifeier/IPTV/main/m3u/douyu.m3u`
|
||||||
|
|
||||||
|
- **YY直播源 订阅链接**
|
||||||
|
- `https://proxy.lalifeier.eu.org/https://raw.githubusercontent.com/lalifeier/IPTV/main/m3u/yy.m3u`
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 使用教程
|
||||||
|
|
||||||
|
### 1️⃣ 基于安卓系统的智能电视/电视盒子
|
||||||
|
|
||||||
|
1. 在智能电视/电视盒子上安装 DIPY 直播 APP:[点我下载](http://x-x-xxx.github.io/diyp/DIYP%E5%BD%B1%E9%9F%B3%E7%BB%8F%E5%85%B8%E7%89%88.apk)
|
||||||
|
2. 添加 `TXT` 订阅链接(若不方便输入可以考虑使用外接键盘或者一些手机遥控软件)
|
||||||
|
- **使用订阅链接实现自动更新**
|
||||||
|
- 遥控器按:【设置】键 — 选择【接口设置】—【节目地址】
|
||||||
|
- 填入上面提供的 TXT 订阅链接
|
||||||
|
- 重启后生效
|
||||||
|
- **手动添加直播源**
|
||||||
|
- 遥控器按:【设置】键 — 选择【显示设置】—【自定义源】
|
||||||
|
- 使用电脑等设备访问 WEB 控制台
|
||||||
|
- 添加分类(如央视、卫视、港澳台)并在对应分类填入相应的直播源
|
||||||
|
- 添加后 DIPY APP 会立刻刷新,即可观看
|
||||||
|
|
||||||
|
3. 最后设置开机自启动即可(可选)
|
||||||
|
|
||||||
|
### 2️⃣ Apple TV 和 APTV
|
||||||
|
|
||||||
|
1. 在 App Store 下载 [**Apple TV**](https://apps.apple.com/us/app/apple-tv/id1174078549) 或 [**APTV**](https://apps.apple.com/us/app/aptv/id1630403500) 软件
|
||||||
|
2. 添加 `M3U` 订阅链接
|
||||||
|
|
||||||
|
|
||||||
|
### 3️⃣ Jellyfin、Emby、Plex 等流媒体管理软件
|
||||||
|
|
||||||
|
1. 添加 `M3U` 订阅链接
|
||||||
|
2. 添加指南数据源:选择 `XmlTV`,添加此网址:`https://raw.githubusercontent.com/lalifeier/IPTV/main/e.xml`
|
||||||
|
|
||||||
|
### 4️⃣ Windows
|
||||||
|
|
||||||
|
1. 使用 Potplayer 播放器播放 `M3U` 文件即可
|
||||||
|
2. M3U 文件:[点击下载](https://proxy.lalifeier.eu.org/https://raw.githubusercontent.com/lalifeier/IPTV/main/m3u/IPTV.m3u)
|
||||||
|
3. Potplayer 播放器:[点击下载](http://potplayer.tv/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ❇️ 参考资料
|
||||||
|
|
||||||
|
- 直播源
|
||||||
|
- <https://epg.pw/test_channel_page.html>
|
||||||
|
- [iptv.org](https://github.com/iptv-org/iptv)
|
||||||
|
- [YueChan/Live](https://github.com/YueChan/Live)
|
||||||
|
- [YanG-1989/m3u](https://github.com/YanG-1989/m3u)
|
||||||
|
- [fanmingming/live](https://github.com/fanmingming/live)
|
||||||
|
- [ChiSheng9/iptv](https://github.com/ChiSheng9/iptv)
|
||||||
|
- [joevess/IPTV](https://github.com/joevess/IPTV)
|
||||||
|
- EPG
|
||||||
|
- [112114.xyz](https://diyp1.112114.xyz)
|
||||||
|
- [epg.51zmt.top:8000](http://epg.51zmt.top:8000/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌟 欢迎星标
|
||||||
|
|
||||||
|
[](https://star-history.com/#lalifeier/IPTV)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💹 访问量统计
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Last deployment time: 2025-03-11 08:29:02 UTC
|
||||||
107
epg.py
Normal file
107
epg.py
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
import re, time
|
||||||
|
import json
|
||||||
|
import requests
|
||||||
|
|
||||||
|
# 原始数据来源地址
|
||||||
|
|
||||||
|
m3u_url = "https://raw.githubusercontent.com/lalifeier/IPTV/main/m3u/IPTV.m3u"
|
||||||
|
epg1_api = "https://epg.112114.xyz/?ch="
|
||||||
|
epg2_api = "https://diyp.112114.xyz/?ch="
|
||||||
|
header = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 定义频道原始数据获取函数
|
||||||
|
def fetch_m3u_data(m3u_url):
|
||||||
|
response = requests.get(m3u_url, headers=header)
|
||||||
|
if response.status_code == 200:
|
||||||
|
return response.text
|
||||||
|
else:
|
||||||
|
raise Exception(f"Failed to fetch M3U data. Status code: {response.status_code}")
|
||||||
|
|
||||||
|
|
||||||
|
# 定义道ID和频道名提取字典建立函数
|
||||||
|
def extract_tvg_info_from_m3u(m3u_data):
|
||||||
|
pattern = re.compile(r'#EXTINF:-1 tvg-id="(.*?)" tvg-name="(.*?)"', re.DOTALL)
|
||||||
|
matches = pattern.findall(m3u_data)
|
||||||
|
|
||||||
|
tvg_dict = {}
|
||||||
|
for match in matches:
|
||||||
|
tvg_id, title = match[0], match[1]
|
||||||
|
tvg_dict[tvg_id] = title
|
||||||
|
print("节目列表提取成功,共计", len(tvg_dict), "个频道")
|
||||||
|
# print(tvg_dict)
|
||||||
|
tvg_list = []
|
||||||
|
|
||||||
|
for key in tvg_dict:
|
||||||
|
tvg_list.append('<channel id="' + key + '">\n')
|
||||||
|
tvg_list.append('<display-name lang="zh">' + tvg_dict[key] + "</display-name>\n")
|
||||||
|
tvg_list.append("</channel>\n")
|
||||||
|
tvg_string = "".join(tvg_list)
|
||||||
|
# print(my_string)
|
||||||
|
|
||||||
|
return tvg_string, tvg_dict
|
||||||
|
|
||||||
|
|
||||||
|
# 定义频道TVXML数据API数据获取函数
|
||||||
|
def epg_api_data(tvg_id, tvg_name):
|
||||||
|
epg_date = requests.get(epg1_api + tvg_name, headers=header)
|
||||||
|
if "精彩节目-暂未提供节目预告信息" in epg_date.text or tvg_name in "卡酷少儿 纪实科教":
|
||||||
|
print(tvg_name, "的EPG节目信息在API1中不存在或不准确 已更换为API2")
|
||||||
|
epg_date = requests.get(epg2_api + tvg_name, headers=header)
|
||||||
|
json_data = epg_date.json()
|
||||||
|
|
||||||
|
# 创建空字符串用于存放 epg 内容
|
||||||
|
xml_list = []
|
||||||
|
|
||||||
|
# 遍历该频道当天所有节目信息
|
||||||
|
for epg in json_data["epg_data"]:
|
||||||
|
if epg["start"] == "00:00" and epg["end"] == "23:59": # 剔除错误数据,此处为00:00开始,23:59结束的节目-明显错误内容
|
||||||
|
print(tvg_name, "包含重复错误节目信息,已剔除") # 输出包含错误信息的频道名
|
||||||
|
continue
|
||||||
|
|
||||||
|
start_time = f"{json_data['date'].replace('-', '')}{epg['start'].replace(':', '')}00 +0800"
|
||||||
|
end_time = f"{json_data['date'].replace('-', '')}{epg['end'].replace(':', '')}00 +0800"
|
||||||
|
title = epg["title"].replace("<", "《").replace(">", "》").replace("&", "&") # 替换xml文件中的一些禁用字符
|
||||||
|
|
||||||
|
xml_list.append('<programme start="' + start_time + '" stop="' + end_time + '" channel="' + tvg_id + '">\n')
|
||||||
|
xml_list.append('<title lang="zh">' + title + '</title><desc lang="zh"></desc>\n')
|
||||||
|
xml_list.append("</programme>\n")
|
||||||
|
|
||||||
|
xml_string = "".join(xml_list)
|
||||||
|
|
||||||
|
return xml_string
|
||||||
|
|
||||||
|
|
||||||
|
m3u_data = fetch_m3u_data(m3u_url)
|
||||||
|
|
||||||
|
tvg_info, tvg_info_dict = extract_tvg_info_from_m3u(m3u_data)
|
||||||
|
|
||||||
|
# 创建一个空列表存储所有EPG数据
|
||||||
|
tvxml_list = []
|
||||||
|
tvxml_list.append('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE tv SYSTEM "http://api.torrent-tv.ru/xmltv.dtd">\n')
|
||||||
|
tvxml_list.append('<tv generator-info-name="https://epg.shellykoral.com" generator-info-url="koral@shellykoral.com">\n')
|
||||||
|
|
||||||
|
# 输出频道ID和频道名到TVXML
|
||||||
|
tvxml_list.append(tvg_info)
|
||||||
|
|
||||||
|
# 输出输出节目EPG到TVXML
|
||||||
|
for key in tvg_info_dict:
|
||||||
|
xml_string = epg_api_data(key, tvg_info_dict[key])
|
||||||
|
# time.sleep(0.1)
|
||||||
|
print(tvg_info_dict[key], "已完成")
|
||||||
|
tvxml_list.append(xml_string)
|
||||||
|
|
||||||
|
tvxml_list.append("</tv>")
|
||||||
|
tvxml_string = "".join(tvxml_list)
|
||||||
|
|
||||||
|
|
||||||
|
with open("e.xml", "w", encoding="utf-8") as xml_file:
|
||||||
|
xml_file.write(tvxml_string)
|
||||||
|
|
||||||
|
# 测试
|
||||||
|
# xml_string = epg_api_data('A03','CNA')
|
||||||
|
# time.sleep(0.3)
|
||||||
|
# print(xml_string)
|
||||||
|
# # with open("TVXML.xml", "a", encoding="utf-8") as xml_file:
|
||||||
|
# # xml_file.write(xml_string)
|
||||||
0
ip/hotel/中国电信/上海.txt
Normal file
0
ip/hotel/中国电信/上海.txt
Normal file
6
ip/hotel/中国电信/云南.txt
Normal file
6
ip/hotel/中国电信/云南.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
112.116.15.103:9901
|
||||||
|
116.55.141.103:9901
|
||||||
|
116.55.180.251:9901
|
||||||
|
182.241.193.238:9901
|
||||||
|
182.241.193.59:9901
|
||||||
|
220.164.192.48:50085
|
||||||
0
ip/hotel/中国电信/内蒙古.txt
Normal file
0
ip/hotel/中国电信/内蒙古.txt
Normal file
0
ip/hotel/中国电信/北京.txt
Normal file
0
ip/hotel/中国电信/北京.txt
Normal file
2
ip/hotel/中国电信/吉林.txt
Normal file
2
ip/hotel/中国电信/吉林.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
222.169.41.11:9901
|
||||||
|
222.169.85.8:9901
|
||||||
5
ip/hotel/中国电信/四川.txt
Normal file
5
ip/hotel/中国电信/四川.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
110.189.102.15:9901
|
||||||
|
118.122.189.74:9901
|
||||||
|
125.71.73.49:9901
|
||||||
|
182.150.25.138:9901
|
||||||
|
61.157.139.15:9901
|
||||||
0
ip/hotel/中国电信/天津.txt
Normal file
0
ip/hotel/中国电信/天津.txt
Normal file
0
ip/hotel/中国电信/宁夏.txt
Normal file
0
ip/hotel/中国电信/宁夏.txt
Normal file
8
ip/hotel/中国电信/安徽.txt
Normal file
8
ip/hotel/中国电信/安徽.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
220.179.68.222:9901
|
||||||
|
220.180.112.196:9901
|
||||||
|
223.241.247.214:9901
|
||||||
|
223.243.2.179:9008
|
||||||
|
60.167.15.43:9901
|
||||||
|
60.169.254.231:9901
|
||||||
|
60.172.59.214:9901
|
||||||
|
60.174.86.121:9901
|
||||||
5
ip/hotel/中国电信/山东.txt
Normal file
5
ip/hotel/中国电信/山东.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
113.124.234.110:9901
|
||||||
|
113.124.72.15:9901
|
||||||
|
144.52.160.225:9901
|
||||||
|
58.57.21.166:9901
|
||||||
|
58.57.40.22:9901
|
||||||
15
ip/hotel/中国电信/山西.txt
Normal file
15
ip/hotel/中国电信/山西.txt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
1.69.2.100:9902
|
||||||
|
1.69.64.25:9902
|
||||||
|
1.69.67.148:9902
|
||||||
|
1.69.68.153:9902
|
||||||
|
1.69.74.111:9902
|
||||||
|
113.25.252.226:9901
|
||||||
|
124.114.103.154:9901
|
||||||
|
124.116.118.28:9901
|
||||||
|
124.116.183.146:9901
|
||||||
|
219.145.43.21:9901
|
||||||
|
219.145.43.33:9901
|
||||||
|
219.145.43.75:9901
|
||||||
|
223.13.1.150:9901
|
||||||
|
223.13.1.62:9901
|
||||||
|
59.48.75.130:3052
|
||||||
35
ip/hotel/中国电信/广东.txt
Normal file
35
ip/hotel/中国电信/广东.txt
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
106.124.91.222:9901
|
||||||
|
113.109.117.237:9901
|
||||||
|
113.64.94.175:9901
|
||||||
|
113.64.94.191:9901
|
||||||
|
113.65.162.95:9999
|
||||||
|
113.81.21.11:9901
|
||||||
|
119.120.196.103:9999
|
||||||
|
119.125.104.130:9901
|
||||||
|
119.125.104.210:9901
|
||||||
|
119.125.104.73:9901
|
||||||
|
119.125.104.88:9901
|
||||||
|
119.129.172.119:9999
|
||||||
|
119.129.172.164:9999
|
||||||
|
119.129.173.219:9999
|
||||||
|
119.129.173.35:9999
|
||||||
|
119.129.173.99:9999
|
||||||
|
119.142.76.36:9901
|
||||||
|
125.93.74.27:9002
|
||||||
|
14.29.76.30:9901
|
||||||
|
183.0.186.29:8888
|
||||||
|
183.10.180.204:9901
|
||||||
|
183.24.48.6:9901
|
||||||
|
219.137.202.105:9999
|
||||||
|
219.137.203.224:9999
|
||||||
|
219.137.203.243:9999
|
||||||
|
219.137.230.245:9901
|
||||||
|
219.137.230.87:9901
|
||||||
|
219.137.231.105:9901
|
||||||
|
219.137.231.141:9999
|
||||||
|
219.137.231.215:9901
|
||||||
|
219.137.231.23:9901
|
||||||
|
219.137.231.40:9901
|
||||||
|
219.137.231.76:9901
|
||||||
|
59.32.97.44:9901
|
||||||
|
61.141.202.118:9901
|
||||||
1
ip/hotel/中国电信/广西.txt
Normal file
1
ip/hotel/中国电信/广西.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
171.108.239.79:8181
|
||||||
0
ip/hotel/中国电信/新疆.txt
Normal file
0
ip/hotel/中国电信/新疆.txt
Normal file
9
ip/hotel/中国电信/江苏.txt
Normal file
9
ip/hotel/中国电信/江苏.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
180.124.146.142:60000
|
||||||
|
218.3.138.25:1111
|
||||||
|
221.224.4.170:1111
|
||||||
|
221.225.236.123:9901
|
||||||
|
58.209.101.210:9901
|
||||||
|
58.216.229.130:9901
|
||||||
|
58.218.184.182:9901
|
||||||
|
58.220.219.14:9901
|
||||||
|
58.221.158.155:9901
|
||||||
4
ip/hotel/中国电信/江西.txt
Normal file
4
ip/hotel/中国电信/江西.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
115.149.139.141:10001
|
||||||
|
218.87.237.105:9901
|
||||||
|
218.87.237.106:9901
|
||||||
|
59.62.8.250:9901
|
||||||
9
ip/hotel/中国电信/河北.txt
Normal file
9
ip/hotel/中国电信/河北.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
106.115.121.96:9901
|
||||||
|
106.118.112.163:9901
|
||||||
|
106.118.70.182:9901
|
||||||
|
123.182.212.105:9901
|
||||||
|
123.182.212.130:9901
|
||||||
|
123.182.213.119:9901
|
||||||
|
222.223.84.82:9901
|
||||||
|
27.188.213.166:9901
|
||||||
|
27.188.9.21:9901
|
||||||
29
ip/hotel/中国电信/河南.txt
Normal file
29
ip/hotel/中国电信/河南.txt
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
1.192.12.41:9901
|
||||||
|
1.192.16.233:9901
|
||||||
|
1.192.241.46:9901
|
||||||
|
1.192.248.15:9901
|
||||||
|
1.193.63.148:85
|
||||||
|
1.193.63.75:85
|
||||||
|
1.194.52.10:10086
|
||||||
|
1.197.253.220:9901
|
||||||
|
1.197.82.222:9901
|
||||||
|
1.198.30.143:9901
|
||||||
|
1.198.66.139:9901
|
||||||
|
1.199.235.189:9901
|
||||||
|
123.160.172.124:85
|
||||||
|
123.160.172.168:85
|
||||||
|
123.160.172.73:85
|
||||||
|
123.160.173.165:85
|
||||||
|
123.160.175.25:85
|
||||||
|
123.160.233.188:85
|
||||||
|
123.160.234.242:85
|
||||||
|
123.160.235.240:85
|
||||||
|
123.163.114.123:85
|
||||||
|
123.163.114.191:85
|
||||||
|
123.163.55.234:9901
|
||||||
|
123.52.12.48:9901
|
||||||
|
171.12.164.66:9901
|
||||||
|
171.13.174.159:20443
|
||||||
|
171.14.89.49:9901
|
||||||
|
171.8.138.195:85
|
||||||
|
171.8.75.217:8011
|
||||||
12
ip/hotel/中国电信/浙江.txt
Normal file
12
ip/hotel/中国电信/浙江.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
115.215.143.46:9901
|
||||||
|
115.225.49.227:9901
|
||||||
|
115.236.171.2:9901
|
||||||
|
122.230.62.250:9901
|
||||||
|
122.246.75.194:9901
|
||||||
|
125.107.115.72:9901
|
||||||
|
125.107.96.138:9901
|
||||||
|
125.114.241.240:9901
|
||||||
|
125.119.48.56:9901
|
||||||
|
183.136.148.214:9901
|
||||||
|
60.187.74.119:9901
|
||||||
|
61.175.237.198:1111
|
||||||
1
ip/hotel/中国电信/海南.txt
Normal file
1
ip/hotel/中国电信/海南.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
59.49.191.79:9901
|
||||||
8
ip/hotel/中国电信/湖北.txt
Normal file
8
ip/hotel/中国电信/湖北.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
58.48.37.158:1111
|
||||||
|
58.48.5.186:1111
|
||||||
|
58.51.111.46:1111
|
||||||
|
58.53.153.222:9901
|
||||||
|
58.53.153.236:9901
|
||||||
|
59.173.183.242:9901
|
||||||
|
59.173.243.210:9901
|
||||||
|
61.136.172.236:9901
|
||||||
44
ip/hotel/中国电信/湖南.txt
Normal file
44
ip/hotel/中国电信/湖南.txt
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
113.218.189.23:8081
|
||||||
|
113.218.230.180:8081
|
||||||
|
113.218.231.17:8081
|
||||||
|
113.220.232.154:9999
|
||||||
|
113.220.232.195:9999
|
||||||
|
113.220.232.38:9999
|
||||||
|
113.220.233.12:9999
|
||||||
|
113.220.233.185:9999
|
||||||
|
113.220.233.241:9999
|
||||||
|
113.220.234.100:9999
|
||||||
|
113.220.235.120:9999
|
||||||
|
118.248.167.152:8088
|
||||||
|
118.248.168.52:8088
|
||||||
|
118.248.170.67:8088
|
||||||
|
118.248.170.72:8088
|
||||||
|
118.248.172.234:8088
|
||||||
|
124.231.212.241:9999
|
||||||
|
124.231.212.36:9999
|
||||||
|
124.231.212.59:9999
|
||||||
|
124.231.212.94:9999
|
||||||
|
124.231.213.150:9999
|
||||||
|
124.231.213.210:9999
|
||||||
|
124.231.214.193:9999
|
||||||
|
124.231.214.252:9999
|
||||||
|
124.231.215.108:9999
|
||||||
|
124.231.215.159:9999
|
||||||
|
175.0.32.62:8081
|
||||||
|
175.0.34.214:8081
|
||||||
|
175.10.19.64:9901
|
||||||
|
175.8.212.107:8081
|
||||||
|
175.8.85.82:9998
|
||||||
|
218.76.30.240:9901
|
||||||
|
218.76.32.193:9901
|
||||||
|
218.77.81.186:9901
|
||||||
|
220.170.242.246:9901
|
||||||
|
222.240.60.154:9901
|
||||||
|
222.240.82.92:9901
|
||||||
|
222.243.221.54:9901
|
||||||
|
223.151.51.74:9901
|
||||||
|
223.159.11.241:8099
|
||||||
|
223.159.8.218:8099
|
||||||
|
223.159.8.53:8099
|
||||||
|
223.159.9.237:8099
|
||||||
|
223.159.9.41:8099
|
||||||
0
ip/hotel/中国电信/甘肃.txt
Normal file
0
ip/hotel/中国电信/甘肃.txt
Normal file
2
ip/hotel/中国电信/福建.txt
Normal file
2
ip/hotel/中国电信/福建.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
117.27.190.42:9998
|
||||||
|
220.161.206.166:9901
|
||||||
0
ip/hotel/中国电信/西藏.txt
Normal file
0
ip/hotel/中国电信/西藏.txt
Normal file
0
ip/hotel/中国电信/贵州.txt
Normal file
0
ip/hotel/中国电信/贵州.txt
Normal file
2
ip/hotel/中国电信/辽宁.txt
Normal file
2
ip/hotel/中国电信/辽宁.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
59.44.10.113:9901
|
||||||
|
59.44.203.42:9901
|
||||||
1
ip/hotel/中国电信/重庆.txt
Normal file
1
ip/hotel/中国电信/重庆.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
14.106.236.87:9901
|
||||||
0
ip/hotel/中国电信/陕西.txt
Normal file
0
ip/hotel/中国电信/陕西.txt
Normal file
0
ip/hotel/中国电信/青海.txt
Normal file
0
ip/hotel/中国电信/青海.txt
Normal file
1
ip/hotel/中国电信/黑龙江.txt
Normal file
1
ip/hotel/中国电信/黑龙江.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
112.99.193.34:9901
|
||||||
0
ip/hotel/中国联通/上海.txt
Normal file
0
ip/hotel/中国联通/上海.txt
Normal file
9
ip/hotel/中国联通/云南.txt
Normal file
9
ip/hotel/中国联通/云南.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
119.62.10.222:9901
|
||||||
|
119.62.28.139:9901
|
||||||
|
119.62.28.223:9901
|
||||||
|
119.62.36.174:9901
|
||||||
|
119.62.80.200:9901
|
||||||
|
14.204.29.101:9901
|
||||||
|
14.204.46.220:9901
|
||||||
|
14.204.97.240:9901
|
||||||
|
221.213.69.82:9901
|
||||||
0
ip/hotel/中国联通/内蒙古.txt
Normal file
0
ip/hotel/中国联通/内蒙古.txt
Normal file
8
ip/hotel/中国联通/北京.txt
Normal file
8
ip/hotel/中国联通/北京.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
112.123.243.37:50085
|
||||||
|
116.128.224.11:9901
|
||||||
|
116.128.242.83:9901
|
||||||
|
116.149.224.120:9901
|
||||||
|
116.149.224.54:9901
|
||||||
|
116.167.104.94:9901
|
||||||
|
116.167.76.60:9901
|
||||||
|
14.204.12.178:9901
|
||||||
17
ip/hotel/中国联通/吉林.txt
Normal file
17
ip/hotel/中国联通/吉林.txt
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
119.51.52.185:9901
|
||||||
|
122.139.47.206:9901
|
||||||
|
125.32.120.209:9901
|
||||||
|
175.16.149.189:9901
|
||||||
|
175.16.151.135:9901
|
||||||
|
175.16.151.183:9901
|
||||||
|
175.16.153.143:9901
|
||||||
|
175.16.155.51:9901
|
||||||
|
175.16.184.213:9901
|
||||||
|
175.16.198.17:9901
|
||||||
|
175.16.250.155:9901
|
||||||
|
175.18.189.238:9902
|
||||||
|
221.9.97.31:9901
|
||||||
|
222.162.195.165:9901
|
||||||
|
58.245.97.28:9901
|
||||||
|
58.245.99.42:9901
|
||||||
|
61.138.128.226:19901
|
||||||
3
ip/hotel/中国联通/四川.txt
Normal file
3
ip/hotel/中国联通/四川.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
112.193.42.157:9901
|
||||||
|
112.194.206.58:9901
|
||||||
|
175.155.98.11:9901
|
||||||
1
ip/hotel/中国联通/天津.txt
Normal file
1
ip/hotel/中国联通/天津.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
111.160.17.2:59901
|
||||||
0
ip/hotel/中国联通/宁夏.txt
Normal file
0
ip/hotel/中国联通/宁夏.txt
Normal file
3
ip/hotel/中国联通/安徽.txt
Normal file
3
ip/hotel/中国联通/安徽.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
112.123.155.153:9901
|
||||||
|
112.132.160.130:9901
|
||||||
|
58.243.93.102:9901
|
||||||
18
ip/hotel/中国联通/山东.txt
Normal file
18
ip/hotel/中国联通/山东.txt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
112.234.23.81:9901
|
||||||
|
119.163.199.98:9901
|
||||||
|
119.163.228.205:9901
|
||||||
|
119.163.231.148:9901
|
||||||
|
119.163.237.125:9901
|
||||||
|
119.163.57.184:9901
|
||||||
|
119.163.60.10:9901
|
||||||
|
119.163.63.188:9901
|
||||||
|
119.164.81.193:9901
|
||||||
|
119.164.83.6:9901
|
||||||
|
119.164.84.95:9901
|
||||||
|
119.164.85.150:9901
|
||||||
|
119.164.94.8:9901
|
||||||
|
123.129.70.178:9901
|
||||||
|
123.131.200.60:9901
|
||||||
|
124.128.73.58:9901
|
||||||
|
222.134.245.16:9901
|
||||||
|
58.19.252.68:1111
|
||||||
46
ip/hotel/中国联通/山西.txt
Normal file
46
ip/hotel/中国联通/山西.txt
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
116.135.38.14:9901
|
||||||
|
116.135.38.57:9901
|
||||||
|
116.135.39.141:9901
|
||||||
|
116.135.39.181:9901
|
||||||
|
118.77.113.140:9901
|
||||||
|
118.77.153.19:9901
|
||||||
|
118.77.184.77:9901
|
||||||
|
118.81.53.140:9999
|
||||||
|
118.81.98.130:9999
|
||||||
|
124.165.251.82:9999
|
||||||
|
171.116.247.116:9999
|
||||||
|
171.116.255.210:9901
|
||||||
|
171.117.12.76:9999
|
||||||
|
171.117.13.206:9999
|
||||||
|
171.117.14.236:9999
|
||||||
|
171.117.19.240:9901
|
||||||
|
171.117.43.18:9999
|
||||||
|
171.117.46.35:9999
|
||||||
|
171.118.221.179:9999
|
||||||
|
171.118.221.40:9999
|
||||||
|
171.118.79.240:9901
|
||||||
|
171.120.64.204:9999
|
||||||
|
171.120.7.114:9999
|
||||||
|
171.120.7.130:9999
|
||||||
|
171.120.7.32:9999
|
||||||
|
171.121.65.104:9901
|
||||||
|
171.124.80.184:9901
|
||||||
|
171.124.80.210:9901
|
||||||
|
171.124.80.244:9901
|
||||||
|
171.124.81.14:9901
|
||||||
|
183.185.218.10:9999
|
||||||
|
183.185.218.119:9999
|
||||||
|
183.185.219.170:9999
|
||||||
|
183.185.219.227:9999
|
||||||
|
183.185.246.78:9999
|
||||||
|
183.185.247.158:9999
|
||||||
|
183.185.252.91:9999
|
||||||
|
183.185.80.40:9901
|
||||||
|
183.191.212.247:9999
|
||||||
|
221.205.129.229:9999
|
||||||
|
221.205.130.91:9999
|
||||||
|
221.205.131.146:9999
|
||||||
|
221.205.131.31:9999
|
||||||
|
221.205.65.181:9999
|
||||||
|
221.205.65.81:9999
|
||||||
|
60.223.94.80:9901
|
||||||
0
ip/hotel/中国联通/广东.txt
Normal file
0
ip/hotel/中国联通/广东.txt
Normal file
0
ip/hotel/中国联通/广西.txt
Normal file
0
ip/hotel/中国联通/广西.txt
Normal file
0
ip/hotel/中国联通/新疆.txt
Normal file
0
ip/hotel/中国联通/新疆.txt
Normal file
0
ip/hotel/中国联通/江苏.txt
Normal file
0
ip/hotel/中国联通/江苏.txt
Normal file
4
ip/hotel/中国联通/江西.txt
Normal file
4
ip/hotel/中国联通/江西.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
113.195.162.70:9901
|
||||||
|
113.195.4.227:9901
|
||||||
|
113.195.45.181:9901
|
||||||
|
113.195.8.69:9901
|
||||||
11
ip/hotel/中国联通/河北.txt
Normal file
11
ip/hotel/中国联通/河北.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
101.19.62.22:9901
|
||||||
|
101.74.29.225:9901
|
||||||
|
101.74.30.77:9901
|
||||||
|
101.74.31.156:9901
|
||||||
|
101.74.31.158:9901
|
||||||
|
121.19.134.125:808
|
||||||
|
121.19.134.132:808
|
||||||
|
121.19.134.82:808
|
||||||
|
121.24.98.214:9901
|
||||||
|
221.193.168.216:9901
|
||||||
|
221.193.168.234:9901
|
||||||
16
ip/hotel/中国联通/河南.txt
Normal file
16
ip/hotel/中国联通/河南.txt
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
115.48.22.43:9901
|
||||||
|
115.48.61.13:9901
|
||||||
|
115.48.62.124:9901
|
||||||
|
123.10.70.138:9901
|
||||||
|
123.13.24.224:9992
|
||||||
|
125.43.244.216:9901
|
||||||
|
182.113.206.54:9901
|
||||||
|
182.113.207.55:9901
|
||||||
|
182.117.136.206:9901
|
||||||
|
182.117.136.42:9901
|
||||||
|
182.122.73.43:10086
|
||||||
|
219.154.240.173:9901
|
||||||
|
222.142.199.205:9901
|
||||||
|
222.142.73.216:9901
|
||||||
|
222.142.93.57:9901
|
||||||
|
61.136.67.238:50085
|
||||||
17
ip/hotel/中国联通/浙江.txt
Normal file
17
ip/hotel/中国联通/浙江.txt
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
101.65.34.239:9901
|
||||||
|
101.66.195.109:9901
|
||||||
|
101.66.198.147:9901
|
||||||
|
101.66.198.174:9901
|
||||||
|
101.66.198.28:9901
|
||||||
|
101.71.212.242:9901
|
||||||
|
101.71.213.33:9901
|
||||||
|
123.154.116.193:9901
|
||||||
|
123.154.154.110:9901
|
||||||
|
123.154.155.53:9901
|
||||||
|
123.154.155.56:9901
|
||||||
|
123.154.157.143:9901
|
||||||
|
123.154.252.59:9901
|
||||||
|
123.154.253.138:9901
|
||||||
|
123.159.135.124:9901
|
||||||
|
124.90.211.122:9901
|
||||||
|
60.12.183.46:9901
|
||||||
4
ip/hotel/中国联通/海南.txt
Normal file
4
ip/hotel/中国联通/海南.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
150.255.145.179:9901
|
||||||
|
150.255.149.33:9901
|
||||||
|
150.255.150.12:9901
|
||||||
|
153.0.204.85:9901
|
||||||
9
ip/hotel/中国联通/湖北.txt
Normal file
9
ip/hotel/中国联通/湖北.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
113.57.109.48:1111
|
||||||
|
113.57.20.158:9901
|
||||||
|
113.57.93.165:9900
|
||||||
|
183.94.1.118:8801
|
||||||
|
183.94.212.30:9901
|
||||||
|
220.249.114.102:9901
|
||||||
|
58.19.133.144:9901
|
||||||
|
58.19.244.92:1111
|
||||||
|
58.19.38.162:9901
|
||||||
12
ip/hotel/中国联通/湖南.txt
Normal file
12
ip/hotel/中国联通/湖南.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
110.52.99.109:9901
|
||||||
|
110.53.21.30:9901
|
||||||
|
110.53.218.182:9902
|
||||||
|
119.39.226.20:1111
|
||||||
|
119.39.9.8:9901
|
||||||
|
119.39.97.2:9002
|
||||||
|
220.202.98.51:14901
|
||||||
|
220.248.173.158:9901
|
||||||
|
42.48.17.188:9901
|
||||||
|
42.49.148.250:9901
|
||||||
|
42.49.148.254:9901
|
||||||
|
58.20.77.78:9901
|
||||||
0
ip/hotel/中国联通/甘肃.txt
Normal file
0
ip/hotel/中国联通/甘肃.txt
Normal file
4
ip/hotel/中国联通/福建.txt
Normal file
4
ip/hotel/中国联通/福建.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
36.249.150.192:9901
|
||||||
|
36.249.151.244:9901
|
||||||
|
58.23.27.171:9901
|
||||||
|
58.23.27.47:9901
|
||||||
0
ip/hotel/中国联通/西藏.txt
Normal file
0
ip/hotel/中国联通/西藏.txt
Normal file
0
ip/hotel/中国联通/贵州.txt
Normal file
0
ip/hotel/中国联通/贵州.txt
Normal file
1
ip/hotel/中国联通/辽宁.txt
Normal file
1
ip/hotel/中国联通/辽宁.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
fxgm.fxjf.work:19901
|
||||||
3
ip/hotel/中国联通/重庆.txt
Normal file
3
ip/hotel/中国联通/重庆.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
113.206.102.179:9901
|
||||||
|
27.14.84.4:9901
|
||||||
|
27.8.233.175:9901
|
||||||
0
ip/hotel/中国联通/陕西.txt
Normal file
0
ip/hotel/中国联通/陕西.txt
Normal file
0
ip/hotel/中国联通/青海.txt
Normal file
0
ip/hotel/中国联通/青海.txt
Normal file
0
ip/hotel/中国联通/黑龙江.txt
Normal file
0
ip/hotel/中国联通/黑龙江.txt
Normal file
0
ip/udpxy/中国电信/上海.txt
Normal file
0
ip/udpxy/中国电信/上海.txt
Normal file
0
ip/udpxy/中国电信/云南.txt
Normal file
0
ip/udpxy/中国电信/云南.txt
Normal file
0
ip/udpxy/中国电信/内蒙古.txt
Normal file
0
ip/udpxy/中国电信/内蒙古.txt
Normal file
0
ip/udpxy/中国电信/北京.txt
Normal file
0
ip/udpxy/中国电信/北京.txt
Normal file
0
ip/udpxy/中国电信/吉林.txt
Normal file
0
ip/udpxy/中国电信/吉林.txt
Normal file
0
ip/udpxy/中国电信/四川.txt
Normal file
0
ip/udpxy/中国电信/四川.txt
Normal file
0
ip/udpxy/中国电信/宁夏.txt
Normal file
0
ip/udpxy/中国电信/宁夏.txt
Normal file
0
ip/udpxy/中国电信/安徽.txt
Normal file
0
ip/udpxy/中国电信/安徽.txt
Normal file
0
ip/udpxy/中国电信/山东.txt
Normal file
0
ip/udpxy/中国电信/山东.txt
Normal file
0
ip/udpxy/中国电信/山西.txt
Normal file
0
ip/udpxy/中国电信/山西.txt
Normal file
0
ip/udpxy/中国电信/广东.txt
Normal file
0
ip/udpxy/中国电信/广东.txt
Normal file
0
ip/udpxy/中国电信/广西.txt
Normal file
0
ip/udpxy/中国电信/广西.txt
Normal file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user