Форум сайта python.su
IDLE (Python 3.10 64-bit)
————————
Нужен плееер который будет воспроизводить плейлисты m3u с облаков.
Поясняю:
Плейлисты делаю сам - очень удобно для просмотра.
Формат загруженых видео: mp4
Для Windows есть два плеера:
1. PotPlayer - читает плейлисты m3u youtube с облака не воспроизводит.
2. VLC плееер - он видит плейлисты m3u, но не воспоизводит плейлисты m3u youtube с облака.
Другие плееры не знаю ?
————————
На спутниковом ресивере - читает плейлисты m3u youtube и облако (только cloud.mail.ru), другие облака не видит.
P.S
Для примера прикладывю плейлист: Тест.m3u
Мне кажется это интересная тема для обсуждения.
Прикреплённый файлы:
Тест.zip (701 байт)
Офлайн
1. Плей лист рабочий
Нормально открывается и показывает под линуксом через MPV
2. Какое отношение ваш вопрос имеет к питону?
3. Какая у вас ОС?
4. Попробуйте https://kodi.tv/
5. Возможно что бы другие плееры могли воспроизводить ссылки из ютуба
вам нуэно установить https://youtube-dl.org/
Офлайн
Спасибо ZerG
2. Какое отношение ваш вопрос имеет к питону? - Под винду нет таких плееров.
3. Какая у вас ОС? - Widows 10
5. Возможно что бы другие плееры могли воспроизводить ссылки из ютуба - PotPlayer воспроизводит ютуб.
Нужен плеер читающий - ютуб и облака !
Офлайн
2. Какое отношение ваш вопрос имеет к питону? - Под винду нет таких плееров.КАКОЕ ЕТО ОТНОШЕНИЕ имеет к языку программирования Python?
Офлайн
Спасибо ZerG
Я и прошу плеер на Python.
На Windows10 - нет такого.
Офлайн
satfanЯ вобще скачиваю видео со всех подобных мест и смотрю их потом на телевизоре. А плейлист сегодня - один, завтра - другой. Это когда ссылки вроде не меняешь, а потом открываешь, а там не то видео, а другое уже какое-то или его там вообще больше нет, а ты его не досмотрел даже, только до середины. Было так много раз: смотришь видео, до середины его досмотрел, оставил, на следующий день открываешь или там через неделю, а его там нет уже или вообще другое что-то открывается. Так что плейлисты ненадёжны.
Мне кажется это интересная тема для обсуждения.
satfanДа просто через yt-dlp скачиваю на диск и смотрю. Раньше скачивал через youtube-dl, но потом он стал медленно качать. А yt-dlp использует другой алгоритм для скачивания, поэтому скачивает быстро.
плеер на Python для youtube
...
# Load file from Dzen.ru
# load_file_dz(url, ofname)
# args:
# url - The url for video on Dzen.ru
# ofname - The output filename for saving loaded video
# return:
# 0 - If file loaded
# 1 - If any error
load_file_dz()
{
local url=$1
local ofname=$2
local m3u8_url
msg "Loading file from Dzen.ru to $ofname"
m3u8_url=`load_file_dz_get_m3u8_url "$url"`
if [ -z "$m3u8_url" ]; then
error "Video m3u8 url is not found"
return 1
fi
msg "Found m3u8 url"
Ytn "$m3u8_url" "$ofname"
}
# Load m3u8 url for video url from Dzen.ru
# load_file_dz_get_m3u8_url(url)
# args:
# url - The url for video on Dzen.ru
# stdout:
# The m3u8 url for video url
# return:
# 0 - If source file loaded and parsed
# 1 - If any error
load_file_dz_get_m3u8_url()
{
local url=$1
local url_embed
local url_final
local out
url_embed=$(load_file_dz_load_m3u8_embed "$url")
url_final=$(load_file_dz_load_m3u8_final "${url_embed}")
out="${url_final}"
echo "$out"
}
# Load embed url for video url from Dzen.ru
# load_file_dz_load_m3u8_embed(url)
# args:
# url - The url for video on Dzen.ru
# stdout:
# The embed url for video url
# return:
# 0 - If source file loaded and parsed
# 1 - If any error
load_file_dz_load_m3u8_embed()
{
local url=$1
local out
out=$(
curl -s -b "Session_id=noauth" "$url" | sed -n '
/<meta property="twitter:player:stream"/ {
s/^.*<meta property="twitter:player:stream" content="\([^"]*\)".*$/\1/p
q
}
'
)
echo "$out"
}
# Load final url for embed video url from Dzen.ru
# load_file_dz_load_m3u8_final(url)
# args:
# url - The embed url for video on Dzen.ru
# stdout:
# The final url for embed video url
# return:
# 0 - If source file loaded and parsed
# 1 - If any error
load_file_dz_load_m3u8_final()
{
local url=$1
local out
out=$(
curl -s "$url" | sed -n '
/"options":\[\],"url":"/ {
s/^.*"options":\[\],"url":"\([^"]*\).*$/\1/p
q
}
'
)
echo "$out"
}
...
Отредактировано py.user.next (Ноя. 25, 2022 08:39:09)
Офлайн
Спасибо py.user.next
1. Скачивать с ютуба тоже не всегда хочется, да и ПК не резиновый.
Сделал плейлист, качать ничего не нужно.
Может 1 из 50 ссылок перестанет работать когда-то, заменить её на работающюю всего всего делов.
Но это конечно как кому нравится.
——————————–
2. На спутниковом ресивере - читает плейлисты m3u youtube и облако (только cloud.mail.ru), другие облака не видит.
На ресивере стоит версия линукс - Enigma2
Версия в ресивере Python 2.7.18
Вот папка “плагин IPTVPlayer” с ресивера прилагаю. Если интересно посмотрите какие кодеки там используют.
IPTVPlayer
Этот плагин - читает плейлисты m3u youtube и одно облако (только cloud.mail.ru), другие облака не видит.
——————————-
3. Вы писали про dzen.ru - очень нужно:
могу качать по ссылке на dzen.ru - Ваш код по линукс ?
У меня Windows 10.
надстройка для yt-dlp и youtube-dl - как мне сделать под мой варинт Python ?
P.S
Ранее я брвл ссылки из кода видео dzen.ru скиптом. Но через пару дней ссылки перестали работаь.
Они та что-то химичат.
import requests as req import re url = input("Введите URL: \n") text = req.get(url).text links = re.findall(r'https://strm\.yandex\.ru/vod/zen-vod/[^"]+\.m3u8', text) print(*links, sep='\n\n')
Отредактировано satfan (Ноя. 24, 2022 08:33:54)
Офлайн
satfanТакое у меня тоже есть. Но это не моя разработка, это в Emacs'е есть такой модуль Org-mode. И там можно делать таблицы живые, как в Excel'е. То есть ты их настраиваешь, код дописываешь под таблицей и она сама через этот код вычисляет всякие значения в ячейках. Также в неё можно заносить ссылки и давать им короткие имена. Это лучше списка видео, так как можно дописывать всякую информацию и форматировать эту информацию ещё. Также можно интегралы и производные решать в ячейках, так как есть возможность подключать функции из калькулятора Emacs'а, который тоже очень мощный (он может не только интегрировать и дифференцировать, но и просто корни уравнений искать, а также работать с матрицами и находить значения определителей, и векторы ещё может перемножать).
1. Скачивать с ютуба тоже не всегда хочется, да и ПК не резиновый.
satfanДа, это мой скрипт, он не только с dzen.ru качает. Он качает с YouTube, Dzen.ru, Mail.ru, Ok.ru, Rutube.ru, Brighteon.com. И я его дальше продолжаю расширять. Раньше он ещё качал с Vk.com, но потом они сделали там скачивание только по имени и паролю и я просто затрахался выяснять, как там можно скачать без имени и пароля. Там можно скачать, но там они столько наворотили с печеньем в запросах по HTTP, что просто жалко время на это тратить всё. Может быть, потом когда-нибудь я займусь этим, но, скорее всего, я просто подожду, когда они сами всё откроют на скачку.
3. Вы писали про dzen.ru - очень нужно:
могу качать по ссылке на dzen.ru - Ваш код по линукс ?
[guest@localhost Downloads]$ filmload.sh "https://dzen.ru/video/watch/637e6127180aaa0f63cd8977?t=5" v.mp4
Try `filmload.sh --help' for more information.
filmload.sh: Loading file from Dzen.ru to v.mp4
filmload.sh: Found m3u8 url
[generic] master: Requesting header
[redirect] Following redirect to https://cdn.dzen.ru/vod/zen-vod/vod-content/54ede45e9425bfc4f18fad431a45066e/782c2542-342e-4920-8dbc-e53bfb624fc5/kaltura/desc_0aa17ac03b7d798d930571f160fabd63/vV1XEH0xGun8/ysign1=83e3f5ad5e40adc44e0705a84881476965401023bb3f5e3302ab7167638d7d45,abcID=1558,from=unknown,pfx,region=10000,sfx,ts=638c72b9/master.m3u8?vsid=q9hyqzss5rz4r4x
[generic] master: Requesting header
[generic] master: Downloading m3u8 information
[info] master: Downloading 1 format(s): 2944-5
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 185
[download] Destination: v.mp4
[download] 100% of 269.47MiB in 03:31
[FixupM3u8] Fixing malformed AAC bitstream of "v.mp4"
[guest@localhost Downloads]$
[guest@localhost Downloads]$ filmload.sh --help
usage: filmload.sh url savename
Load a film from YouTube.com, Ok.ru, Vk.com, Mail.ru, Rutube.ru,
Brighteon.com and Dzen.ru by url to the output filename, selecting
an optimal video format (neither very large, nor very small)
for watching on a tv screen.
noarg -- Print program usage information.
--help -- Print program help information.
--version -- Print program version information.
Example:
filmload.sh https://www.youtube.com/watch?v=a1b2c3d4 videoname.mp4
It will load the video file from YouTube with optimal resolution
and size and save it as videoname.mp4 file.
[guest@localhost Downloads]$
satfanЯ виндой не пользуюсь больше десяти лет. То есть она у меня есть, но я в ней только в игры играю типа S.T.A.L.K.E.R. и SWAT4. Остальные игры у меня просто в Linux установлены. У меня в Linux есть Starcraft, Age of Empires, Warcraft II, Doom 2, Call of Duty 2, Counter Strike и так далее. Есть игры для восьмибитки (Ниндзя черепашки там все части, Супермарио), есть игры для Playstation 1 (Silent Hill, Need for Speed). Это всё стоит в лине. Поэтому винда мне нафиг не нужна.
Ваш код по линукс ?
У меня Windows 10.
satfanТы скачай их под винду и используй в голом виде, без надстроек. Насколько помню, под виндой они работают. А качают они не только с YouTube. Там и PornHub и всякие подобные сайты. У них там большой список, его можно посмотреть в репозитории на GitHub. И также они качают, если способ скачивания неизвестен, они пытаются угадать, как скачать и даже могут скачивать что-то, хотя сайт в них не занесён.
надстройка для yt-dlp и youtube-dl - как мне сделать под мой варинт Python ?
satfanТолько что закачал видео. Моя надстройка (адаптер, состоящий из адаптеров для разных сайтов) закачала спокойно видео с dzen.ru.
Ранее я брвл ссылки из кода видео dzen.ru скиптом. Но через пару дней ссылки перестали работаь.
satfanТы знаешь, я пока пишу этот скачивальщик, добавляя в него сайт за сайтом в разные времена, я всё больше убеждаюсь, что нужно под каждый сайт свой индивидуальный адаптер писать. Ну, то есть нельзя написать один общий способ и качать с них всех этим общим способом. Они требуют разных подходов. То там надо переходы эти на встроенные видео делать, то там не надо эти переходы на встроенные видео делать и ссылку можно так взять. То там надо печенье посылать какое-то, то там не надо ничего посылать и ссылка и так будет в странице. Так что, там никогда не угадаешь, надо сидеть и сначала руками всё выяснять. А когда руками всё сделал, тогда и это всё последовательно заносится в скрипт в виде функций, которые друг друга там тягают и передают друг другу информацию, что как делать.
4. Куча бесплатных облаков.
Сделать плеер для воспроизведения с них н ПК- это вообще идеально.
Отредактировано py.user.next (Ноя. 24, 2022 13:09:47)
Офлайн
Спасибо за ответ.
Придётся качать по старому- неудобство качает только в реальном времени.
Вы писали: язык в интерпретаторе Bash - сможете малаленький Bash скрипт переделать в Python 3 &
Офлайн
satfanВообще, это возможно сделать. Но даже то, что питон является кроссплатформенным языком (программы на нём можно запускать и в одной операционной системе, и в другой операционной системе, и в третьей), не делает программы на питоне кроссплатформенными. Ну, например, в программе на питоне для Linux питон может обратиться к программе, установленной в Linux, и использовать определённые пути к ней, к себе, к файлам каким-то, которые заложены в Linux ввиду её устройства. Но если эту же программу, написанную для Linux, поставить в Windows, то во-первых, в Windows нет этой программы, которая в Linux установлена, её надо установить сначала, а во-вторых, даже если её и поставить, то в Windows она ставится по другим путям и работает там вообще по-другому, и файлы тоже все вспомогательные в других местах расположены. То есть это придётся делать полиморфный питонокод, который ведёт себя типа одинаково, но под Linux делает свою основную работу линуксовым образом, а под Windows делает то же самое виндовым образом. А эти действия могут вообще в корне отличаться, хотя результаты этой работы выглядят похожими друг на друга. Это называется ad-hoc полиморфизм. При таком виде полиморфизма нужно каждую версию кода, делающего одно и то же, писать уникальным образом. Вот из-за этого, рациональнее всегда делать две версии программы - одна для Linux, а другая - для Windows. То есть ты их пишешь, называются они одинаково у тебя, версии у них тоже одинаковые стоят, но внутри они вообще полностью разные. Какие-то кусочки алгоритмов у них могут быть одинаково реализованы, но большая часть этих программ, процентов девяносто или восемьдесят, наверное, написана абсолютно по-разному, чтобы быть максимально оптимальными для тех операционных систем, для которых они написаны.
Вы писали: язык в интерпретаторе Bash - сможете малаленький Bash скрипт переделать в Python 3 &
satfanЕго нельзя переделать, его надо заново писать. Даже если бы он у меня на питоне был написан, под винду его надо было бы писать заново и для винды ещё дописывать куски, которых нет в линуксовой версии. Потому что винда - это винда, там куча тупизны в самой системе, поэтому там надо для урегулирования вопросов с этой тупизной писать допольнительный код. Просто вспомни, как надо было писать сайты раньше: сначала ты пишешь сайт, а потом пишешь целую тонну кода разного в этом сайте, чтобы этот сайт нормально открывался в виндовом Internet Explorer'е, потому что эта виндовая параша была ни к селу ни к городу, но при этом успела захватить рынок браузеров и из-за этого стояла практически на каждом компе у каких-нибудь бабок тупых, которые других браузеров не знали.
сможете малаленький Bash скрипт переделать в Python 3
# Determine the optimal format for video on Ok.ru;
# It returns the hd format or the sd format if the hd format
# doesn't exist
# load_file_ok_get_vformat(url)
# args:
# url - The url for video on Ok.ru
# return:
# "format for hd" - String with format for hd
# "format for sd" - String with format for sd if no hd
# none - If no sd and no hd
load_file_ok_get_vformat()
{
local url=$1
Ytl "$url" | awk '
state == 0 {
if ($1 ~ /^(sd|hd)$/)
state = 1
}
state == 1 {
if ($1 ~ /^hls-[0-9]+$/) {
vformat = $1
state = 0
}
}
END {print vformat}
'
}
# Determine the optimal format for video on Rutube.ru;
# It returns m3u8-form for different formats; for the 720p format
# otherwise for the 1080p format otherwise for the 480p format if
# previous formats don't exist
# load_file_rt_get_vformat(url)
# args:
# url - The url for video on Rutube.ru
# return:
# "m3u8-NNNN" for 720p |
# "m3u8-NNNN" for 1080p |
# "m3u8-NNNN" for 480p |
# none
load_file_rt_get_vformat()
{
local url=$1
Ytl "$url" | awk '
$1 ~ /^m3u8/ && $2 == "mp4" {
if ($3 ~ /x480$/) {
has480 = 1
vformat480 = $1
}
else if ($3 ~ /x720$/) {
has720 = 1
vformat720 = $1
}
else if ($3 ~ /x1080$/) {
has1080 = 1
vformat1080 = $1
}
}
END {
if (has720) {
vformat = vformat720
}
else if (has1080) {
vformat = vformat1080
}
else if (has480) {
vformat = vformat480
}
print vformat
}
'
}
[guest@localhost ~]$ ffurls --help
usage: ffurls [ --text | --org | --html ]
Save open browser Firefox tabs (title and url) to the file with a given format.
noarg -- The default format from config file is used.
--text -- Save output to text format.
--org -- Save output to org format.
--html -- Save output to html format.
--version -- Print program version information.
[guest@localhost ~]$ ffurls --html
Try `ffurls --help' for more information.
[guest@localhost ~]$
Отредактировано py.user.next (Ноя. 24, 2022 21:34:25)
Офлайн