-
Notifications
You must be signed in to change notification settings - Fork 10.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extraction Failure: Unable to Retrieve Video Formats from Filemoon.sx #32946
Comments
Review #30839 as asked to find out how to install a version of the program that should solve your problem. Please post a verbose log if that version fails, or close the issue. |
Thank you for your response! I tried using the older version of yt-dlp as suggested. Here are the details of what I encountered: Command Used:
my downgraded version is |
If you're using yt-dlp, ask about it there, but the site you're using may not be supported. The nightly build of this program, as linked from #30839, should support the site: it did when the extractor was last updated. |
From the UK the problem video is blocked |
It's broken indeed, but not severely. They started using a "landing page" and embedding an A quick and dirty fix is to change the extractor (
As said, quick and dirty, though. No idea what that might do to other XFileShare-supported sites, and I'm not in the mood to create a full PR for this. |
Exactly what I found (with a different page -- see below), so there's no need: see new update to #32944. Regarding the problem page: $ python -m youtube_dl -vF 'https://filemoon.sx/d/jv6whayugrjc/vif.mp4'
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-vF', u'https://filemoon.sx/d/jv6whayugrjc/vif.mp4']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Git HEAD: aae565d56
[debug] Python 2.7.15 (CPython i686 32bit) - Linux-6.1.0-25-686-pae-i686-with-debian-12.7 - OpenSSL 1.1.1a 20 Nov 2018 - glibc 2.1.3
[debug] exe versions: ffmpeg 5.1.6-0, ffprobe 5.1.6-0
[debug] Proxy map: {}
[XFileShare] jv6whayugrjc: Downloading webpage
ERROR: This video is not available from your location due to geo restriction
You might want to use a VPN or a proxy server (with --proxy) to workaround.
Traceback (most recent call last):
File "youtube_dl/YoutubeDL.py", line 875, in wrapper
return func(self, *args, **kwargs)
File "youtube_dl/YoutubeDL.py", line 971, in __extract_info
ie_result = ie.extract(url)
File "youtube_dl/extractor/common.py", line 571, in extract
ie_result = self._real_extract(url)
File "youtube_dl/extractor/xfileshare.py", line 216, in _real_extract
self.raise_geo_restricted()
File "youtube_dl/extractor/common.py", line 1025, in raise_geo_restricted
raise GeoRestrictedError(msg, countries=countries)
GeoRestrictedError: This video is not available from your location due to geo restriction
$ If someone would care to test the PR in a location other than UK and post some other sort of result here, that would be reassuring (or helpful, if it failed). |
ACK. WORKSFORME. Output for the test video included in the file:
|
Ironically, though, there is another issue for this video (which I haven't seen with others) because they started to detect public VPNs (and which also produces broken HTML... sigh):
The geo block detection in 0ddcc15 could be extended to match on the |
Are you able to test the problem video from a non-VPN-blocked IP address, maybe with a mobile hotspot? Just I take yr point on regexes but we're already deep in there; let's systematise: --- f7dc45d/youtube_dl/extractor/xfileshare.py
+++ new/youtube_dl/extractor/xfileshare.py
@@ -206,18 +206,20 @@ class XFileShareIE(InfoExtractor):
get_element_by_id('container', main)
or get_element_by_class('container', main)
or webpage)
- if self._search_regex(
- r'>This server is in maintenance mode\.', container_div,
- 'maint error', group=0, default=None):
- raise ExtractorError(clean_html(container_div), expected=True)
- if self._search_regex(
- 'not available in your country', container_div,
- 'geo block', group=0, default=None):
- self.raise_geo_restricted()
- if self._search_regex(
- self._FILE_NOT_FOUND_REGEXES, container_div,
- 'missing video error', group=0, default=None):
- raise ExtractorError('Video %s does not exist' % video_id, expected=True)
+
+ def raise_ExtractorError(html, expected=True):
+ raise ExtractorError(clean_html(html), expected=expected)
+
+ BADNESS = (
+ (r'>This server is in maintenance mode\.', 'maint error', raise_ExtractorError),
+ (r'>Access Denied VPN Detected\.', 'VPN error', raise_ExtractorError),
+ ('not available in your country', 'geo block', lambda _: self.raise_geo_restricted()),
+ (self._FILE_NOT_FOUND_REGEXES, 'missing video error',
+ lambda _: raise_ExtractorError('Video %s does not exist' % (video_id,), expected=True)),
+ )
+ for symptoms, desc, action in BADNESS:
+ if self._search_regex(symptoms, container_div, desc, group=0, default=None):
+ action(container_div)
fields = self._hidden_inputs(webpage)
|
I've tested the problematic video both with a VPN and with bypassing a VPN. :) The youtube-dl output I posted for https://filemoon.sx/d/fbsxidybremo was without a VPN, which obviously worked fine, but with a VPN, the site only returned the error page described (with irrelevant data removed) in my later comment. It's been the same video, just once without and once with going through a VPN. With that patch, the format selection still comes out fine without going through a VPN; with going through a VPN, the exception probably looks kinda confusing to users:
|
Agreed, but also your wrapper script seems to be eliding and/or mixing up some of the error text ( This error function should be better: def raise_ExtractorError(html, expected=True):
raise ExtractorError(clean_html(self._search_regex(
r'(?si)<h1(?:\s[^>]*)?>(.*?)</h1>', html, 'error heading', default=html)),
expected=expected) |
I know, it looks as such, but really isn't the case. The wrapper is simple: #!/bin/bash
typeset cur_arg=''
typeset -a new_args
new_args=()
for cur_arg in "${@}"; do
if [ '--legacy-server-connect' != "${cur_arg}" ]; then
new_args+=( "${cur_arg}" )
fi
done
exec env 'PYTHONPATH=/home/ionic/src/youtube-dl-git' 'python3.10' -m 'youtube_dl' "${new_args[@]}" and I'm getting the same output if run directly:
Whatever is mangling the output, it wasn't me doing it. Yeah, with the modified
(and, for some reason, the output isn't mangled any longer.) |
Checklist
Verbose log
Description
I am trying to download a video from filemoon.sx using the URL
https://filemoon.sx/d/jv6whayugrjc/vif.mp4
, but I am unable to retrieve the.m3u8
stream link, which is essential for downloading the video. Despite using both the pip version and the GitHub version ofyoutube-dl
, I encounter the same issue.When I run the command:
youtube-dl --verbose -f best -o output.mp4 https://filemoon.sx/d/jv6whayugrjc/vif.mp4
I receive an error stating: "No video formats found." This error persists even though the URL is accessible and playable in a browser. I would appreciate your assistance in resolving this issue with the extractor for filemoon.sx, as obtaining the
.m3u8
link is critical for my download needs.The text was updated successfully, but these errors were encountered: