Skip to content

Commit

Permalink
Add headers to image writer
Browse files Browse the repository at this point in the history
  • Loading branch information
NO-ob committed Mar 12, 2022
1 parent 93d68cb commit c81f752
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 17 deletions.
3 changes: 2 additions & 1 deletion lib/ImageWriter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'dart:math';
import 'dart:typed_data';


import 'package:LoliSnatcher/ViewUtils.dart';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;

Expand Down Expand Up @@ -65,7 +66,7 @@ class ImageWriter {
if(fileExists || item.isSnatched.value == true) return null;
try {
Uri fileURI = Uri.parse(item.fileURL);
var response = await http.get(fileURI);
var response = await http.get(fileURI,headers: ViewUtils.getFileCustomHeaders(booru,checkForReferer: true));
if (SDKVer < 30 && settingsHandler.extPathOverride.isEmpty) {
await Directory(path!).create(recursive:true);
await image.writeAsBytes(response.bodyBytes, flush: true);
Expand Down
10 changes: 4 additions & 6 deletions lib/ViewUtils.dart
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import 'package:LoliSnatcher/SearchGlobals.dart';
import 'package:LoliSnatcher/libBooru/Booru.dart';

class ViewUtils {

// unified http headers list generator for dio in thumb/media/video loaders
static Map<String, String> getFileCustomHeaders(SearchGlobal searchGlobal, {bool checkForReferer = false}) {
static Map<String, String> getFileCustomHeaders(Booru booru, {bool checkForReferer = false}) {
// a few boorus doesn't work without a browser useragent
Map<String,String> headers = {"user-agent": "Mozilla/5.0 (Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0"};
// some boorus require referer header
if(checkForReferer) {
Booru? curBooru = searchGlobal.selectedBooru.value;
switch (curBooru.type) {
switch (booru.type) {
case 'World':
if(curBooru.baseURL!.contains('rule34.xyz')) {
if(booru.baseURL!.contains('rule34.xyz')) {
headers["referer"] = "https://rule34xyz.b-cdn.net";
} else if(curBooru.baseURL!.contains('rule34.world')) {
} else if(booru.baseURL!.contains('rule34.world')) {
headers["referer"] = "https://rule34storage.b-cdn.net";
}
break;
Expand Down
2 changes: 1 addition & 1 deletion lib/widgets/CachedThumbBetter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class _CachedThumbBetterState extends State<CachedThumbBetter> {
_dioCancelToken = CancelToken();
DioLoader newClient = DioLoader(
isMain ? thumbURL : widget.booruItem.thumbnailURL,
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
cancelToken: _dioCancelToken,
onProgress: _onBytesAdded,
onEvent: _onEvent,
Expand Down
2 changes: 1 addition & 1 deletion lib/widgets/MediaViewerBetter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class _MediaViewerBetterState extends State<MediaViewerBetter> {
_dioCancelToken = CancelToken();
client = DioLoader(
imageURL,
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
cancelToken: _dioCancelToken,
onProgress: _onBytesAdded,
onEvent: _onEvent,
Expand Down
6 changes: 3 additions & 3 deletions lib/widgets/VideoApp.dart
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ class _VideoAppState extends State<VideoApp> {
_cancelToken = CancelToken();
client = DioLoader(
widget.booruItem.fileURL,
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
cancelToken: _cancelToken,
onProgress: _onBytesAdded,
onEvent: _onEvent,
Expand Down Expand Up @@ -127,7 +127,7 @@ class _VideoAppState extends State<VideoApp> {
_sizeCancelToken = CancelToken();
sizeClient = DioLoader(
widget.booruItem.fileURL,
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
cancelToken: _sizeCancelToken,
onEvent: _onEvent,
);
Expand Down Expand Up @@ -372,7 +372,7 @@ class _VideoAppState extends State<VideoApp> {
videoController = VideoPlayerController.network(
widget.booruItem.fileURL,
videoPlayerOptions: Platform.isAndroid ? VideoPlayerOptions(mixWithOthers: true) : null,
httpHeaders: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
httpHeaders: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
);
}
// mixWithOthers: true, allows to not interrupt audio sources from other apps
Expand Down
10 changes: 5 additions & 5 deletions lib/widgets/VideoAppDesktop.dart
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ class _VideoAppDesktopState extends State<VideoAppDesktop> {
_cancelToken = CancelToken();
client = DioLoader(
widget.booruItem.fileURL,
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
cancelToken: _cancelToken,
onProgress: _onBytesAdded,
onEvent: _onEvent,
Expand Down Expand Up @@ -139,7 +139,7 @@ class _VideoAppDesktopState extends State<VideoAppDesktop> {
_sizeCancelToken = CancelToken();
sizeClient = DioLoader(
widget.booruItem.fileURL,
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
cancelToken: _sizeCancelToken,
onEvent: _onEvent,
);
Expand Down Expand Up @@ -357,7 +357,7 @@ class _VideoAppDesktopState extends State<VideoAppDesktop> {
// print('uri: ${widget.booruItem.fileURL}');
media = Media.network(
widget.booruItem.fileURL,
extras: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
extras: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
startTime: Duration(milliseconds: 50),
);
}
Expand All @@ -382,14 +382,14 @@ class _VideoAppDesktopState extends State<VideoAppDesktop> {
// print('uri: ${widget.booruItem.fileURL}');
media = Media.network(
widget.booruItem.fileURL,
extras: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
extras: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
startTime: Duration(milliseconds: 50),
);
}
isLoaded = true;

videoController = Player(id: widget.index);
videoController!.setUserAgent(ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: false).entries.first.value);
videoController!.setUserAgent(ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: false).entries.first.value);
videoController!.setVolume(viewerHandler.videoVolume);
// videoController!.open(
// media!,
Expand Down

0 comments on commit c81f752

Please sign in to comment.