Skip to content

Commit b956e9e

Browse files
author
updating-bot
committed
mirroring bot - 2025/09/26
1 parent 3e497eb commit b956e9e

File tree

12 files changed

+420
-243
lines changed

12 files changed

+420
-243
lines changed

svn_trunk/src/jd/plugins/Plugin.java

Lines changed: 66 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -598,63 +598,77 @@ protected boolean setFilename(FILENAME_SOURCE source, DownloadLink link, String
598598
}
599599
}
600600

601-
public String correctOrApplyFileNameExtension(final String filenameOrg, String newExtension, URLConnectionAdapter connection) {
601+
public String correctOrApplyFileNameExtension(final String filenameArg, String newExtension, URLConnectionAdapter connection) {
602602
final String newExtensionParam = newExtension;
603603
if (connection != null) {
604604
final String extensionFromConnection = getExtensionFromConnection(connection);
605605
if (extensionFromConnection != null) {
606606
newExtension = extensionFromConnection;
607607
}
608608
}
609-
if (filenameOrg == null) {
609+
if (filenameArg == null) {
610610
return null;
611611
} else if (StringUtils.isEmpty(newExtension)) {
612-
return filenameOrg;
612+
return filenameArg;
613613
} else if (!newExtension.startsWith(".")) {
614614
newExtension = "." + newExtension;
615615
}
616616
if (!StringUtils.equalsIgnoreCase(newExtensionParam, newExtension)) {
617617
// call again with newExtension set
618-
return correctOrApplyFileNameExtension(filenameOrg, newExtension, connection);
618+
return correctOrApplyFileNameExtension(filenameArg, newExtension, connection);
619+
}
620+
if (StringUtils.endsWithCaseInsensitive(filenameArg, newExtension)) {
621+
/* Filename already ends with target-extension. */
622+
return filenameArg;
619623
}
620624
final CompiledFiletypeExtension filetypeNew = CompiledFiletypeFilter.getExtensionsFilterInterface(newExtension);
621-
if (!filenameOrg.contains(".")) {
625+
/* Fix ugly filenames that e.-g. end with " mp4" */
626+
String filename = filenameArg.replaceFirst("(?i)" + Pattern.quote(newExtension.replace(".", "")) + "$", "").trim();
627+
if (filename.equals(filenameArg) && filetypeNew != null) {
628+
for (int length = 4; length >= 1; length--) {
629+
final String maybeExtension = new Regex(filename, "[^\\.]([a-zA-Z0-9]{" + length + "})$").getMatch(0);
630+
final CompiledFiletypeExtension maybeExtensionFileType = CompiledFiletypeFilter.getExtensionsFilterInterface(maybeExtension);
631+
if (maybeExtensionFileType != null && filetypeNew.isSameExtensionGroup(maybeExtensionFileType)) {
632+
// remove extension(without leading dot) of same ExtensionGroup as newExtension
633+
filename = filenameArg.replaceFirst("(?i)" + Pattern.quote(maybeExtension) + "$", "").trim();
634+
break;
635+
}
636+
}
637+
}
638+
if (!filename.contains(".")) {
622639
/* Filename doesn't contain an extension at all -> Add extension to filename. */
623-
if (allowFileNameExtension(filenameOrg, null, filetypeNew)) {
624-
return filenameOrg + newExtension;
640+
if (allowFileNameExtension(filename, null, filetypeNew)) {
641+
return filename + newExtension;
625642
} else {
626643
logger.info("blocked new extension:" + newExtension + "|" + filetypeNew);
627-
return filenameOrg;
644+
return filename;
628645
}
629-
} else if (StringUtils.endsWithCaseInsensitive(filenameOrg, newExtension)) {
630-
/* Filename already ends with target-extension. */
631-
return filenameOrg;
632646
} else if (filetypeNew == null) {
633647
/* Unknown new filetype -> Do not touch given filename */
634648
logger.info("unknown new extension:" + newExtension);
635-
return filenameOrg;
649+
return filename;
636650
}
637-
final int lastIndex = filenameOrg.lastIndexOf(".");
638-
final String currentFileExtension = lastIndex < filenameOrg.length() ? filenameOrg.substring(lastIndex) : null;
651+
final int lastIndex = filename.lastIndexOf(".");
652+
final String currentFileExtension = lastIndex < filename.length() ? filename.substring(lastIndex) : null;
639653
if (StringUtils.isEmpty(currentFileExtension)) {
640-
return filenameOrg;
654+
return filename;
641655
}
642656
final CompiledFiletypeExtension filetypeOld = CompiledFiletypeFilter.getExtensionsFilterInterface(currentFileExtension);
643657
if (filetypeOld == null) {
644-
if (allowFileNameExtension(filenameOrg, filetypeOld, filetypeNew)) {
645-
return filenameOrg + newExtension;
658+
if (allowFileNameExtension(filename, filetypeOld, filetypeNew)) {
659+
return filename + newExtension;
646660
} else {
647661
logger.info("blocked new extension:" + newExtension + "|" + filetypeNew);
648-
return filenameOrg;
662+
return filename;
649663
}
650664
} else if (filetypeNew.isValidExtension(currentFileExtension)) {
651665
/* Filename already contains valid/alternative target-extension e.g. webm/mp4 or jpg/jpeg */
652-
return filenameOrg;
653-
} else if (allowFileNameExtension(filenameOrg, filetypeOld, filetypeNew)) {
654-
final String filenameWithoutExtension = filenameOrg.substring(0, lastIndex);
666+
return filename;
667+
} else if (allowFileNameExtension(filename, filetypeOld, filetypeNew)) {
668+
final String filenameWithoutExtension = filename.substring(0, lastIndex);
655669
return filenameWithoutExtension + newExtension;
656670
} else {
657-
return filenameOrg;
671+
return filename;
658672
}
659673
}
660674

@@ -679,41 +693,56 @@ protected boolean allowFileNameExtension(String filenameOrg, CompiledFiletypeExt
679693
* Do not use this to replace a file extension with another one if you clearly know what to replace with what because this will auto
680694
* decide whether to replace or append the new extension!
681695
*/
682-
public String applyFilenameExtension(final String filenameOrg, String newExtension) {
683-
if (filenameOrg == null) {
696+
public String applyFilenameExtension(final String filenameArg, String newExtension) {
697+
if (filenameArg == null) {
684698
return null;
685699
} else if (StringUtils.isEmpty(newExtension)) {
686-
return filenameOrg;
687-
} else if (!newExtension.startsWith(".")) {
700+
return filenameArg;
701+
}
702+
if (!newExtension.startsWith(".")) {
688703
newExtension = "." + newExtension;
689704
}
690-
if (StringUtils.endsWithCaseInsensitive(filenameOrg, newExtension)) {
705+
if (StringUtils.endsWithCaseInsensitive(filenameArg, newExtension)) {
691706
/* Filename already contains target-extension. */
692-
return filenameOrg;
693-
} else if (!filenameOrg.contains(".")) {
707+
return filenameArg;
708+
}
709+
final CompiledFiletypeExtension filetypeNew = CompiledFiletypeFilter.getExtensionsFilterInterface(newExtension);
710+
/* Fix ugly filenames that e.-g. end with " mp4" */
711+
String filename = filenameArg.replaceFirst("(?i)" + Pattern.quote(newExtension.replace(".", "")) + "$", "").trim();
712+
if (filename.equals(filenameArg) && filetypeNew != null) {
713+
for (int length = 4; length >= 1; length--) {
714+
final String maybeExtension = new Regex(filename, "[^\\.]([a-zA-Z0-9]{" + length + "})$").getMatch(0);
715+
final CompiledFiletypeExtension maybeExtensionFileType = CompiledFiletypeFilter.getExtensionsFilterInterface(maybeExtension);
716+
if (maybeExtensionFileType != null && filetypeNew.isSameExtensionGroup(maybeExtensionFileType)) {
717+
// remove extension(without leading dot) of same ExtensionGroup as newExtension
718+
filename = filenameArg.replaceFirst("(?i)" + Pattern.quote(maybeExtension) + "$", "").trim();
719+
break;
720+
}
721+
}
722+
}
723+
if (!filename.contains(".")) {
694724
/* Filename has no extension at all -> Apply extension */
695-
return filenameOrg + newExtension;
725+
return filename + newExtension;
696726
}
697-
final int lastIndex = filenameOrg.lastIndexOf(".");
698-
final String currentFileExtension = lastIndex < filenameOrg.length() ? filenameOrg.substring(lastIndex) : null;
727+
final int lastIndex = filename.lastIndexOf(".");
728+
final String currentFileExtension = lastIndex < filename.length() ? filename.substring(lastIndex) : null;
699729
final CompiledFiletypeExtension filetypeOld = CompiledFiletypeFilter.getExtensionsFilterInterface(currentFileExtension);
700730
if (filetypeOld == null) {
701731
/* We don't know the type of the current/old file extension -> No "smart handling" possible -> Apply new extension */
702-
return filenameOrg + newExtension;
732+
return filename + newExtension;
703733
}
704-
final CompiledFiletypeExtension filetypeNew = CompiledFiletypeFilter.getExtensionsFilterInterface(newExtension);
705734
if (filetypeNew != null) {
706735
if (filetypeNew.isValidExtension(currentFileExtension)) {
707736
/* Filename already contains valid/alternative target-extension e.g. webm/mp4 or jpg/jpeg */
708-
return filenameOrg;
737+
return filename;
709738
} else if (filetypeNew.isSameExtensionGroup(filetypeOld)) {
710739
/* Same filetype (e.g. old is image, new is image) -> Replace old extension with new extension e.g. .png to .jpg */
711-
final String filenameWithoutExtension = filenameOrg.substring(0, lastIndex);
740+
final String filenameWithoutExtension = filename.substring(0, lastIndex);
712741
return filenameWithoutExtension + newExtension;
713742
}
714743
}
715744
/* Apply new extension */
716-
return filenameOrg + newExtension;
745+
return filename + newExtension;
717746
}
718747

719748
protected boolean isConnectionOffline(Throwable e) {
@@ -869,7 +898,6 @@ public static PluginEnvironment getPluginEnvironment() {
869898
return PluginEnvironment.UNKNOWN;
870899
}
871900
}
872-
873901
}
874902

875903
protected final PluginEnvironment getPluginEnvironment() {

svn_trunk/src/jd/plugins/decrypter/GenericM3u8Decrypter.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
import org.jdownloader.plugins.config.PluginJsonConfig;
5151
import org.jdownloader.plugins.controller.LazyPlugin.FEATURE;
5252

53-
@DecrypterPlugin(revision = "$Revision: 51444 $", interfaceVersion = 3, names = { "m3u8" }, urls = { "(https?://.+\\.m3u8|m3u8://https?://.*)($|(?:\\?|%3F)[^\\s<>\"']*|#.*)" })
53+
@DecrypterPlugin(revision = "$Revision: 51571 $", interfaceVersion = 3, names = { "m3u8" }, urls = { "(https?://.+\\.m3u8|m3u8://https?://.*)($|(?:\\?|%3F)[^\\s<>\"']*|#.*)" })
5454
public class GenericM3u8Decrypter extends PluginForDecrypt {
5555
@Override
5656
public Boolean siteTesterDisabled() {
@@ -81,14 +81,16 @@ public ArrayList<DownloadLink> decryptIt(final CryptedLink param, ProgressContro
8181
br.setCookies(host, Cookies.parseCookies(cookiesString, host, null));
8282
}
8383
preSetTitle = downloadLink.getStringProperty(GenericM3u8.PRESET_NAME_PROPERTY);
84+
refererURL = downloadLink.getReferrerUrl();
8485
}
8586
if (!StringUtils.equals(source.getURL(), param.getCryptedUrl())) {
8687
if (source instanceof BrowserCrawledLink) {
8788
final BrowserCrawledLink bcl = (BrowserCrawledLink) source;
8889
refererURL = source.getURL();
8990
br = bcl.cloneBrowser();
9091
logger.info("Reuse BrowserCrawledLink browser: " + br.getURL());
91-
} else if (source.getCryptedLink() != null) {
92+
} else if (source.getCryptedLink() != null && refererURL == null) {
93+
/* TODO: Maybe don't access URL here and just set referer header down below */
9294
try {
9395
refererURL = source.getURL();
9496
br.getPage(source.getURL());
@@ -119,18 +121,20 @@ public ArrayList<DownloadLink> decryptIt(final CryptedLink param, ProgressContro
119121
}
120122
if (ref != null) {
121123
try {
122-
br.getPage(ref);
123124
refererURL = ref;
125+
br.getPage(ref);
124126
logger.info("Actually used referer: " + ref);
125127
} catch (final IOException ignore) {
126128
logger.log(ignore);
127-
logger.info("Given referer is invalid: " + ref);
128129
}
129130
}
130131
}
131132
br.setFollowRedirects(true);
132133
final String m3u8 = param.getCryptedUrl().replaceFirst("(?i)^m3u8://", "");
133134
final GetRequest get = br.createGetRequest(m3u8);
135+
if (refererURL != null) {
136+
get.getHeaders().put("Referer", refererURL);
137+
}
134138
br.getPage(get);
135139
if (br.getHttpConnection() == null || br.getHttpConnection().getResponseCode() == 403 || br.getHttpConnection().getResponseCode() == 404) {
136140
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);

svn_trunk/src/jd/plugins/hoster/FileskachatCom.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import jd.plugins.PluginException;
3434
import jd.plugins.PluginForHost;
3535

36-
@HostPlugin(revision = "$Revision: 47664 $", interfaceVersion = 3, names = { "fileskachat.com" }, urls = { "https?://(?:www\\.)?fileskachat\\.com/file/\\d+_[A-Fa-f0-9]{32}\\.html" })
36+
@HostPlugin(revision = "$Revision: 51564 $", interfaceVersion = 3, names = { "fileskachat.com" }, urls = { "https?://(?:www\\.)?fileskachat\\.com/file/\\d+_[A-Fa-f0-9]{32}\\.html" })
3737
public class FileskachatCom extends PluginForHost {
3838
public FileskachatCom(PluginWrapper wrapper) {
3939
super(wrapper);
@@ -42,13 +42,12 @@ public FileskachatCom(PluginWrapper wrapper) {
4242

4343
@Override
4444
public String getAGBLink() {
45-
return "http://fileskachat.com/contact.html";
45+
return "https://" + getHost() + "/contact.html";
4646
}
4747

4848
/* Connection stuff */
49-
private final boolean FREE_RESUME = true;
50-
private final int FREE_MAXCHUNKS = 0;
51-
private final int FREE_MAXDOWNLOADS = 20;
49+
private final boolean FREE_RESUME = true;
50+
private final int FREE_MAXCHUNKS = 0;
5251

5352
// private final boolean ACCOUNT_FREE_RESUME = true;
5453
// private final int ACCOUNT_FREE_MAXCHUNKS = 0;
@@ -130,7 +129,7 @@ private String checkDirectLink(final DownloadLink downloadLink, final String pro
130129

131130
@Override
132131
public int getMaxSimultanFreeDownloadNum() {
133-
return FREE_MAXDOWNLOADS;
132+
return Integer.MAX_VALUE;
134133
}
135134

136135
@Override

0 commit comments

Comments
 (0)