mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-28 21:31:03 +00:00
Mediafire Support
This commit is contained in:
@@ -8,7 +8,7 @@ import {
|
||||
} from "@main/repository";
|
||||
import { publishDownloadCompleteNotification } from "../notifications";
|
||||
import type { DownloadProgress } from "@types";
|
||||
import { GofileApi, QiwiApi, DatanodesApi } from "../hosters";
|
||||
import { GofileApi, QiwiApi, DatanodesApi, MediafireApi } from "../hosters";
|
||||
import { PythonRPC } from "../python-rpc";
|
||||
import {
|
||||
LibtorrentPayload,
|
||||
@@ -287,6 +287,16 @@ export class DownloadManager {
|
||||
save_path: game.downloadPath!,
|
||||
};
|
||||
}
|
||||
case Downloader.Mediafire: {
|
||||
const downloadUrl = await MediafireApi.getDownloadUrl(game.uri!);
|
||||
|
||||
return {
|
||||
action: "start",
|
||||
game_id: game.id,
|
||||
url: downloadUrl,
|
||||
save_path: game.downloadPath!,
|
||||
};
|
||||
}
|
||||
case Downloader.Torrent:
|
||||
return {
|
||||
action: "start",
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
export * from "./gofile";
|
||||
export * from "./qiwi";
|
||||
export * from "./datanodes";
|
||||
export * from "./mediafire";
|
||||
|
||||
31
src/main/services/hosters/mediafire.ts
Normal file
31
src/main/services/hosters/mediafire.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import axios, { AxiosResponse } from "axios";
|
||||
import { JSDOM } from "jsdom";
|
||||
|
||||
export class MediafireApi {
|
||||
private static readonly session = axios.create();
|
||||
|
||||
public static async getDownloadUrl(mediafireUrl: string): Promise<string> {
|
||||
const response: AxiosResponse<string> = await this.session.get(
|
||||
mediafireUrl,
|
||||
{
|
||||
headers: {
|
||||
"User-Agent":
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
|
||||
},
|
||||
maxRedirects: 0,
|
||||
validateStatus: (status: number) => status === 302 || status < 400,
|
||||
}
|
||||
);
|
||||
|
||||
if (response.status === 302) {
|
||||
return response.headers["location"] || "";
|
||||
}
|
||||
|
||||
const dom = new JSDOM(response.data);
|
||||
const downloadButton = dom.window.document.querySelector(
|
||||
"a#downloadButton"
|
||||
) as HTMLAnchorElement;
|
||||
|
||||
return downloadButton?.href || "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user