Compare commits

...

15 Commits

Author SHA1 Message Date
Alejandro Garcia
4b71919d0e
Merge 301d51e362 into b83ca24eb7 2024-11-10 14:42:00 +01:00
sepro
b83ca24eb7
[core] Catch broken Cryptodome installations (#11486)
Authored by: seproDev
2024-11-10 00:53:49 +01:00
bashonly
240a7d43c8
[build] Pin websockets version to >=13.0,<14 (#11488)
websockets 14.0 causes CI test failures (a lot more of them)

Authored by: bashonly
2024-11-09 23:46:47 +00:00
bashonly
f13df591d4
[build] Enable attestations for trusted publishing (#11420)
Reverts 428ffb75aa

Authored by: bashonly
2024-11-09 23:26:02 +00:00
EGA-SUPREMO
301d51e362 fix regex for url 2024-06-13 07:37:10 -04:00
Alejandro Garcia
82ac58dec4
Merge branch 'master' into extractor-cablecasttv 2024-06-13 07:19:32 -04:00
EGA-SUPREMO
8ebdf57c9c change regex to match most cableCastTV websites 2024-05-19 19:15:19 -04:00
EGA-SUPREMO
b93cee03ee Merge branch 'extractor-cablecasttv' of github.com:EGA-SUPREMO/yt-dlp into extractor-cablecasttv 2024-05-19 16:38:14 -04:00
EGA-SUPREMO
c640231330 add support for subtitles 2024-05-19 16:35:53 -04:00
Alejandro Garcia
c61f86c641
Merge branch 'master' into extractor-cablecasttv 2024-05-19 15:18:57 -04:00
EGA-SUPREMO
f86f46a010 merge conflict 2024-05-19 15:12:08 -04:00
EGA-SUPREMO
52de89b43c clean code 2024-05-19 12:14:46 -04:00
EGA-SUPREMO
ec01710224 clean code 2024-05-19 12:09:27 -04:00
EGA-SUPREMO
151b383fe1 add regex for video webpage url 2024-05-19 11:53:01 -04:00
EGA-SUPREMO
4070c00ba7 add cablecasttv extrator 2024-05-17 09:09:46 -04:00
8 changed files with 100 additions and 8 deletions

View File

@ -504,7 +504,8 @@ jobs:
- windows32
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: artifact
pattern: build-bin-*

View File

@ -28,3 +28,20 @@ jobs:
actions: write # For cleaning up cache
id-token: write # mandatory for trusted publishing
secrets: inherit
publish_pypi:
needs: [release]
if: vars.MASTER_PYPI_PROJECT != ''
runs-on: ubuntu-latest
permissions:
id-token: write # mandatory for trusted publishing
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: dist
name: build-pypi
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
verbose: true

View File

@ -41,3 +41,20 @@ jobs:
actions: write # For cleaning up cache
id-token: write # mandatory for trusted publishing
secrets: inherit
publish_pypi:
needs: [release]
if: vars.NIGHTLY_PYPI_PROJECT != ''
runs-on: ubuntu-latest
permissions:
id-token: write # mandatory for trusted publishing
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: dist
name: build-pypi
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
verbose: true

View File

@ -2,10 +2,6 @@ name: Release
on:
workflow_call:
inputs:
prerelease:
required: false
default: true
type: boolean
source:
required: false
default: ''
@ -18,6 +14,10 @@ on:
required: false
default: ''
type: string
prerelease:
required: false
default: true
type: boolean
workflow_dispatch:
inputs:
source:
@ -278,11 +278,20 @@ jobs:
make clean-cache
python -m build --no-isolation .
- name: Upload artifacts
if: github.event_name != 'workflow_dispatch'
uses: actions/upload-artifact@v4
with:
name: build-pypi
path: |
dist/*
compression-level: 0
- name: Publish to PyPI
if: github.event_name == 'workflow_dispatch'
uses: pypa/gh-action-pypi-publish@release/v1
with:
verbose: true
attestations: false # Currently doesn't work w/ reusable workflows (breaks nightly)
publish:
needs: [prepare, build]

View File

@ -52,7 +52,7 @@ default = [
"pycryptodomex",
"requests>=2.32.2,<3",
"urllib3>=1.26.17,<3",
"websockets>=13.0",
"websockets>=13.0,<14",
]
curl-cffi = [
"curl-cffi==0.5.10; os_name=='nt' and implementation_name=='cpython'",

View File

@ -24,7 +24,7 @@ try:
from Crypto.Cipher import AES, PKCS1_OAEP, Blowfish, PKCS1_v1_5 # noqa: F401
from Crypto.Hash import CMAC, SHA1 # noqa: F401
from Crypto.PublicKey import RSA # noqa: F401
except ImportError:
except (ImportError, OSError):
__version__ = f'broken {__version__}'.strip()

View File

@ -311,6 +311,7 @@ from .businessinsider import BusinessInsiderIE
from .buzzfeed import BuzzFeedIE
from .byutv import BYUtvIE
from .c56 import C56IE
from .cablecasttv import CableCastTVIE
from .caffeinetv import CaffeineTVIE
from .callin import CallinIE
from .caltrans import CaltransIE

View File

@ -0,0 +1,47 @@
from .common import InfoExtractor
class CableCastTVIE(InfoExtractor):
_VALID_URL = r'https?://(?:[a-z\-\.]+\.cablecast\.tv/show/|[a-z\-\.]+/CablecastPublicSite/show/)(?P<id>\d+)'
_TESTS = [{
'url': 'https://wctv.wilmette.com/CablecastPublicSite/show/532',
'md5': '17e7ed129582babf6d1ae5c3b9d70d18',
'info_dict': {
'id': '532',
'ext': 'mp4',
'title': 'Village Board Meeting 4/24/24',
},
}, {
'url': 'https://capitoltvri.cablecast.tv/show/9199?site=1',
'only_matching': True,
}, {
'url': 'https://king-county-tv.cablecast.tv/show/504',
'only_matching': True,
}, {
'url': 'https://wctv.wilmette.com/CablecastPublicSite/show/53/',
'only_matching': True,
}]
def _real_extract(self, url):
video_id = self._match_id(url)
webpage = self._download_webpage(url, video_id)
url_video_page = self._html_search_regex(r'<iframe[^>]*class=\"trms-player\"[^>]*src=\"([^\"]+)\"', webpage, 'url_video_webpage')
webpage_video = self._download_webpage(url_video_page, video_id)
video_url = self._html_search_regex(r'"([^\"]*\.m3u8)"', webpage_video, 'video URL')
formats = []
subtitles = {}
fmts, subs = self._extract_m3u8_formats_and_subtitles(video_url, video_id, 'mp4', fatal=False)
formats.extend(fmts)
self._merge_subtitles(subs, target=subtitles)
title = self._og_search_title(webpage) or self._html_search_regex(r'<title>(.+?)</title>', webpage, 'title')
return {
'id': video_id,
'title': title,
'formats': formats,
'subtitles': subtitles,
}