Reino17 / xivid

Xivid, een Windows en Linux video-url extractie commandoregel-script.
GNU General Public License v3.0
7 stars 2 forks source link

Soundcloud support #10

Closed Invictaz closed 4 years ago

Invictaz commented 4 years ago

Website

https://soundcloud.com/laidbackluke/laidback-luke-dj-set-live-at

Geeft (dit is een mp3 file)

https://cf-media.sndcdn.com/gF2U20J9lZfU?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiKjovL2NmLW1lZGlhLnNuZGNkbi5jb20vZ0YyVTIwSjlsWmZVIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNTk0NjQyNjAxfX19XX0_&Signature=PxqBfPTvrnM-C-snnMgyF~Z1aXHlDKgFJOKvfBlQ5pVTPgw7eNu08T7IbBSv4oBS58Stqr~bwHMbyGSUn~Bx53eoNfr56slky96qDBjIuTlIDp6C--kCnCxQsd74Wes5bU0CIUHIH81l29uf-EO09dRbkW4McTZj9NgO26f1mwURyGtLeJeF8fM6IccdSynm2x05uG9gqnhfbgyHVXvGwsB~S0E27d2OYjHbYl4VdPfwXPcScJneIjFSxGawY-8A-Ik4JC88WOaqqmbTVhAKfQ9-AKiWdOaHfQIyFZyJe6a3SeNuX7onTPVo73o52BO5-OdQDC8-uPAcf8azA3Am5Q__&Key-Pair-Id=APKAI6TU7MMXM5DG6EPQ

Gek genoeg zijn deze urls maar kort geldig, want 10 minuten na het posten werkt hij al niet meer (error forbidden)

De m3u8 zou ook handig zijn maar weet niet of dat haalbaar is. De MP3 is eigenlijk het beste

Soundcloud.py (van Youtube-dl) is recent nog bijgewerkt https://github.com/ytdl-org/youtube-dl/blob/d1b27220959921c8c96bfd92c946edb52c78c39b/youtube_dl/extractor/soundcloud.py

Maar:

https://github.com/ytdl-org/youtube-dl/issues/23244

https://github.com/flyingrub/scdl

Deze zou nog moeten werken maar heeft wel veel openstaande issues, aangezien Soundcloud blijkbaar ook OPUS heeft naast Mp3. En mensen vragen allerlei extra functies zoals proxy enzo wat ik allemaal niet nodig heb.

Het issue is schijnbaar nog niet gefixed daar, maar hij doet het wel

Microsoft Windows [versie 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle rechten voorbehouden.

C:\Users\Algemeen\Downloads\Software\Youtube-DL>youtube-dl https://soundcloud.com/
laidbackluke/laidback-luke-dj-set-live-at
[soundcloud] laidbackluke/laidback-luke-dj-set-live-at: Downloading info JSON
[soundcloud] None: Downloading webpage
[soundcloud] None: Downloading webpage
[soundcloud] laidbackluke/laidback-luke-dj-set-live-at: Downloading info JSON
[soundcloud] 66196563: Downloading JSON metadata
[soundcloud] 66196563: Downloading webpage
[soundcloud] 66196563: Downloading JSON metadata
[soundcloud] 66196563: Downloading JSON metadata
[soundcloud] 66196563: Downloading JSON metadata
[download] Destination: Laidback Luke DJ set Live At Escape From Wonderland Oct
2012-66196563.mp3
[download]  48.6% of 55.09MiB at  3.67MiB/s ETA 00:07
ERROR: Interrupted by user
Invictaz commented 4 years ago

@Reino17 De extractor werkt niet. Er is ook geen verbose mode dus ik kan niet testen wat er aan de hand is en zien waarop het fout loopt.

Reino17 commented 4 years ago

Ah, sorry! Mijn fout.

Reino17 commented 4 years ago

Als je trouwens "een kijkje achter de schermen" wilt, dan kun je @ECHO off in commentaar veranderen, rem @ECHO off, of zelfs helemaal verwijderen.

Reino17 commented 4 years ago

Laten we de discussie hier blijven voeren i.p.v. als commentaar bij de commits.

Dat is het hem nou juist, ik wilde de volledige versie. Niet de preview ;-)

Die is niet beschikbaar (zonder te betalen, denk ik).

En JA, xidel.exe is versie 0.99 en staat ook in SysWow64

Minimale vereiste versie is 0.9.8, dus dat zit wel goed.

C:\Users\Invictaz\Downloads\Software\Batchgemist\xivid-master-23-7-2020\xivid-mast
er>SET json={^"name^": ^"Jean Elan - If U Feel^"^, ^"date^": ^"08-07-2020^"^, ^"
duration^": ^"00:02:59^"^, ^"formats^": []}

Hier zit het probleem. De "formats"-array blijft op de een of andere manier leeg.
Zou je de volgende xidel-commando's (dezelfde als in mijn notities) uit willen voeren en de output daarvan hier posten?

xidel -s "https://soundcloud.com/jean-elan/if-u-feel" -e "substring(substring-after(unparsed-text(//script[@crossorigin][last()]/@src),'client_id:'),2,32)"

xidel -s "https://soundcloud.com/jean-elan/if-u-feel" -e "let $cid:=substring(substring-after(unparsed-text(//script[@crossorigin][last()]/@src),'client_id:'),2,32) return json(//script/extract(.,'(\[\{.+)\)',1)[.])()[.//media]/(.//transcodings)()/concat(url,'?client_id=',$cid)"

xidel -s "https://soundcloud.com/jean-elan/if-u-feel" -e "let $cid:=substring(substring-after(unparsed-text(//script[@crossorigin][last()]/@src),'client_id:'),2,32) return json(//script/extract(.,'(\[\{.+)\)',1)[.])()[.//media]/(.//transcodings)()/json(concat(url,'?client_id=',$cid))/url"
Invictaz commented 4 years ago

Sowieso raar dat je zelf niet het issue kunt heropenen als je de starter bent, anders had ik dat uiteraard gedaan. En ik wilde geen nieuwe starten...

Maar denk je dat of weet je dat van het gehele betaalde nummer? Want voor zover ik het kan zien is de betaalde versie ook gewoon een HLS, maar haalt hij de gratis snippet eerst op. Ik ben niet extreem handig met Google Chrome console maar ik zie wel dat er via de api-v2 e.e.a. wordt opgehaald.

Ik ben er al achter waarom het niet werkte. Ik had een VPN aan staan op een land buiten Europa. Als je dan dat liedje bezoekt staat er

image

Daarmee is de kous nog niet af, want de VPN uitzetten is maar een workaround. Er zijn dus nummers die zijn geo-blocked en in ideale situatie (o.a. met FFMPEG --proxy) kun je deze geoblock omzeilen. Ik denk dat je bij bepaalde sites daar wel ervaring mee hebt? Het is namelijk vrij ondoenlijk om precies van elk nummer te weten te komen welke landen het beschikbaar is. Gewoon meteen de geoblok eraf is veel handiger lijkt mij.

Youtube-dl heeft dit ook in hun code opgenomen bij diverse extractors.

xivid.bat https://soundcloud.com/jean-elan/if-u-feel
https://cf-hls-media.sndcdn.com/playlist/0/30/wcUtVX8LSIKx.128.mp3/playlist.m3u8?[...]
Reino17 commented 4 years ago

Maar denk je dat of weet je dat van het gehele betaalde nummer?

Zoals ik al zei denk ik dat ja. Volgens mij kun je met youtube-dl en accountgegevens zo'n audiostream wel binnenhalen, maar ik wil daar (voor alsnog) niet aan.

Ik had een VPN aan staan op een land buiten Europa. [...] Ik denk dat je bij bepaalde sites daar [geo-blocking] wel ervaring mee hebt?

Voor door xivid ondersteunde websites nog niet nee. Maar jij woont dus helemaal niet in NL?

Youtube-dl heeft dit [geo-block er af halen] ook in hun code opgenomen bij diverse extractors.

Als jij hiervoor een geschikte en werkende fix weet voor xivid, dan houd ik me aanbevolen.

Dan kan deze "issue" wél weer gesloten worden, denk ik?

[edit] Ik bedenk me net dat xidel natuurlijk ook een --proxy=<string> optie heeft. Daar zou je eens mee kunnen experimenteren. [/edit]

Invictaz commented 4 years ago

Ik gebruik een VPN vanwege veiligheid / blokkeren van trackers en ads. Hoe zou ik die --proxy dan moeten gebruiken in een xivid commando? Want ik kan xidel niet vanuit xivid aansturen. Dan zou ik los die json links moeten opvragen ofzo?

Reino17 commented 4 years ago

Ondanks dat ik geen ervaring heb met VPN's was ik wel in de veronderstelling dat met het gebruik van een VPN / VPN-software je gehele internetverbinding via die VPN loopt en je dus niet nog eens een keer afzonderlijk programma's hoeft te configureren. Of klopt dat niet?

Voor xivid zou je die optie in 'xivid.bat' aan XIDEL_OPTIONS toe kunnen voegen:

SET "XIDEL_OPTIONS=--silent --module=xivid.xqm --json-mode=deprecated --proxy=<ip:port>"
Invictaz commented 4 years ago

Is dat hetzelfde voor xivid.sh want ik gebruik die voornamelijk op dit moment? Mijn laptop aanzetten met dit warme weer dan wordt het nog heter namelijk in dat hok waar ik zit.

Betreffende VPN: Uhm afzonderlijke programma's moeten wel ingesteld worden welke verbinding ze gebruiken. Bijvoorbeeld: je hebt een Windows applicatie die je altijd over je ethernet laat lopen. Terwijl je VPN op je Wifi zit. Als het goed is moet dat kunnen. Een VPN is volgens mij geen totale take-over. Ik moet dat nog verder nakijken.

Op Android is het wel een complete take-over. Alles gaat over die pijp naar buiten. Of je nou op 4G zit of Wifi. Omdat die setting niet aan te passen is voor zover ik weet. Je kunt met IPTABLES op Android wel heel veel routeren maar daar ben ik nog niet aan begonnen. Eigenlijk is een Android telefoon ook niks meer dan een Linux pc met een schermpje.

Reino17 commented 4 years ago

Voor 'xivid.sh' zou dat moeten zijn:

export XIDEL_OPTIONS="--silent --module=xivid.xqm --json-mode=deprecated --proxy=<ip:port>"
Invictaz commented 3 years ago

Ik kijk hier op een later moment nog eens naar. -- proxy enz is niet nodig bij een VPN