This commit is contained in:
Danilo Reyes 2024-07-16 12:59:22 -06:00
commit d0af37ab9c
66 changed files with 9675 additions and 0 deletions

38
clean-cloud.sh Executable file
View File

@ -0,0 +1,38 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p bash rsync
# remote_server=miniserver
# local_directory=/mnt/pool/cloud
# remote_directories=(/mnt/pool /home/jawz/Multimedia /home/jawz/Pictures /home/jawz/gallery-dl)
shopt -s extglob
# for remote_dir in "${remote_directories[@]}"; do
# dir_name=${remote_dir%%+(/)}
# dir_name=${dir_name##*/}
# rsync -avz -r --info=progress2 --info=name0 \
# --remove-source-files \
# -e ssh "$remote_server":"$remote_dir"/ "$local_directory"/"$dir_name"/
# done
sync() {
echo "Syncing $1"
rsync -avzr --info=progress2 --info=name0 \
--remove-source-files \
-e ssh /mnt/miniserver/"$1"/ /mnt/server/"$1"
}
sync pool/scrapping/JawZ
sync pool/glue
dirs_whitelist=(Comics Espaniol Manga Webcomics Webtoons)
for dir in "${dirs_whitelist[@]}"; do
sync pool/multimedia/media/Library/"$dir"
done
sync "jawz/Pictures/To Organize"
echo "syncing download files"
jawz_config=/home/jawz/.config/jawz/
rsync -avz -r --info=progress2 --info=name0 --delete \
-e ssh miniserver:"$jawz_config" "$jawz_config"
echo "Donion rings nwn!"

59
clean-watch.sh Executable file
View File

@ -0,0 +1,59 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p bash gnome.zenity firefox
# Path to the list file
LIST_PATH="/mnt/miniserver/jawz/.config/jawz/lists/jawz/watch.txt"
KEPT_LINKS_PATH="/mnt/miniserver/jawz/.config/jawz/lists/jawz/kept_links.txt"
# Check if the list file exists
if [[ ! -f $LIST_PATH ]]; then
echo "List file not found at $LIST_PATH!"
exit 1
fi
touch $KEPT_LINKS_PATH
# Function to open a link in Firefox
open_link() {
local link=$1
firefox --new-tab "$link" &
}
# Function to show Zenity prompt
prompt_user() {
local link=$1
zenity --question --text="Do you want to keep this link?\n$link" --title="Keep Link?"
}
# Main loop
while [[ -s $LIST_PATH ]]; do
# Select a random link from the list file
link=$(grep -v -e "wikifeet.com" -e "kemono.su" -e "kemono.party" "$LIST_PATH" |
grep -vxFf "$KEPT_LINKS_PATH" | shuf -n 1)
# If no link is found, exit the loop
if [[ -z $link ]]; then
echo "No more links to process or only excluded/kept links remain."
break
fi
# Open the link in Firefox
open_link "$link"
# Wait for a short time to allow Firefox to open the link
sleep 3
# Show Zenity prompt to the user
if prompt_user "$link"; then
# If the user wants to keep the link, add it to the kept links file
echo "$link" >>"$KEPT_LINKS_PATH"
echo "Link kept: $link"
else
# If the user does not want to keep the link, remove it from the list file
grep -vF "$link" "$LIST_PATH" >temp.txt && mv temp.txt "$LIST_PATH"
echo "Link removed: $link"
fi
done
echo "No more links in $LIST_PATH"

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<FreeFileSync XmlType="GUI" XmlFormat="14">
<Compare>
<Variant>TimeAndSize</Variant>
<Symlinks>Exclude</Symlinks>
<IgnoreTimeShift/>
</Compare>
<Synchronize>
<Variant>TwoWay</Variant>
<DetectMovedFiles>false</DetectMovedFiles>
<DeletionPolicy>RecycleBin</DeletionPolicy>
<VersioningFolder Style="Replace"/>
</Synchronize>
<Filter>
<Include>
<Item>*</Item>
</Include>
<Exclude>
<Item>\System Volume Information\</Item>
<Item>\$Recycle.Bin\</Item>
<Item>\RECYCLER\</Item>
<Item>\RECYCLED\</Item>
<Item>*\desktop.ini</Item>
<Item>*\thumbs.db</Item>
</Exclude>
<TimeSpan Type="None">0</TimeSpan>
<SizeMin Unit="None">0</SizeMin>
<SizeMax Unit="None">0</SizeMax>
</Filter>
<FolderPairs>
<Pair>
<Left>D:\Comic</Left>
<Right>\\JAWZ-WORKSTATIO\OneDrive\Comic</Right>
</Pair>
</FolderPairs>
<Errors Ignore="false" Retry="0" Delay="5"/>
<LogFolder/>
<PostSyncCommand Condition="Completion"/>
<Gui>
<MiddleGridView>Action</MiddleGridView>
</Gui>
</FreeFileSync>

View File

@ -0,0 +1,30 @@
[General]
Program=thumbnailme
Date_file=Wed Sep 12 15:57:39 2018
[Settings]
columns=4
rows=4
width=1024
gap=1
formatFile=jpeg
quality=80
blank_skip=0.80
edge_detect=0
[Styles]
additional_title=
background_color=#000000
infotext_checked=true
timestamp_checked=true
infotext_font=Caviar Dreams
timestamp_font=Caviar Dreams
infotext_location=4
timestamp_location=2
infotext_size=12
timestamp_size=10
infotext_color=#ffffff
timestamp_color=#ffffff
shadow_color=#000000
isSameSourceChecked=true
path_output_batchmod=

View File

@ -0,0 +1,45 @@
[General]
ShowGridLines=0
SaveFilterIndex=1
ShowInfoTip=1
ShowTimeInGMT=0
MarkOddEvenRows=0
AddWildCard.SubfolderDepth=0
AddWildCard.Wildcard=
AddFiles=1
AddFolders=1
ExecuteOptions.ShowWindow=1
ExecuteOptions.ExecuteCommand=
ChangeTime.Created.UseTime=1
ChangeTime.Created.UseDate=1
ChangeTime.Created.Add=0
ChangeTime.Created.AddValue=5
ChangeTime.Created.AddUnit=3
ChangeTime.Created.DateTime=04-03-2020 21:00:34
ChangeTime.Modified.UseTime=0
ChangeTime.Modified.UseDate=0
ChangeTime.Modified.Add=0
ChangeTime.Modified.AddValue=5
ChangeTime.Modified.AddUnit=3
ChangeTime.Modified.DateTime=09-09-2018 15:30:34
ChangeTime.Accessed.UseTime=0
ChangeTime.Accessed.UseDate=0
ChangeTime.Accessed.Add=0
ChangeTime.Accessed.AddValue=5
ChangeTime.Accessed.AddUnit=3
ChangeTime.Accessed.DateTime=09-09-2018 15:30:34
ChangeTime.TimeInGMT=0
ChangeTime.CopyTimeFrom=1
ChangeTime.CopyTimeToCreated=1
ChangeTime.CopyTimeToModified=0
ChangeTime.CopyTimeToAccessed=1
ChangeTime.UseCopyTime=0
ChangeAttr.Archive=1
ChangeAttr.Hidden=3
ChangeAttr.ReadOnly=1
ChangeAttr.System=1
ChangeAttr.Temporary=1
ChangeTime.TimeSequenceMode=0
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF B7 01 00 00 C0 01 00 00 7C 05 00 00 A0 03 00 00
Columns=96 00 00 00 FA 00 01 00 6E 00 02 00 6E 00 03 00 6E 00 04 00 64 00 05 00 5A 00 06 00 5A 00 07 00 C8 00 08 00 78 00 09 00
Sort=2

View File

@ -0,0 +1,319 @@
BulkFileChanger v1.51
Copyright (c) 2010 - 2017 Nir Sofer
Web site: http://www.nirsoft.net
Description
===========
BulkFileChanger is a small utility that allows you to create files list
from multiple folders, and then make some action on them - Modify their
created/modified/accessed time, change their file attribute (Read Only,
Hidden, System), run an executable with these files as parameter, and
copy/cut paste into Explorer.
BulkFileChanger is a replacement for the old FileDate Changer utility.
System Requirements & Limitations
=================================
* This utility works on any version of Windows, starting from Windows
2000 and up to Windows 10. Both 32-bit and 64-bit systems are supported.
* If you set a date prior to 01/01/1980, Windows Explorer will not
display this date, due to a limitation originally created for old FAT
systems. You can still watch an old file date using other file managers
like 7-zip, using BulkFileChanger utility, or by right-clicking on the
file and choosing 'Properties'.
Versions History
================
* Version 1.51:
o Added 'Fill Date/Time From File' button to the 'Change file time
/ attributes' window. When you click it, you can choose a file and
then the current date/time of this file will be copied to the
date/time fields of the 'Change file time / attributes' window.
* Version 1.50:
o Added /ChangeTimeAttr command-line option which automactially
scans the specified folder and its subfolders and modifies the
date/time/attributes according to the .cfg file, without displaying
any user interface.
o Added /LogFile and /LogFileAppend command-line options which
write all date/time changes and errors into a log file (For using
with /ChangeTimeAttr )
o Added /cfg command-line option for loading another configuration
file instead of the default one.
o Updated the 'Attributes' column to display the following
Attributes: 'I' for 'Not Content Indexed', 'E' for encrypted file,
'X' for 'No Scrub File', and 'V' for 'Integrity Attribute'.
* Version 1.40:
o 'Change Time / Attributes' window: The date/times values are now
stored in the .cfg file.
o 'Change Time / Attributes' window: Added 'Save Settings' button,
for saving the current settings without changing any file.
o You can now drag a file from Windows Explorer into the 'Change
Time / Attributes' window and the created/modified/accessed times of
this file will be copied to the appropriate date/time settings.
* Version 1.35:
o Added 'Run As Administrator' option (Ctrl+F11), which allows you
to easily run BulkFileChanger as administrator on Windows
Vista/7/8/2008.
o BulkFileChanger now can read the EXIF data of CR2 raw files.
* Version 1.33:
o Fixed bug from v1.32: BulkFileChanger stopped working on Windows
2000.
* Version 1.32:
o Fixed BulkFileChanger to display and handle daylight saving time
properly, like Explorer on Windows 7.
* Version 1.31:
o BulkFileChanger now displays file dates prior to 01/01/1980. In
previous versions, BulkFileChanger didn't display these dates in
order to be compatible with Windows Explorer...
* Version 1.30:
o BulkFileChanger now displays an error message if it fails to
change the date/time/attributes of one or more files.
o Added 'Modified-Created Time Difference' column, which displays
the time difference (in hours:minutes:seconds.milliseconds format)
between the created time and the modified time of the file. This time
difference might be interesting in some circumstances. For example:
If you download a new file from the Internet, the file is created at
the moment you start to download it, and its modified time is set to
the time that the last byte was written to the file. This means that
the created/modified time difference represents the duration of
downloading process.
* Version 1.25:
o You can now specify environment variables (For example:
%appdata%) in the folder path to scan ('Add By Wildcard' option).
* Version 1.24:
o Fixed bug: If you added files, and then removed them from the
list, BulkFileChanger failed to add them again.
* Version 1.23:
o Fixed issue: BulkFileChanger failed to copy EXIF properties from
.jpg image to the created/modified/accessed time of the file, On
Windows 7 and Windows 8. The problem is actually in the GDI+ library
of Windows which from unknown reason fails to read these EXIF
properties. So BulkFileChanger now reads the EXIF data directly
instead of using the GDI+ library of Windows.
* Version 1.22:
o Fixed issue: The properties dialog-box and other windows opened
in the wrong monitor, on multi-monitors system.
o Added 'Auto Size Columns+Headers' option, which allows you to
automatically resize the columns according to the row values and
column headers.
o Added 64-bit build.
* Version 1.21:
o Fixed bug: BulkFileChanger failed to display the size and
date/time information for a filename that begins with dot character.
* Version 1.20:
o Added 3 new options into 'Copy Time From': EXIF - Generated Time,
EXIF - Stored Time, and EXIF - Modified Time. You can use these
options to copy the date/time stored inside EXIF data of digital
camera picture into the created/modified time of the file.
* Version 1.15:
o Added 'Date/time sequence mode' option. When it's turned on,
BulkFileChanger will set a different date/time value for every file,
and the 'Add' field will be used to add additional time interval for
every file.
For example, if you set the modified date/time to '07/07/2011
10:12:15' and the add value is set to 1 second, the modified time of
the first file will be set the '07/07/2011 10:12:15', the second file
will be set to '07/07/2011 10:12:16', the third file will be set to
'07/07/2011 10:12:17', and so on...
The order of the files is determined according to the column you
click. So, if for example, you click the filename column and then use
the 'Date/time sequence mode', the date/time values will be set
according to the filename alphabetical order.
* Version 1.10:
o Added the option to copy from one date/time value to another.
(For example, you can copy the modified time into the created time or
the created time into the modified time and accessed time)
* Version 1.05:
o BulkFileChanger now also allows you to change the date/time of a
folder. You can add a folder by dragging it from Explorer or by
adding it with 'Add By Wildcard' feature and 'Add Folders' option
turned on.
o Added 'File Extension' column.
o Added 'Mark Odd/Even Rows' option, under the View menu. When it's
turned on, the odd and even rows are displayed in different color, to
make it easier to read a single line.
* Version 1.02:
o Added support for temporary file attribute.
* Version 1.01:
o Fixed bug: When the find dialog-box was in focus, pressing the
delete key removed the file from the main window.
* Version 1.00: First release.
Using BulkFileChanger
=====================
BulkFileChanger doesn't require any installation process or additional
dll files. In order to start using it, simply run the executable file -
BulkFileChanger.exe
After running BulkFileChanger, you can add files into the list by using
one of the following methods:
* Copy and Paste: Simply copy files from Explorer window (Ctrl+C) and
then paste them into BulkFileChanger (Ctrl+V). You can also copy files
from other utilities of NirSoft, like SearchMyFiles and HashMyFiles.
* Drag From Explorer: You can add files by dragging them from Explorer
window into the main window of BulkFileChanger.
* 'Add Files' option (F2):Add files from 'open file' dialog-box.
* 'Add By Wildcard' option (F3):Add multiple files by specifying
wildcard, path, and subfolder depth to scan. (For Example:
c:\temp\*.txt)
You can also remove files from the list by using 'Remove Selected Files'
option (Del key) or clear the entire files list by using 'Clear Files
List' (Ctrl+L)
After you added the desired files, you can select some of them or all of
them (Ctrl+A) and then use one of the following options:
* Change Time / Attributes (F6): Allows you to modify the
modified/created/accessed time of the selected files. You set them to
specific time/date values or you can add/subtract
days/hours/minutes/seconds from the existing file time. You can also
modify the attributes of the files, like Read-Only, Hidden, and so on.
* Execute Command On Selected Files (F7): Allows you to run any
executable with the selected files as command-line parameter. For
example: if you specify 'c:\temp\MyProgram.exe "%1"' in the execute
command string, BulkFileChanger will run MyProgram.exe for every file
in the list, and the "%1" will be replaced with the full path filename.
* Explorer Copy/Cut: You can use the copy or cut option to copy/move
the selected files into another folder window of Explorer.
* Export Selected Items: You can export the files list into
html/text/html/csv file.
Command-Line Options
====================
/cfg <Filename>
Start BulkFileChanger with the specified configuration file. For example:
BulkFileChanger.exe /cfg "c:\config\bfc.cfg"
/ChangeTimeAttr <Folder> <Wildcard> <Subfolders Depth> <File/Folder Mode>
This command-line option allows you to scan a folder and its subfolders,
and change the date/time/attributes of all files without displaying any
user interface. The change is made according to the last settings stored
in the .cfg file. You can choose to load another .cfg file (Instead of
default) by using the /cfg command-line option.
<Folder> - Specifies the base folder to scan.
<Wildcard> - Specifies the wildcard to determine which files to change.
For example, if you want to only modify the date/time of .exe file,
specify "*.exe". If you want to change all files - simply specify "*".
<Subfolders Depth> - Specifies the depth of subfolders to scan. If you
specify 0, BulkFileChanger will not scan the subfolders.
<File/Folder Mode> - Specifies whether to change the date/time/attributes
of files, folders or both:
0 = Both Files and folders
1 = Files only
2 = Folders only
Here's a few examples:
BulkFileChanger.exe /ChangeTimeAttr "C:\Temp\MyFiles" "*" 5 0
BulkFileChanger.exe /ChangeTimeAttr "C:\Temp\MyFiles" "a*.csv" 0 1
BulkFileChanger.exe /cfg "c:\temp\bfc12.cfg" /ChangeTimeAttr "C:\Temp"
"*" 10 0
BulkFileChanger.exe /LogFile "c:\temp\log1.txt" /ChangeTimeAttr
"C:\MyFiles" "*" 2 0
Warning !!
This command-line option is very powerful, so you should use it
carefully. It's recommended to test it with a single small folder to
check that it works as expcted before running it on a full drive...
/LogFile <Filename>
Specifies a log file to write all actions and errors while running the
/ChangeTimeAttr command.
/LogFileAppend <Filename>
Similar to /LogFile, but if the file already exists, the new log lines
are added to the existing file.
Translating BulkFileChanger to other languages
==============================================
In order to translate BulkFileChanger to other language, follow the
instructions below:
1. Run BulkFileChanger with /savelangfile parameter:
BulkFileChanger.exe /savelangfile
A file named BulkFileChanger_lng.ini will be created in the folder of
BulkFileChanger utility.
2. Open the created language file in Notepad or in any other text
editor.
3. Translate all string entries to the desired language. Optionally,
you can also add your name and/or a link to your Web site.
(TranslatorName and TranslatorURL values) If you add this information,
it'll be used in the 'About' window.
4. After you finish the translation, Run BulkFileChanger, and all
translated strings will be loaded from the language file.
If you want to run BulkFileChanger without the translation, simply
rename the language file, or move it to another folder.
License
=======
This utility is released as freeware. You are allowed to freely
distribute this utility via floppy disk, CD-ROM, Internet, or in any
other way, as long as you don't charge anything for this. If you
distribute this utility, you must include all files in the distribution
package, without any modification !
Disclaimer
==========
The software is provided "AS IS" without any warranty, either expressed
or implied, including, but not limited to, the implied warranties of
merchantability and fitness for a particular purpose. The author will not
be liable for any special, incidental, consequential or indirect damages
due to loss of data or any other reason.
Feedback
========
If you have any problem, suggestion, comment, or you found a bug in my
utility, you can send a message to nirsofer@yahoo.com

View File

@ -0,0 +1,704 @@
<?xml version="1.0" encoding="utf-8"?>
<key name="Software">
<key name="ConEmu">
<key name=".Vanilla" modified="2018-12-31 12:28:23" build="180528">
<value name="Language" type="string" data="en"/>
<value name="StartType" type="hex" data="02"/>
<value name="CmdLine" type="string" data=""/>
<value name="StartTasksFile" type="string" data=""/>
<value name="StartTasksName" type="string" data="{cmd::Cmder}"/>
<value name="StartFarFolders" type="hex" data="00"/>
<value name="StartFarEditors" type="hex" data="00"/>
<value name="StartCreateDelay" type="ulong" data="100"/>
<value name="ColorTable00" type="dword" data="00222827"/>
<value name="ColorTable01" type="dword" data="009e5401"/>
<value name="ColorTable02" type="dword" data="0004aa74"/>
<value name="ColorTable03" type="dword" data="00a6831a"/>
<value name="ColorTable04" type="dword" data="003403a7"/>
<value name="ColorTable05" type="dword" data="009c5689"/>
<value name="ColorTable06" type="dword" data="0049b6b6"/>
<value name="ColorTable07" type="dword" data="00cacaca"/>
<value name="ColorTable08" type="dword" data="007c7c7c"/>
<value name="ColorTable09" type="dword" data="00f58303"/>
<value name="ColorTable10" type="dword" data="0006d08d"/>
<value name="ColorTable11" type="dword" data="00e5c258"/>
<value name="ColorTable12" type="dword" data="004b04f3"/>
<value name="ColorTable13" type="dword" data="00b87da8"/>
<value name="ColorTable14" type="dword" data="0081cccc"/>
<value name="ColorTable15" type="dword" data="00ffffff"/>
<value name="TextColorIdx" type="hex" data="10"/>
<value name="BackColorIdx" type="hex" data="10"/>
<value name="PopTextColorIdx" type="hex" data="10"/>
<value name="PopBackColorIdx" type="hex" data="10"/>
<value name="ExtendFonts" type="hex" data="00"/>
<value name="ExtendFontNormalIdx" type="hex" data="01"/>
<value name="ExtendFontBoldIdx" type="hex" data="0C"/>
<value name="ExtendFontItalicIdx" type="hex" data="0D"/>
<value name="CursorTypeActive" type="dword" data="000232c1"/>
<value name="CursorTypeInactive" type="dword" data="00823282"/>
<value name="ClipboardDetectLineEnd" type="hex" data="01"/>
<value name="ClipboardBashMargin" type="hex" data="00"/>
<value name="ClipboardTrimTrailing" type="hex" data="02"/>
<value name="ClipboardEOL" type="hex" data="00"/>
<value name="ClipboardArrowStart" type="hex" data="00"/>
<value name="ClipboardAllLines" type="hex" data="01"/>
<value name="ClipboardAllLinesPosix" type="hex" data="00"/>
<value name="ClipboardFirstLine" type="hex" data="01"/>
<value name="ClipboardFirstLinePosix" type="hex" data="00"/>
<value name="ClipboardClickPromptPosition" type="hex" data="00"/>
<value name="ClipboardDeleteLeftWord" type="hex" data="01"/>
<value name="TrueColorerSupport" type="hex" data="01"/>
<value name="VividColors" type="hex" data="01"/>
<value name="FadeInactive" type="hex" data="01"/>
<value name="FadeInactiveLow" type="hex" data="00"/>
<value name="FadeInactiveHigh" type="hex" data="C8"/>
<value name="ConVisible" type="hex" data="00"/>
<value name="UseInjects" type="hex" data="01"/>
<value name="SetDefaultTerminal" type="hex" data="00"/>
<value name="SetDefaultTerminalStartup" type="hex" data="00"/>
<value name="SetDefaultTerminalStartupTSA" type="hex" data="01"/>
<value name="DefaultTerminalAgressive" type="hex" data="01"/>
<value name="DefaultTerminalNoInjects" type="hex" data="00"/>
<value name="DefaultTerminalNewWindow" type="hex" data="00"/>
<value name="DefaultTerminalDebugLog" type="hex" data="00"/>
<value name="DefaultTerminalConfirm" type="hex" data="01"/>
<value name="DefaultTerminalApps" type="string" data="explorer.exe"/>
<value name="ProcessAnsi" type="hex" data="01"/>
<value name="AnsiExecution" type="hex" data="01"/>
<value name="AnsiAllowedCommands" type="multi">
<line data="cmd -cur_console:R /cGitShowBranch.cmd"/>
</value>
<value name="AnsiLog" type="hex" data="00"/>
<value name="AnsiLogPath" type="string" data="%ConEmuDir%\Logs\"/>
<value name="KillSshAgent" type="hex" data="01"/>
<value name="ProcessNewConArg" type="hex" data="01"/>
<value name="ProcessCmdStart" type="hex" data="01"/>
<value name="ProcessCtrlZ" type="hex" data="00"/>
<value name="SuppressBells" type="hex" data="01"/>
<value name="ConsoleExceptionHandler" type="hex" data="00"/>
<value name="UseClink" type="hex" data="01"/>
<value name="StoreTaskbarkTasks" type="hex" data="00"/>
<value name="StoreTaskbarCommands" type="hex" data="00"/>
<value name="JumpListAutoUpdate" type="hex" data="01"/>
<value name="SaveCmdHistory" type="hex" data="00"/>
<value name="SingleInstance" type="hex" data="00"/>
<value name="ShowHelpTooltips" type="hex" data="01"/>
<value name="Multi" type="hex" data="01"/>
<value name="Multi.ShowButtons" type="hex" data="00"/>
<value name="Multi.ShowSearch" type="hex" data="00"/>
<value name="Multi.NumberInCaption" type="hex" data="00"/>
<value name="Multi.CloseConfirmFlags" type="hex" data="04"/>
<value name="Multi.NewConfirm" type="hex" data="01"/>
<value name="Multi.DupConfirm" type="hex" data="01"/>
<value name="Multi.DetachConfirm" type="hex" data="01"/>
<value name="Multi.UseArrows" type="hex" data="00"/>
<value name="Multi.UseNumbers" type="hex" data="01"/>
<value name="Multi.UseWinTab" type="hex" data="00"/>
<value name="Multi.AutoCreate" type="hex" data="00"/>
<value name="Multi.LeaveOnClose" type="hex" data="00"/>
<value name="Multi.HideOnClose" type="hex" data="00"/>
<value name="Multi.MinByEsc" type="hex" data="02"/>
<value name="MapShiftEscToEsc" type="hex" data="01"/>
<value name="Multi.Iterate" type="hex" data="01"/>
<value name="Multi.SplitWidth" type="hex" data="04"/>
<value name="Multi.SplitHeight" type="hex" data="04"/>
<value name="KeyboardHooks" type="hex" data="02"/>
<value name="FontName" type="string" data="Consolas"/>
<value name="FontName2" type="string" data="Lucida Console"/>
<value name="FontAutoSize" type="hex" data="00"/>
<value name="FontSize" type="ulong" data="24"/>
<value name="FontSizeX" type="ulong" data="0"/>
<value name="FontUseDpi" type="hex" data="01"/>
<value name="FontUseUnits" type="hex" data="00"/>
<value name="FontSizeX2" type="ulong" data="0"/>
<value name="FontSizeX3" type="ulong" data="0"/>
<value name="FontCharSet" type="hex" data="00"/>
<value name="Anti-aliasing" type="ulong" data="6"/>
<value name="FontBold" type="hex" data="00"/>
<value name="FontItalic" type="hex" data="00"/>
<value name="Monospace" type="hex" data="01"/>
<value name="CompressLongStrings" type="hex" data="01"/>
<value name="BackGround Image show" type="hex" data="00"/>
<value name="BackGround Image" type="string" data="c:\back.bmp"/>
<value name="bgImageDarker" type="hex" data="FF"/>
<value name="bgImageColors" type="dword" data="ffffffff"/>
<value name="bgOperation" type="hex" data="00"/>
<value name="bgPluginAllowed" type="hex" data="01"/>
<value name="AlphaValue" type="hex" data="E2"/>
<value name="AlphaValueSeparate" type="hex" data="01"/>
<value name="AlphaValueInactive" type="hex" data="BB"/>
<value name="UserScreenTransparent" type="hex" data="00"/>
<value name="ColorKeyTransparent" type="hex" data="00"/>
<value name="ColorKeyValue" type="dword" data="00010101"/>
<value name="UseCurrentSizePos" type="hex" data="01"/>
<value name="AutoSaveSizePos" type="hex" data="01"/>
<value name="Cascaded" type="hex" data="01"/>
<value name="IntegralSize" type="hex" data="00"/>
<value name="WindowMode" type="dword" data="0000051f"/>
<value name="ConWnd X" type="long" data="331"/>
<value name="ConWnd Y" type="long" data="256"/>
<value name="LastMonitor" type="string" data="0,0,1920,1040"/>
<value name="ConWnd Width" type="dword" data="00000074"/>
<value name="ConWnd Height" type="dword" data="0000001a"/>
<value name="16bit Height" type="ulong" data="0"/>
<value name="QuakeStyle" type="hex" data="00"/>
<value name="Restore2ActiveMon" type="hex" data="00"/>
<value name="RestoreInactive" type="hex" data="00"/>
<value name="QuakeAnimation" type="ulong" data="300"/>
<value name="HideCaption" type="hex" data="00"/>
<value name="HideChildCaption" type="hex" data="01"/>
<value name="FocusInChildWindows" type="hex" data="01"/>
<value name="HideCaptionAlways" type="hex" data="00"/>
<value name="HideCaptionAlwaysFrame" type="hex" data="00"/>
<value name="HideCaptionAlwaysDelay" type="ulong" data="2000"/>
<value name="HideCaptionAlwaysDisappear" type="ulong" data="2000"/>
<value name="DownShowHiddenMessage" type="hex" data="00"/>
<value name="DownShowExOnTopMessage" type="hex" data="00"/>
<value name="ConsoleFontName" type="string" data="Lucida Console"/>
<value name="ConsoleFontWidth" type="long" data="3"/>
<value name="ConsoleFontHeight" type="long" data="5"/>
<value name="DynamicBufferHeight" type="hex" data="01"/>
<value name="DefaultBufferHeight" type="long" data="1000"/>
<value name="AutoBufferHeight" type="hex" data="01"/>
<value name="UseScrollLock" type="hex" data="01"/>
<value name="ComSpec.Type" type="hex" data="00"/>
<value name="ComSpec.Bits" type="hex" data="00"/>
<value name="ComSpec.UpdateEnv" type="hex" data="00"/>
<value name="ComSpec.EnvAddPath" type="hex" data="01"/>
<value name="ComSpec.EnvAddExePath" type="hex" data="01"/>
<value name="ComSpec.UncPaths" type="hex" data="01"/>
<value name="ComSpec.Path" type="string" data=""/>
<value name="EnvironmentSet" type="multi">
<line data="set PATH=%ConEmuBaseDir%\Scripts;%PATH%"/>
<line data="set FC_CONFIG_DIR=.\fonts"/>
<line data="set FONTCONFIG_FILE=fonts.conf"/>
<line data="set FONTCONFIG_PATH=.\fonts"/>
</value>
<value name="CTS.Intelligent" type="hex" data="01"/>
<value name="CTS.IntelligentExceptions" type="string" data="far|vim.exe"/>
<value name="CTS.AutoCopy" type="hex" data="01"/>
<value name="CTS.ResetOnRelease" type="hex" data="00"/>
<value name="CTS.IBeam" type="hex" data="01"/>
<value name="CTS.EndOnTyping" type="hex" data="00"/>
<value name="CTS.EndOnKeyPress" type="hex" data="00"/>
<value name="CTS.EraseBeforeReset" type="hex" data="01"/>
<value name="CTS.Freeze" type="hex" data="00"/>
<value name="CTS.SelectBlock" type="hex" data="01"/>
<value name="CTS.SelectText" type="hex" data="01"/>
<value name="CTS.HtmlFormat" type="hex" data="00"/>
<value name="CTS.ForceLocale" type="dword" data="00000000"/>
<value name="CTS.RBtnAction" type="hex" data="03"/>
<value name="CTS.MBtnAction" type="hex" data="00"/>
<value name="CTS.ColorIndex" type="hex" data="E0"/>
<value name="ClipboardConfirmEnter" type="hex" data="01"/>
<value name="ClipboardConfirmLonger" type="ulong" data="200"/>
<value name="FarGotoEditorOpt" type="hex" data="01"/>
<value name="FarGotoEditorPath" type="string" data='far.exe /e%1:%2 "%3"'/>
<value name="HighlightMouseRow" type="hex" data="00"/>
<value name="HighlightMouseCol" type="hex" data="00"/>
<value name="FixFarBorders" type="hex" data="01"/>
<value name="Anti-aliasing2" type="hex" data="00"/>
<value name="FixFarBordersRanges" type="string" data="2013-25C4;"/>
<value name="ExtendUCharMap" type="hex" data="01"/>
<value name="EnhanceGraphics" type="hex" data="01"/>
<value name="EnhanceButtons" type="hex" data="00"/>
<value name="PartBrush75" type="hex" data="C8"/>
<value name="PartBrush50" type="hex" data="96"/>
<value name="PartBrush25" type="hex" data="5A"/>
<value name="PartBrushBlack" type="hex" data="20"/>
<value name="RightClick opens context menu" type="hex" data="02"/>
<value name="RightClickMacro2" type="string" data=""/>
<value name="SendAltTab" type="hex" data="00"/>
<value name="SendAltEsc" type="hex" data="00"/>
<value name="SendAltPrintScrn" type="hex" data="00"/>
<value name="SendPrintScrn" type="hex" data="00"/>
<value name="SendCtrlEsc" type="hex" data="00"/>
<value name="Min2Tray" type="hex" data="00"/>
<value name="AlwaysShowTrayIcon" type="hex" data="00"/>
<value name="SafeFarClose" type="hex" data="01"/>
<value name="SafeFarCloseMacro" type="string" data=""/>
<value name="FARuseASCIIsort" type="hex" data="00"/>
<value name="ShellNoZoneCheck" type="hex" data="00"/>
<value name="FixAltOnAltTab" type="hex" data="00"/>
<value name="UseAltGrayPlus" type="hex" data="01"/>
<value name="DisableMouse" type="hex" data="01"/>
<value name="RSelectionFix" type="hex" data="01"/>
<value name="MouseSkipActivation" type="hex" data="01"/>
<value name="MouseSkipMoving" type="hex" data="01"/>
<value name="MouseDragWindow" type="hex" data="01"/>
<value name="FarHourglass" type="hex" data="01"/>
<value name="FarHourglassDelay" type="ulong" data="500"/>
<value name="Dnd" type="hex" data="01"/>
<value name="DndDrop" type="hex" data="01"/>
<value name="DefCopy" type="hex" data="01"/>
<value name="DropUseMenu" type="hex" data="02"/>
<value name="DragOverlay" type="hex" data="01"/>
<value name="DragShowIcons" type="hex" data="01"/>
<value name="DebugSteps" type="hex" data="01"/>
<value name="DebugLog" type="hex" data="00"/>
<value name="DragPanel" type="hex" data="02"/>
<value name="DragPanelBothEdges" type="hex" data="00"/>
<value name="KeyBarRClick" type="hex" data="01"/>
<value name="StatusBar.Show" type="hex" data="00"/>
<value name="StatusBar.Flags" type="dword" data="00000002"/>
<value name="StatusFontFace" type="string" data="Tahoma"/>
<value name="StatusFontCharSet" type="ulong" data="0"/>
<value name="StatusFontHeight" type="long" data="14"/>
<value name="StatusBar.Color.Back" type="dword" data="00404040"/>
<value name="StatusBar.Color.Light" type="dword" data="00ffffff"/>
<value name="StatusBar.Color.Dark" type="dword" data="00a0a0a0"/>
<value name="StatusBar.Hide.VCon" type="hex" data="00"/>
<value name="StatusBar.Hide.CapsL" type="hex" data="00"/>
<value name="StatusBar.Hide.NumL" type="hex" data="00"/>
<value name="StatusBar.Hide.ScrL" type="hex" data="00"/>
<value name="StatusBar.Hide.VisL" type="hex" data="01"/>
<value name="StatusBar.Hide.Lang" type="hex" data="01"/>
<value name="StatusBar.Hide.KeyHooks" type="hex" data="01"/>
<value name="StatusBar.Hide.TMode" type="hex" data="01"/>
<value name="StatusBar.Hide.RMode" type="hex" data="01"/>
<value name="StatusBar.Hide.WPos" type="hex" data="01"/>
<value name="StatusBar.Hide.WSize" type="hex" data="01"/>
<value name="StatusBar.Hide.WClient" type="hex" data="01"/>
<value name="StatusBar.Hide.WWork" type="hex" data="01"/>
<value name="StatusBar.Hide.WVBack" type="hex" data="01"/>
<value name="StatusBar.Hide.WVDC" type="hex" data="01"/>
<value name="StatusBar.Hide.WMode" type="hex" data="01"/>
<value name="StatusBar.Hide.Style" type="hex" data="01"/>
<value name="StatusBar.Hide.StyleEx" type="hex" data="01"/>
<value name="StatusBar.Hide.hFore" type="hex" data="01"/>
<value name="StatusBar.Hide.hFocus" type="hex" data="01"/>
<value name="StatusBar.Hide.Zoom" type="hex" data="01"/>
<value name="StatusBar.Hide.Dpi" type="hex" data="01"/>
<value name="StatusBar.Hide.ABuf" type="hex" data="00"/>
<value name="StatusBar.Hide.CPos" type="hex" data="00"/>
<value name="StatusBar.Hide.CSize" type="hex" data="00"/>
<value name="StatusBar.Hide.BSize" type="hex" data="00"/>
<value name="StatusBar.Hide.CurX" type="hex" data="00"/>
<value name="StatusBar.Hide.CurY" type="hex" data="00"/>
<value name="StatusBar.Hide.CurS" type="hex" data="00"/>
<value name="StatusBar.Hide.CurI" type="hex" data="01"/>
<value name="StatusBar.Hide.CellI" type="hex" data="01"/>
<value name="StatusBar.Hide.ConEmuPID" type="hex" data="01"/>
<value name="StatusBar.Hide.ConEmuHWND" type="hex" data="01"/>
<value name="StatusBar.Hide.ConEmuView" type="hex" data="01"/>
<value name="StatusBar.Hide.Srv" type="hex" data="00"/>
<value name="StatusBar.Hide.SrvHWND" type="hex" data="01"/>
<value name="StatusBar.Hide.Transparency" type="hex" data="00"/>
<value name="StatusBar.Hide.New" type="hex" data="00"/>
<value name="StatusBar.Hide.Sync" type="hex" data="00"/>
<value name="StatusBar.Hide.Proc" type="hex" data="00"/>
<value name="StatusBar.Hide.Title" type="hex" data="01"/>
<value name="StatusBar.Hide.Time" type="hex" data="01"/>
<value name="StatusBar.Hide.Resize" type="hex" data="00"/>
<value name="Tabs" type="hex" data="01"/>
<value name="TabsLocation" type="hex" data="00"/>
<value name="TabIcons" type="hex" data="01"/>
<value name="OneTabPerGroup" type="hex" data="00"/>
<value name="ActivateSplitMouseOver" type="hex" data="01"/>
<value name="TabSelf" type="hex" data="01"/>
<value name="TabLazy" type="hex" data="01"/>
<value name="TabFlashChanged" type="long" data="8"/>
<value name="TabRecent" type="hex" data="00"/>
<value name="TabDblClick" type="ulong" data="1"/>
<value name="TabBtnDblClick" type="ulong" data="0"/>
<value name="TabsOnTaskBar" type="hex" data="02"/>
<value name="TaskBarOverlay" type="hex" data="01"/>
<value name="TaskbarProgress" type="hex" data="01"/>
<value name="TabCloseMacro" type="string" data=""/>
<value name="TabFontFace" type="string" data="Segoe UI"/>
<value name="TabFontCharSet" type="ulong" data="0"/>
<value name="TabFontHeight" type="long" data="16"/>
<value name="SaveAllEditors" type="string" data=""/>
<value name="ToolbarAddSpace" type="long" data="0"/>
<value name="TabConsole" type="string" data=" %n "/>
<value name="TabModifiedSuffix" type="string" data="[*]"/>
<value name="TabSkipWords" type="string" data="Administrator:|Администратор:"/>
<value name="TabPanels" type="string" data="&lt;%c&gt; %s"/>
<value name="TabEditor" type="string" data="&lt;%c.%i&gt;{%s}"/>
<value name="TabEditorModified" type="string" data="&lt;%c.%i&gt;[%s] *"/>
<value name="TabViewer" type="string" data="&lt;%c.%i&gt;[%s]"/>
<value name="TabLenMax" type="ulong" data="20"/>
<value name="AdminTitleSuffix" type="string" data=" (Admin)"/>
<value name="AdminShowShield" type="hex" data="01"/>
<value name="HideInactiveConsoleTabs" type="hex" data="00"/>
<value name="ShowFarWindows" type="hex" data="01"/>
<value name="TryToCenter" type="hex" data="01"/>
<value name="CenterConsolePad" type="ulong" data="8"/>
<value name="ShowScrollbar" type="hex" data="02"/>
<value name="ScrollBarAppearDelay" type="ulong" data="100"/>
<value name="ScrollBarDisappearDelay" type="ulong" data="1000"/>
<value name="IconID" type="ulong" data="1"/>
<value name="MainTimerElapse" type="ulong" data="10"/>
<value name="MainTimerInactiveElapse" type="ulong" data="1000"/>
<value name="AffinityMask" type="dword" data="00000000"/>
<value name="SkipFocusEvents" type="hex" data="00"/>
<value name="MonitorConsoleLang" type="hex" data="03"/>
<value name="SnapToDesktopEdges" type="hex" data="00"/>
<value name="AlwaysOnTop" type="hex" data="00"/>
<value name="SleepInBackground" type="hex" data="01"/>
<value name="RetardInactivePanes" type="hex" data="00"/>
<value name="MinimizeOnLoseFocus" type="hex" data="00"/>
<value name="DisableFarFlashing" type="hex" data="00"/>
<value name="DisableAllFlashing" type="hex" data="00"/>
<value name="FindText" type="string" data=""/>
<value name="FindMatchCase" type="hex" data="00"/>
<value name="FindMatchWholeWords" type="hex" data="00"/>
<value name="FindTransparent" type="hex" data="01"/>
<value name="PanView.BackColor" type="dword" data="30ffffff"/>
<value name="PanView.PFrame" type="long" data="1"/>
<value name="PanView.PFrameColor" type="dword" data="28808080"/>
<value name="PanView.SFrame" type="long" data="1"/>
<value name="PanView.SFrameColor" type="dword" data="07c0c0c0"/>
<value name="PanView.Thumbs.ImgSize" type="long" data="96"/>
<value name="PanView.Thumbs.SpaceX1" type="long" data="1"/>
<value name="PanView.Thumbs.SpaceY1" type="long" data="1"/>
<value name="PanView.Thumbs.SpaceX2" type="long" data="5"/>
<value name="PanView.Thumbs.SpaceY2" type="long" data="20"/>
<value name="PanView.Thumbs.LabelSpacing" type="long" data="2"/>
<value name="PanView.Thumbs.LabelPadding" type="long" data="0"/>
<value name="PanView.Thumbs.FontName" type="string" data="Tahoma"/>
<value name="PanView.Thumbs.FontHeight" type="long" data="14"/>
<value name="PanView.Tiles.ImgSize" type="long" data="48"/>
<value name="PanView.Tiles.SpaceX1" type="long" data="4"/>
<value name="PanView.Tiles.SpaceY1" type="long" data="4"/>
<value name="PanView.Tiles.SpaceX2" type="long" data="172"/>
<value name="PanView.Tiles.SpaceY2" type="long" data="4"/>
<value name="PanView.Tiles.LabelSpacing" type="long" data="4"/>
<value name="PanView.Tiles.LabelPadding" type="long" data="1"/>
<value name="PanView.Tiles.FontName" type="string" data="Tahoma"/>
<value name="PanView.Tiles.FontHeight" type="long" data="14"/>
<value name="PanView.LoadPreviews" type="hex" data="03"/>
<value name="PanView.LoadFolders" type="hex" data="01"/>
<value name="PanView.LoadTimeout" type="ulong" data="15"/>
<value name="PanView.MaxZoom" type="ulong" data="600"/>
<value name="PanView.UsePicView2" type="hex" data="01"/>
<value name="PanView.RestoreOnStartup" type="hex" data="00"/>
<value name="Update.VerLocation" type="string" data=""/>
<value name="Update.CheckOnStartup" type="hex" data="01"/>
<value name="Update.CheckHourly" type="hex" data="00"/>
<value name="Update.ConfirmDownload" type="hex" data="01"/>
<value name="Update.UseBuilds" type="hex" data="01"/>
<value name="Update.InetTool" type="hex" data="00"/>
<value name="Update.InetToolCmd" type="string" data=""/>
<value name="Update.UseProxy" type="hex" data="00"/>
<value name="Update.Proxy" type="string" data=""/>
<value name="Update.ProxyUser" type="string" data=""/>
<value name="Update.ProxyPassword" type="string" data=""/>
<value name="Update.ExeCmdLine" type="string" data=""/>
<value name="Update.ArcCmdLine" type="string" data=""/>
<value name="Update.DownloadPath" type="string" data="%TEMP%\ConEmu"/>
<value name="Update.LeavePackages" type="hex" data="00"/>
<value name="Update.PostUpdateCmd" type="string" data="echo Last successful update&gt;ConEmuUpdate.info &amp;&amp; date /t&gt;&gt;ConEmuUpdate.info &amp;&amp; time /t&gt;&gt;ConEmuUpdate.info"/>
<key name="HotKeys" modified="2018-12-31 12:28:23" build="180528">
<value name="KeyMacroVersion" type="hex" data="02"/>
<value name="Multi.Modifier" type="dword" data="00000011"/>
<value name="Multi.ArrowsModifier" type="dword" data="0000005b"/>
<value name="MinimizeRestore" type="dword" data="000011c0"/>
<value name="MinimizeRestore2" type="dword" data="00000000"/>
<value name="GlobalRestore" type="dword" data="00000000"/>
<value name="CdExplorerPath" type="dword" data="00000000"/>
<value name="ForcedFullScreen" type="dword" data="12115b0d"/>
<value name="SwitchGuiFocus" type="dword" data="00000000"/>
<value name="SetFocusGui" type="dword" data="00000000"/>
<value name="SetFocusChild" type="dword" data="00000000"/>
<value name="ChildSystemMenu" type="dword" data="000011ff"/>
<value name="CheckUpdates" type="dword" data="00105b55"/>
<value name="Multi.NewConsole" type="dword" data="00000000"/>
<value name="Multi.NewConsoleShift" type="dword" data="00001154"/>
<value name="Multi.CmdKey" type="dword" data="00000000"/>
<value name="Multi.NewWndConfirm" type="dword" data="00000000"/>
<value name="Multi.NewConsolePopup" type="dword" data="00000000"/>
<value name="Multi.NewConsolePopup2" type="dword" data="00000000"/>
<value name="Multi.NewAttach" type="dword" data="00000000"/>
<value name="Multi.NewSplitV" type="dword" data="00000000"/>
<value name="Multi.NewSplitH" type="dword" data="00000000"/>
<value name="Multi.SplitMaximize" type="dword" data="00005d0d"/>
<value name="Multi.SplitSizeVU" type="dword" data="00105d26"/>
<value name="Multi.SplitSizeVD" type="dword" data="00105d28"/>
<value name="Multi.SplitSizeHL" type="dword" data="00105d25"/>
<value name="Multi.SplitSizeHR" type="dword" data="00105d27"/>
<value name="Key.TabPane1" type="dword" data="00000000"/>
<value name="Key.TabPane2" type="dword" data="00000000"/>
<value name="Multi.SplitFocusU" type="dword" data="00005d26"/>
<value name="Multi.SplitFocusD" type="dword" data="00005d28"/>
<value name="Multi.SplitFocusL" type="dword" data="00005d25"/>
<value name="Multi.SplitFocusR" type="dword" data="00005d27"/>
<value name="Multi.SplitSwap" type="dword" data="00125d58"/>
<value name="Multi.SplitSwapU" type="dword" data="00125d26"/>
<value name="Multi.SplitSwapD" type="dword" data="00125d28"/>
<value name="Multi.SplitSwapL" type="dword" data="00125d25"/>
<value name="Multi.SplitSwapR" type="dword" data="00125d27"/>
<value name="Multi.Next" type="dword" data="00000000"/>
<value name="Multi.NextShift" type="dword" data="00000000"/>
<value name="Multi.Recreate" type="dword" data="00000000"/>
<value name="Multi.AltCon" type="dword" data="00000000"/>
<value name="Multi.Pause" type="dword" data="80808013"/>
<value name="Multi.Scroll" type="dword" data="00000000"/>
<value name="Multi.GroupInput" type="dword" data="00005d47"/>
<value name="Multi.GroupInputAll" type="dword" data="00105d47"/>
<value name="Multi.GroupInputKey" type="dword" data="00125d47"/>
<value name="Multi.Detach" type="dword" data="00000000"/>
<value name="Multi.Unfasten" type="dword" data="00000000"/>
<value name="Multi.Close" type="dword" data="00001157"/>
<value name="CloseTabKey" type="dword" data="00000000"/>
<value name="CloseGroupKey" type="dword" data="00000000"/>
<value name="CloseGroupPrcKey" type="dword" data="00000000"/>
<value name="CloseAllConKey" type="dword" data="00000000"/>
<value name="CloseZombiesKey" type="dword" data="00000000"/>
<value name="CloseExceptConKey" type="dword" data="00000000"/>
<value name="CloseToRightKey" type="dword" data="00000000"/>
<value name="KillProcessKey" type="dword" data="00000000"/>
<value name="KillAllButShellKey" type="dword" data="00105b2e"/>
<value name="DuplicateRootKey" type="dword" data="00000000"/>
<value name="CloseConEmuKey" type="dword" data="00001273"/>
<value name="Multi.Rename" type="dword" data="00000000"/>
<value name="AffinityPriorityKey" type="dword" data="00005d41"/>
<value name="Multi.MoveLeft" type="dword" data="00125b25"/>
<value name="Multi.MoveRight" type="dword" data="00125b27"/>
<value name="CTS.VkBlockStart" type="dword" data="00000000"/>
<value name="CTS.VkTextStart" type="dword" data="00000000"/>
<value name="CTS.VkCopyFmt0" type="dword" data="00001143"/>
<value name="CTS.VkCopyFmt1" type="dword" data="00101143"/>
<value name="CTS.VkCopyFmt2" type="dword" data="00000000"/>
<value name="CTS.VkCopyAll" type="dword" data="00000000"/>
<value name="HighlightMouseSwitch" type="dword" data="00005d4c"/>
<value name="HighlightMouseSwitchX" type="dword" data="00005d58"/>
<value name="Multi.ShowTabsList" type="dword" data="00000000"/>
<value name="Multi.ShowTabsList2" type="dword" data="00000000"/>
<value name="ClipboardVkAllLines" type="dword" data="0000102d"/>
<value name="ClipboardVkFirstLine" type="dword" data="00001156"/>
<value name="Key.AltNumpad" type="dword" data="00000000"/>
<value name="DeleteWordToLeft" type="dword" data="00001108"/>
<value name="FindTextKey" type="dword" data="00005d46"/>
<value name="ScreenshotKey" type="dword" data="00000000"/>
<value name="ScreenshotFullKey" type="dword" data="00000000"/>
<value name="ShowStatusBarKey" type="dword" data="00000000"/>
<value name="ShowTabBarKey" type="dword" data="00000000"/>
<value name="ShowCaptionKey" type="dword" data="00000000"/>
<value name="AlwaysOnTopKey" type="dword" data="00000000"/>
<value name="TransparencyInc" type="dword" data="00000000"/>
<value name="TransparencyDec" type="dword" data="00000000"/>
<value name="Key.TabMenu" type="dword" data="00000000"/>
<value name="Key.TabMenu2" type="dword" data="00000000"/>
<value name="Key.Maximize" type="dword" data="00000000"/>
<value name="Key.MaximizeWidth" type="dword" data="00000000"/>
<value name="Key.MaximizeHeight" type="dword" data="00000000"/>
<value name="Key.TileToLeft" type="dword" data="00000000"/>
<value name="Key.TileToRight" type="dword" data="00000000"/>
<value name="Key.JumpActiveMonitor" type="dword" data="00000000"/>
<value name="Key.JumpPrevMonitor" type="dword" data="00000000"/>
<value name="Key.JumpNextMonitor" type="dword" data="00000000"/>
<value name="Key.FullScreen" type="dword" data="0000120d"/>
<value name="Key.SysMenu" type="dword" data="00000000"/>
<value name="Key.SysMenu2" type="dword" data="00001102"/>
<value name="Key.DebugProcess" type="dword" data="00105b44"/>
<value name="Key.DumpProcess" type="dword" data="00000000"/>
<value name="Key.DumpTree" type="dword" data="00000000"/>
<value name="Key.BufUp" type="dword" data="00001126"/>
<value name="Key.BufDn" type="dword" data="00001128"/>
<value name="Key.BufPgUp" type="dword" data="00001121"/>
<value name="Key.BufPgDn" type="dword" data="00001122"/>
<value name="Key.BufHfPgUp" type="dword" data="00005d21"/>
<value name="Key.BufHfPgDn" type="dword" data="00005d22"/>
<value name="Key.BufTop" type="dword" data="00005d24"/>
<value name="Key.BufBottom" type="dword" data="00005d23"/>
<value name="Key.BufPrUp" type="dword" data="00121121"/>
<value name="Key.BufPrDn" type="dword" data="00121122"/>
<value name="Key.BufCursor" type="dword" data="00005d08"/>
<value name="Key.ResetTerm" type="dword" data="00000000"/>
<value name="FontLargerKey" type="dword" data="00000000"/>
<value name="FontSmallerKey" type="dword" data="00000000"/>
<value name="FontOriginalKey" type="dword" data="00001104"/>
<value name="PasteFileKey" type="dword" data="00101146"/>
<value name="PastePathKey" type="dword" data="00101144"/>
<value name="PasteCygwinKey" type="dword" data="00005d2d"/>
<value name="KeyMacro01" type="dword" data="00a01231"/>
<value name="KeyMacro01.Text" type="string" data="Task(1)"/>
<value name="KeyMacro02" type="dword" data="00a01232"/>
<value name="KeyMacro02.Text" type="string" data="Task(2)"/>
<value name="KeyMacro03" type="dword" data="000011d0"/>
<value name="KeyMacro03.Text" type="string" data="FontSetSize(1,2)"/>
<value name="KeyMacro04" type="dword" data="000011d1"/>
<value name="KeyMacro04.Text" type="string" data="FontSetSize(1,-2)"/>
<value name="KeyMacro05" type="dword" data="00a01233"/>
<value name="KeyMacro05.Text" type="string" data="Task(3)"/>
<value name="KeyMacro06" type="dword" data="00a01234"/>
<value name="KeyMacro06.Text" type="string" data="Task(4)"/>
<value name="KeyMacro07" type="dword" data="00a01235"/>
<value name="KeyMacro07.Text" type="string" data="Task(5)"/>
<value name="KeyMacro08" type="dword" data="00a01236"/>
<value name="KeyMacro08.Text" type="string" data="Task(6)"/>
<value name="KeyMacro09" type="dword" data="00a01237"/>
<value name="KeyMacro09.Text" type="string" data="Task(7)"/>
<value name="KeyMacro10" type="dword" data="00a01238"/>
<value name="KeyMacro10.Text" type="string" data="Task(8)"/>
<value name="KeyMacro11" type="dword" data="00a01239"/>
<value name="KeyMacro11.Text" type="string" data="Task(9)"/>
<value name="KeyMacro12" type="dword" data="00000000"/>
<value name="KeyMacro12.Text" type="string" data=""/>
<value name="KeyMacro13" type="dword" data="00000000"/>
<value name="KeyMacro13.Text" type="string" data=""/>
<value name="KeyMacro14" type="dword" data="00000000"/>
<value name="KeyMacro14.Text" type="string" data=""/>
<value name="KeyMacro15" type="dword" data="00000000"/>
<value name="KeyMacro15.Text" type="string" data=""/>
<value name="KeyMacro16" type="dword" data="00000000"/>
<value name="KeyMacro16.Text" type="string" data=""/>
<value name="KeyMacro17" type="dword" data="00000000"/>
<value name="KeyMacro17.Text" type="string" data=""/>
<value name="KeyMacro18" type="dword" data="00000000"/>
<value name="KeyMacro18.Text" type="string" data=""/>
<value name="KeyMacro19" type="dword" data="00000000"/>
<value name="KeyMacro19.Text" type="string" data=""/>
<value name="KeyMacro20" type="dword" data="00000000"/>
<value name="KeyMacro20.Text" type="string" data=""/>
<value name="KeyMacro21" type="dword" data="00000000"/>
<value name="KeyMacro21.Text" type="string" data=""/>
<value name="KeyMacro22" type="dword" data="00000000"/>
<value name="KeyMacro22.Text" type="string" data=""/>
<value name="KeyMacro23" type="dword" data="00000000"/>
<value name="KeyMacro23.Text" type="string" data=""/>
<value name="KeyMacro24" type="dword" data="00000000"/>
<value name="KeyMacro24.Text" type="string" data=""/>
<value name="KeyMacro25" type="dword" data="00000000"/>
<value name="KeyMacro25.Text" type="string" data=""/>
<value name="KeyMacro26" type="dword" data="00000000"/>
<value name="KeyMacro26.Text" type="string" data=""/>
<value name="KeyMacro27" type="dword" data="00000000"/>
<value name="KeyMacro27.Text" type="string" data=""/>
<value name="KeyMacro28" type="dword" data="00000000"/>
<value name="KeyMacro28.Text" type="string" data=""/>
<value name="KeyMacro29" type="dword" data="00000000"/>
<value name="KeyMacro29.Text" type="string" data=""/>
<value name="KeyMacro30" type="dword" data="00000000"/>
<value name="KeyMacro30.Text" type="string" data=""/>
<value name="KeyMacro31" type="dword" data="00000000"/>
<value name="KeyMacro31.Text" type="string" data=""/>
<value name="KeyMacro32" type="dword" data="00000000"/>
<value name="KeyMacro32.Text" type="string" data=""/>
<value name="CTS.VkBlock" type="hex" data="A4"/>
<value name="CTS.VkText" type="hex" data="A0"/>
<value name="CTS.VkAct" type="hex" data="00"/>
<value name="CTS.VkPrompt" type="hex" data="00"/>
<value name="FarGotoEditorVk" type="hex" data="A2"/>
<value name="DndLKey" type="hex" data="00"/>
<value name="DndRKey" type="hex" data="A2"/>
<value name="WndDragKey" type="dword" data="00121101"/>
</key>
<key name="Tasks" modified="2018-12-31 12:28:23" build="180528">
<value name="Count" type="long" data="9"/>
<key name="Task1" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="{cmd::Cmder as Admin}"/>
<value name="Flags" type="dword" data="00000003"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='*cmd /k ""%ConEmuDir%\..\init.bat" "'/>
</key>
<key name="Task2" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="{cmd::Cmder}"/>
<value name="Flags" type="dword" data="00000000"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='cmd /k ""%ConEmuDir%\..\init.bat" "'/>
</key>
<key name="Task3" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="{PowerShell::PowerShell as Admin}"/>
<value name="Flags" type="dword" data="00000000"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression &apos;. &apos;&apos;%ConEmuDir%\..\profile.ps1&apos;&apos;&apos;"'/>
</key>
<key name="Task4" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="{PowerShell::PowerShell}"/>
<value name="Flags" type="dword" data="00000000"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression &apos;. &apos;&apos;%ConEmuDir%\..\profile.ps1&apos;&apos;&apos;"'/>
</key>
<key name="Task5" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="{bash::mintty as Admin}"/>
<value name="Flags" type="dword" data="00000000"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data='/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico"'/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='*"%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l'/>
</key>
<key name="Task6" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="{bash::mintty}"/>
<value name="Flags" type="dword" data="00000000"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data='/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico"'/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='"%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l'/>
</key>
<key name="Task7" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="{bash::bash as Admin}"/>
<value name="Flags" type="dword" data="00000000"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='*cmd /c ""%ConEmuDir%\..\git-for-windows\bin\bash" --login -i"'/>
</key>
<key name="Task8" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="{bash::bash}"/>
<value name="Flags" type="dword" data="00000000"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='cmd /c ""%ConEmuDir%\..\git-for-windows\bin\bash" --login -i"'/>
</key>
<key name="Task9" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="{WSL::bash}"/>
<value name="Flags" type="dword" data="00000000"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data='-icon "%USERPROFILE%\AppData\Local\lxss\bash.ico"'/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='set "PATH=%ConEmuBaseDirShort%\wsl;%PATH%" &amp; %ConEmuBaseDirShort%\conemu-cyg-64.exe --wsl -cur_console:pm:/mnt'/>
</key>
</key>
<key name="Apps" modified="2018-12-31 12:28:23" build="180528">
<value name="Count" type="long" data="0"/>
</key>
<key name="Colors" modified="2018-12-31 12:28:23" build="180528">
<value name="Count" type="long" data="1"/>
<key name="Palette1" modified="2018-12-31 12:28:23" build="180528">
<value name="Name" type="string" data="Monokai"/>
<value name="TextColorIdx" type="hex" data="10"/>
<value name="BackColorIdx" type="hex" data="10"/>
<value name="PopTextColorIdx" type="hex" data="10"/>
<value name="PopBackColorIdx" type="hex" data="10"/>
<value name="ColorTable00" type="dword" data="00222827"/>
<value name="ColorTable01" type="dword" data="009e5401"/>
<value name="ColorTable02" type="dword" data="0004aa74"/>
<value name="ColorTable03" type="dword" data="00a6831a"/>
<value name="ColorTable04" type="dword" data="003403a7"/>
<value name="ColorTable05" type="dword" data="009c5689"/>
<value name="ColorTable06" type="dword" data="0049b6b6"/>
<value name="ColorTable07" type="dword" data="00cacaca"/>
<value name="ColorTable08" type="dword" data="007c7c7c"/>
<value name="ColorTable09" type="dword" data="00f58303"/>
<value name="ColorTable10" type="dword" data="0006d08d"/>
<value name="ColorTable11" type="dword" data="00e5c258"/>
<value name="ColorTable12" type="dword" data="004b04f3"/>
<value name="ColorTable13" type="dword" data="00b87da8"/>
<value name="ColorTable14" type="dword" data="0081cccc"/>
<value name="ColorTable15" type="dword" data="00ffffff"/>
</key>
</key>
</key>
</key>
</key>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<XLaunch WindowMode="MultiWindow" ClientMode="NoClient" LocalClient="False" Display="-1" LocalProgram="xcalc" RemoteProgram="xterm" RemotePassword="" PrivateKey="" RemoteHost="" RemoteUser="" XDMCPHost="" XDMCPBroadcast="False" XDMCPIndirect="False" Clipboard="True" ClipboardPrimary="True" ExtraParams="" Wgl="True" DisableAC="False" XDMCPTerminate="False"/>

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,19 @@
Write-Output 'Chose folder' '1) Desktop' '2) Surface'
$folder = Read-Host -Prompt 'Input your option'
$newColor = Read-Host -Prompt 'Input color'
if (!($newColor.Contains('#'))){
$newColor = "#" + $newColor
}
switch ($folder)
{
'1' {$folder = 'C:\Users\JawZ\OneDrive\Pictures\Gimp\Bookmarks\Desktop'}
'2' {$folder = 'C:\Users\JawZ\OneDrive\Pictures\Gimp\Bookmarks\Surface'}
}
$files = Get-ChildItem -Recurse -Path $folder *.png
foreach ($file in $files){
magick mogrify -format png -fill "$newColor" -colorize 100 $file.FullName
}

View File

@ -0,0 +1,173 @@
Import-Module PSWriteColor
echo 'tits'
#Directory Variables
switch ($env:COMPUTERNAME){
"WORKSTATION"
{
$baseDir = 'D:\OneDrive\Pictures\MyArt'
}
"SURFACE"
{
$baseDir = 'C:\Users\JawZ\Pictures\My Art'
}
}
$template = "$baseDir\Assets\Template.clip"
$month = Get-Date -UFormat %B
$year = Get-Date -Format yyyy
function Write-Separator{Write-Color '---' -Color DarkGray}
function New-Patreon{
$directory = "$baseDir\Patreon"
Set-Location $directory
Write-Color 'Add number ', '(type 0x)' -Color Yellow, White
$number = Read-Host
Switch ($month){
'1' {$month = 'Jan'}
'01' {$month = 'Jan'}
'2' {$month = 'Feb'}
'02' {$month = 'Feb'}
'3' {$month = 'Mar'}
'03' {$month = 'Mar'}
'4' {$month = 'Apr'}
'04' {$month = 'Apr'}
'5' {$month = 'May'}
'05' {$month = 'May'}
'6' {$month = 'Jun'}
'06' {$month = 'Jun'}
'7' {$month = 'Jul'}
'07' {$month = 'Jul'}
'8' {$month = 'Aug'}
'08' {$month = 'Aug'}
'9' {$month = 'Sep'}
'09' {$month = 'Sep'}
'10' {$month = 'Oct'}
'11' {$month = 'Nov'}
'12' {$month = 'Dec'}
}
$dirName = $month + '_' + $number
$file = $dirName + ' [x].clip'
mkdir $dirName
Copy-Item "$template" "$directory\$dirName\$file"
Set-Location $directory\$dirName\
Invoke-Item .
& ./$file
}
function New-Commission{
$directory = "$baseDir\Commissions\"
Set-Location $directory
Write-Color 'Who is the commissioner?' -Color Yellow
$user = Read-Host
Write-Color 'Add number ', '(type 0x)' -Color Yellow, White
$number = Read-Host
if(!(Test-Path $user)){
mkdir $user
}
$file = '[com] ' + $user + '_' + $number + ' [x].clip'
Copy-Item $template "$user\$file."
Set-Location $directory\$user
Invoke-Item .
& ./$file
}
function New-Personal{
Set-Location $baseDir
Write-Color 'Type filename:' -Color Yellow
$file = Read-Host
Copy-Item "$template" ./$file.clip
Invoke-Item .
& ./$file.clip
}
function New-Paste{
Clear-Host
Write-Color '1) ', 'Suggestion' -Color White, Magenta
Write-Color '2) ', 'Poll (Pin-up)' -Color White, Magenta
Write-Color '3) ', 'Poll (Illustration)' -Color White, Magenta
Write-Color '4) ', 'Pin-up' -Color White, Magenta
Write-Color '5) ', 'Illustration' -Color White, Magenta
Write-Separator
$option2 = Read-Host
Write-Separator
switch ($option2) {
'1'{
$clip = $month + ' Suggestion time!'
$clip
$clip | clip
}
'2'{
$clip = $month + ' Pin-Up poll!'
$clip
$clip | clip
}
'3'{
$clip = $month + ' Illustration poll!'
$clip
$clip | clip
}
'4'{
$clip = $month + ' Pin-up #X (WIP X)'
$clip
$clip | clip
}
'5'{
$clip = $month + ' Illustration #X (WIP X)'
$clip
$clip | clip
}
}
}
function Anonymator{
$nameConflict = @(
'Ronny'
'Tetractys'
'tonio4316'
)
$nameFix = @(
'Anony'
'Anonctys'
'Anon4316'
)
#Rename directories
for ($i = 0; $i -lt $nameConflict.Count; $i++){
$nameFilter = '*' + $nameConflict[$i] + '*'
foreach ($conflictName in Get-ChildItem -Recurse -Directory -Filter $nameFilter){
$newDir = $conflictName.Name.Replace($nameConflict[$i], $nameFix[$i])
if(Test-Path ($newDir)){
foreach ($file in Get-ChildItem -Path $conflictName){Move-Item $file -Destination $newDir}
}
elseif(!(Test-Path ($newDir))){
Write-Separator
Write-Color 'Will rename the directory ', $conflictName.Name, ' into ', $newDir -Color White, Red, White, Green
Rename-Item $conflictName -NewName $newDir
}
}
foreach ($conflictName in Get-ChildItem $nameFilter -File -Recurse){
Write-Color $conflictName.Name, " will be renamed into ", $conflictName.Name.Replace($nameConflict[$i], $nameFix[$i]) -Color Red, White, Green
Rename-Item $conflictName.FullName -NewName $conflictName.Name.Replace($nameConflict[$i], $nameFix[$i])
}
}
}
Write-Color '1) ', 'Patreon' -Color White, Magenta
Write-Color '2) ', 'Commission' -Color White, Magenta
Write-Color '3) ', 'Personal' -Color White, Magenta
Write-Color '4) ', 'Patreon title' -Color White, Magenta
Write-Color '5) ', 'Anonymator' -Color White, Magenta
Write-Separator
$option = Read-Host
Write-Separator
Switch ($option){
"1" {New-Patreon}
"2" {New-Commission}
"3" {New-Personal}
"4" {New-Paste}
"5" {Anonymator}
}

View File

@ -0,0 +1,95 @@
$downloadDirectory = 'D:\Downloads\'
Set-Location $downloadDirectory
switch -Regex ($args[0]){
<#'music.'{
$YTcommand = "youtube-dl --no-playlist --newline -x --audio-format best --add-metadata --audio-quality 0 $args[0]""
}#>
'youtu'{$YTcommand = "youtube-dl -o ""$downloadDirectory\%(title)s.%(ext)s"" $args[0]"}
'twitter'{$YTcommand = "youtube-dl -o ""$downloadDirectory\%(id)s.%(ext)s"" $args[0]"}
'chaturbate'{
for ($i=1;$i -le 40;$i++){
$waitTimer = 30
$chaturbate = "youtube-dl -o ""$downloadDirectory\%(title)s.%(ext)s"" $args[0]"
Invoke-Expression $chaturbate
$timeMultiply = $waitTimer * $i
$ts = [timespan]::FromSeconds($timeMultiply)
Start-Sleep -Seconds $waitTimer
Write-Host 'Waited for' $ts
}
}
'series'{
$channels = @(
'https://www.youtube.com/user/Worthikids'
'https://www.youtube.com/user/CrazyBorisProduction'
'https://www.youtube.com/c/JelloApocalypse/videos'
'https://www.youtube.com/c/BRFootball/videos'
)
$regexs = @(
'(?i)^bigtop burger'
'(?i)^dungeon dynamite'
'(?i)^epithet erased'
'(?i)^the champions(?! League)'
)
$locations = @(
'D:\OneDrive\Videos\Series\Bigtop Burger'
'D:\OneDrive\Videos\Series\Dungeon Dynamite'
'D:\OneDrive\Videos\Series\Epithet Erased'
'D:\OneDrive\Videos\Series\The Champions'
)
for ($i = 0; $i -lt $channels.Count; $i++){
$channel = $channels[$i]
$location = $locations[$i]
$regex = $regexs[$i]
$channelSeries = "youtube-dl --match-title ""$regex"" -i --ignore-config --add-metadata --embed-subs --all-subs --convert-subs srt --merge-output-format mkv -o ""$location\%(title)s.%(ext)s"" ""$channel"""
Invoke-Expression $channelSeries
}
$Channels = @(
'https://www.youtube.com/channel/UC1DTYW241WD64ah5BFWn4JA/videos'
'https://www.youtube.com/c/ContraPoints/videos'
)
$locations = @(
"D:\OneDrive\Videos\Series\Sam O'Nella"
"D:\OneDrive\Videos\Series\ContraPoints"
)
#Channels Hd
for ($i = 0; $i -lt $channels.Count; $i++){
$channel = $channels[$i]
$location = $locations[$i]
$regex = $regexs[$i]
$channelSeries = "youtube-dl -i --ignore-config --add-metadata --embed-subs --all-subs --convert-subs srt --merge-output-format mkv -o ""$location\%(title)s.%(ext)s"" ""$channel"""
Invoke-Expression $channelSeries
}
#Rhys
$playlists = @(
'https://youtu.be/BhMIUJ-OeaQ?list=PLzxc0OSXCoWxzE6IvnzCcOqlI0puY0513'
'https://youtu.be/ilYzQJ-geCc?list=PLzxc0OSXCoWxhI9_F5ZHgsC2MZ9uyZK8V'
'https://youtu.be/b5S7WPRbVDk?list=PLzxc0OSXCoWwItlpwhY7TOR8RWu8wyQHC'
)
foreach ($playlist in $playlists){
$location = 'D:\OneDrive\Videos\Series\Rhys'
$urlCommand = "youtube-dl -i --ignore-config --add-metadata --recode-video mp4 -o ""$location\%(playlist)s\%(title)s.%(ext)s"" ""$playlist"""
Invoke-Expression $urlCommand
}
#CGkid
$channel = 'https://www.youtube.com/c/CgKid/videos'
$location = 'D:\OneDrive\Videos\Series\CGKid'
$urlCommand = "youtube-dl -f ""best[height<480]"" -i --ignore-config --add-metadata --recode-video mp4 -o ""$location\%(title)s.%(ext)s"" ""$channel"""
Invoke-Expression $urlCommand
}
Default {
$linkCom = "youtube-dl -o ""$downloadDirectory\%(title)s.%(ext)s"" $args[0]"
Invoke-Expression $linkCom
}
}
if ($YTcommand){
Invoke-Expression $YTcommand
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,145 @@
Import-Module PSWriteColor
#Set-Location 'F:\Library\Graphic Novels' #Resets location to root
#Set-Location 'E:\Comic'
#$txtDelete = 'F:\Library\Delete.txt'
function removeEmptyDirectory{
remove-emtpy.ps1 -Path .\ -Remove -VerifyNoEmpty
}
function renamePages{
# Parameter help description
param (
[string]$dirLocation,
[int]$issuePart
)
Set-Location $dirLocation #Set location to the issue directory
$files = Get-ChildItem * -Include '*.jpg', '*.png', '*.jpeg', '*.gif'
for($i = 1; $i -le $files.Count; $i++){ #creates a serialized array of the new file names
$newName = ([string]$issuePart).PadLeft(4,'0') + ([string]$i).PadLeft(4,'0') + $files[$i-1].Extension
#$newName
Rename-Item $files[$i-1] -NewName $newName
}
}
function unzipCBZ{
param (
$cbzFiles
)
$removeEmptyDirectoryDef = $Function:removeEmptyDirectory.ToString()
$renamePagesDef = $Function:renamePages.ToString()
$cbzFiles | ForEach-Object -parallel { #Creates a list of CBZ files on all the subdirectories and runs for each one
#define functions inside the thrad
$Function:removeEmptyDirectory = $using:removeEmptyDirectoryDef
$Function:renamePages = $using:renamePagesDef
Set-Location $_.DirectoryName #Changes location to a children directory to avoid uncompressing into the wrong folders
7z x $_ -o* > $txtDelete
Remove-Item $_.FullName #Removes the CBZ file after extracted
Set-Location $_.BaseName #Set the location to the uncompressed directory
$issueDirectoryLocation = Get-Location #store the issue location for later use
#Remove emtpy directories and creates a check variable
removeEmptyDirectory
$dirDirectories = Get-ChildItem -Directory
#If statements to check and rename files according to how many directories they contain
if (($dirDirectories).Count -gt 0){
for ($i = 0; $i -le ($dirDirectories).Count; $i++){ #system to rename every file according with an increment of which "part" directory of the TPB they belong to
renamePages $dirDirectories[$i] $i
}
Set-Location $issueDirectoryLocation
Get-ChildItem -Recurse -File -Exclude 'ComicInfo.xml' | Move-Item -Destination $issueDirectoryLocation #move files to the root
removeEmptyDirectory
if ((Get-ChildItem -Directory).Count -gt 0){
Get-ChildItem -Recurse -File 'ComicInfo.xml' | Remove-Item
Set-Location $issueDirectoryLocation
removeEmptyDirectory
}
}
elseif (($dirDirectories).Count -eq 0){
$dirLocation = Get-Location
renamePages $dirLocation 0
}
} -ThrottleLimit 15
}
function convertFiles{
Get-ChildItem -Recurse *.jpg | ForEach-Object -parallel { #convert PNG
Set-Location $_.Directory
$fileName = $_.BaseName
magick convert -quality 100 $_ "$fileName.png"
Remove-Item $_
}
Get-ChildItem -Recurse *.png | ForEach-Object -parallel { #convert JPG
Set-Location $_.Directory
$fileName = $_.BaseName
magick convert -quality 100 $_ "$fileName.jpg"
Remove-Item $_
}
}
function partDirs{
param (
$workingDir
)
$dirParts = Get-ChildItem -Directory -Recurse | Where-Object {$_.Name -match 'Part'}
foreach ($dirPart in $dirParts){
Set-Location $dirPart.Parent
$TPBname = $dirPart.Name.Split(' (')
if(!(Test-Path $TPBname[0])){
New-Item -ItemType Directory $TPBname[0]
}
else{
$nameFixed = $TPBname[0] + ' '
$nameFixed
$dirMove = Get-ChildItem -Directory -Exclude $TPBname[0] | Where-Object {$_.Name -match $nameFixed}
if ($dirMove){
$dirMove
$TPBname[0]
Move-Item $dirMove -Destination $TPBname[0]
}
}
}
Set-Location $workingDir ################FIX THIS############
#########################
############
foreach ($dir in Get-ChildItem -Recurse -Directory){
if(test-path($dir)){Set-Location $dir}
$issueDirectoryLocation = Get-Location
if(Get-ChildItem -Directory | Where-Object {$_.Name -match 'Part'}){
$dirRename = Get-ChildItem -Directory
for ($i = 0; $i -le ($dirRename).Count; $i++){ #system to rename every file according with an increment of which "part" directory of the TPB they belong to
renamePages $dirRename[$i] $i
}
Set-Location $issueDirectoryLocation
Get-ChildItem -Recurse -File -Exclude 'ComicInfo.xml' | Move-Item -Destination $issueDirectoryLocation #move files to the root
removeEmptyDirectory
}
}
}
switch ($args[0]) {
'1'{
$cbzFiles = Get-ChildItem *.cbz -Recurse -File
unzipCBZ $cbzFiles
}
'2'{
convertFiles
}
'3'{
Set-Location $args[1]
partDirs $args[1]
}
'4'{
Set-Location 'F:\Library\Comic'
foreach ($dir in Get-ChildItem -Recurse -Directory){
renamePages $dir 0
}
}
}

View File

@ -0,0 +1,338 @@
D:\OneDrive\Programs\bin\task.ps1
Clear-Host
#Variables
switch ($env:COMPUTERNAME){
"WORKSTATION"
{
$Env:dirDownload = 'F:\Library'
$Env:dirJson = 'F:\Library\gallery-dl'
}
"SURFACE"
{
$Env:dirDownload = 'C:\Users\JawZ\Downloads'
$Env:dirJson = '\\WORKSTATION\Library\gallery-dl'
}
}
$Env:database = "$Env:dirJson\manga.sqlite3"
$mAll= "$Env:dirJson\manga.json"
$mVol = "$Env:dirJson\manga-i(vol).json"
$list = "$Env:dirJson\manga.txt"
$downloadList_1 = "$Env:dirJson\download_1.txt"
$downloadList_2 = "$Env:dirJson\download_2.txt"
$downloadList_3 = "$Env:dirJson\download_3.txt"
$downloadList_4 = "$Env:dirJson\download_4.txt"
$downloadList_5 = "$Env:dirJson\download_5.txt"
$textInfo = (Get-Culture).TextInfo
function removeEmptyDirectory{
remove-emtpy.ps1 -Path .\ -Remove -VerifyNoEmpty
}
function Write-Separator{Write-Color '---' -Color DarkGray}
function email ($body){
$EmailFrom = "jawzoned@gmail.com"
$EmailTo = "captainjawz@outlook.com"
$Subject = "New files on the library! "
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("jawzoned", "od3g4t!T&yJq");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, "$Body")
}
function automaticManga{#Download manga automatically
foreach ($webtoon in [System.IO.File]::ReadLines("$list")){
if ($webtoon | Select-String -Pattern 'webtoon'){
gallery-dl --sleep 5 --download-archive $Env:database -c "$mAll" --chapter-range '1' "$webtoon"
}
}
foreach ($manga in [System.IO.File]::ReadLines("$list")){
if ($manga | Select-String -Pattern 'manga'){
gallery-dl --sleep 5 --download-archive $Env:database -c "$mAll" --chapter-range '1-5' "$manga"
}
}
Set-Location $Env:dirDownload\New
removeEmptyDirectory
$newDirectories = Get-ChildItem -Path "$Env:dirDownload\New" -Directory -Recurse
if ($newDirectories){
$body = $newDirectories.Name | Out-String
email $body
}
}
function mangaRange($range){#Download manga automatically
$counter = -1
Write-Separator
foreach ($line in [System.IO.File]::ReadLines($list)){
$counter++
if ($line | Select-String -Pattern 'manga'){
$lineName = $line.Substring(($line.LastIndexOf('/')+1)).Replace("-", " ").Replace("_", " ") #Fix the name so it is presentable
$lineName = $textInfo.ToTitleCase($lineName)
Write-Color "$counter) ", "$lineName" -Color White, Yellow
}
}
Write-Separator
Write-Color 'Make a choice:' -C White
Write-Separator
$selection = Read-Host
Clear-Host
#[string]$range = "'" + $range + "'"
$line = [System.IO.File]::ReadLines($list) | Select-Object -Index $selection
gallery-dl --download-archive $Env:database -c $mAll --chapter-range $range $line
Set-Location $Env:dirDownload\New
removeEmptyDirectory
}
$DO = $args[0]
if($DO){
Switch($DO){
'a'{automaticManga}
'edit'{
Write-Color '1) ', 'Edit manga list' -C White, Yellow
Write-Color '2) ', 'Edit download list 1' -C White, Yellow
Write-Color '3) ', 'Edit download list 2' -C White, Yellow
Write-Color '4) ', 'Edit download list 3' -C White, Yellow
Write-Color '5) ', 'Edit download list 4' -C White, Yellow
Write-Color '6) ', 'Edit download list 5' -C White, Yellow
Write-Separator
$selectOperation = Read-Host
switch($selectOperation){
'1'{Invoke-Item $list}
'2'{Invoke-Item $downloadList_1}
'3'{Invoke-Item $downloadList_2}
'4'{Invoke-Item $downloadList_3}
'5'{Invoke-Item $downloadList_4}
'6'{Invoke-Item $downloadList_5}
}
}
}
}
else{
#Menu
Write-Color '1) ', 'Update Manga custom range' -C White, Yellow
Write-Color '2) ', 'Update comic from list' -C White, Yellow
Write-Color '3) ', 'Update everything' -C White, Yellow
Write-Color '4) ', 'Download individual comic/manga' -C White, Yellow
Write-Color '5) ', 'Download individual comic/manga per Volume' -C White, Yellow
Write-Color '6) ', 'Download batch' -C White, Yellow
Write-Color '7) ', 'Sort list file'-C White, Yellow
Write-Separator
#Actions
if ((Test-Path $Env:database) -and (Test-Path $mAll) -and (Test-Path $mVol) -and (Test-Path $list) -and (Test-Path $Env:dirDownload)){
$selectOperation = Read-Host
Write-Separator
switch ($selectOperation){
'1' {
Write-Color 'Insert a custom range ', '(ex 1-10)' -C Gray, DarkGray
Write-Separator
$range = Read-Host
mangaRange $range
}
'2' { #Update comic
$userInput = ''
Do {
Clear-Host
$counter = -1
foreach ($line in [System.IO.File]::ReadLines($list)) { #Print each lines from the list containing Comic pattern
$counter++
if ($line | Select-String -Pattern 'readcomiconline') {
$lineName = $line.Substring(($line.LastIndexOf('/')+1)).Replace("-", " ").Replace("_", " ") #Fix the name so it is presentable
$lineName = $textInfo.ToTitleCase($lineName)
Write-Color "$counter) ", "$lineName" -Color White, Yellow
}
}
Write-Separator
Write-Color 'Make a selection:' -C White
Write-Separator
$selection = Read-Host
Clear-Host
$line = [System.IO.File]::ReadLines($list) | Select-Object -Index $selection
$lineName = $line.Substring(($line.LastIndexOf('/')+1)).Replace("_", " ").Replace("-"," ") #Fix name so it is presentable
$lineName = $textInfo.ToTitleCase($lineName)
Write-Color 'Your selection is: ', $lineName -C White, Yellow
Write-Separator
Write-Color 'Is your choice correct?', '(y/n)' -C White, DarkGray
Write-Separator
$userInput = Read-Host #Ask user if selection is correct
} while (($userInput -eq '') -or ($userInput -eq 'n')) #if selection is incorrect reprint the list
Clear-Host
gallery-dl --download-archive $Env:database -c $mAll --chapter-range '1' "$line"
}
'3'{
Clear-Host
gallery-dl --download-archive $Env:database -c "$mAll" -i "$list"
}
'4'{
Clear-Host
Write-Separator
Write-Color 'Enter link' -C White
Write-Separator
$link = Read-Host
Write-Separator
Write-Color 'Do you want to use the Database?', '(y/n)' -C White, DarkGray
Write-Separator
$useDB = Read-Host
Write-Separator
Clear-Host
if ($useDB -eq 'y'){
gallery-dl --download-archive $Env:database -c "$mAll" "$link"
}
else{
gallery-dl -c "$mAll" "$link"
}
}
'5'{
Clear-Host
Write-Color 'Enter link:' -C White
Write-Separator
$link = Read-Host
Write-Separator
Clear-Host
gallery-dl --download-archive $Env:database -c "$mVol" "$link"
}
'6'{
#$date = get-date -Format '(ddMMyyy_hhmm)'
#$log = "$Env:dirJson\logs\log $date.txt"
Clear-Host
Write-Color 'Which list do you want to use?' -C White
Write-Separator
$listNumber = Read-Host
switch ($listNumber) {
'1'{gallery-dl --sleep 0 -c "$mAll" -i "$downloadList_1"}
'2'{gallery-dl --sleep 0 -c "$mAll" -i "$downloadList_2"}
'3'{gallery-dl --sleep 0 -c "$mAll" -i "$downloadList_3"}
'4'{gallery-dl --sleep 0 -c "$mAll" -i "$downloadList_4"}
'5'{gallery-dl --sleep 2 --download-archive $Env:database -c "$mAll" -i "$downloadList_5"}
}
}
'7'{
$finalContent = @()
$content = (Get-Content $list).ToLower() | Sort-Object | Select-Object -Unique
foreach ($line in $content){
[string]$line = $line
<#$line = $line.Replace('http:', 'https:')
if ($line -Match '\/$'){
$line = $line.TrimEnd('/')
}#>
$finalContent += $line
}
$finalContent -match '\S' > $list
}
}
}
else {
Clear-Host
Write-Output 'ERROR: One of the configuration files is missing'
Write-Output "Database"
Test-Path $Env:database
Write-Output "manga.json"
Test-Path $mAll
Write-Output "manga-1(vol).json"
Test-Path $mVol
Write-Output "Manga list.txt"
Test-Path $list
Write-Output "Download directory"
Test-Path $Env:dirDownload
}
}
function Capitalize{
#Set-Location 'F:\Library\New'
<#foreach ($directory in Get-ChildItem -Recurse -Directory){
Set-Location $directory
$capitalizeFiles = Get-ChildItem -File
ReNamer.exe /silent /rename Capitalize $capitalizeFiles
Wait-Process -Name "ReNamer"
}#>
Set-Location 'F:\Library\New'
foreach ($directory in Get-ChildItem -Directory -Recurse){
$directory.FullName
ReNamer.exe /silent /rename Capitalize $directory.FullName
Wait-Process -Name "ReNamer"
}
}
function moveSeries{
$serieLocationNames= @(
"Amory Wars"
"Batman"
"Borderlands"
"Brit"
"Clive Barker"
"Colder"
"Constantine"
"Critical Role"
"Dark Ark"
"Deadpool"
"Dicks"
"Ether"
"Fables"
"Grimm Fairy Tales"
"Guardians of the Galaxy"
"Gwenpool"
"Hack Slash"
"Harley Quinn"
"Hellboy"
"Hercules"
"Joker"
"Justice League"
"Kick-Ass"
"Lazarus"
"Lobo"
"Mad Max"
"Midnighter"
"Nailbiter"
"Pilot Season"
"Punisher"
"Rumble"
"Sonic"
"Star Wars"
"Suicide Squad"
"The Boys"
"The Last Zombie"
"The Realm"
"The Walking Dead"
"Thor"
"Transformers"
"Venom"
"Vikings"
"WWE"
"X-Men"
"Wolverine"
"Battle Angel Alita"
"Battle Through The Heavens"
"Boku No Hero Academia"
"Dr. Stone"
"Franken Fran"
"Kakegurui"
"Kami-Sama No Iutoori"
"Shaman King"
"Tensei Shitara Slime Datta Ken"
"Touhou"
)
foreach ($serieLocationName in $serieLocationNames){
$testPathComicLocation = 'F:\Library\New\Comic\' + $serieLocationName
$testPathMangaLocation = 'F:\Library\New\Manga\' + $serieLocationName
if(Test-Path $testPathComicLocation){
$files = Get-ChildItem -Path $testPathComicLocation
$newDir = $testPathComicLocation + '\' + $serieLocationName
if(!(Test-Path $newDir)){mkdir $newDir}
Move-Item $files $newDir
}
if(Test-Path $testPathMangaLocation){
$files = Get-ChildItem -Path $testPathMangaLocation
$newDir = $testPathMangaLocation + '\' + $serieLocationName
if(!(Test-Path $newDir)){mkdir $newDir}
Move-Item $files $newDir
}
}
}
Clear-Host
Capitalize
moveSeries

View File

@ -0,0 +1,134 @@
<#
.SYNOPSIS
Svendsen Tech's generic script for removing empty directories from a
directory tree structure.
Finds or removes/deletes empty directories recursively from the drive or
directory you specify.
You will need to use the -VerifyNoEmpty parameter or multiple
runs to get rid of nested empty directories. See the -VerifyNoEmpty parameter's
description for further details.
This isn't the most efficient approach as the ones I can think of seem to
increase the script's complexity considerably. It should be useful for a
multitude of use cases.
Author: Joakim Svendsen
.PARAMETER Path
Required. Base root path to iterate recursively.
.PARAMETER Find
Default behaviour where it just prints. Overrides -Remove if both are specified.
.PARAMETER Remove
Removes all empty dirs (as in actually deletes them with Remove-Item).
.PARAMETER VerifyNoEmpty
Makes the script run until no empty directories are found. This is in order
to handle nested empty directories, as in a directory that currently only
contains an empty directory would be empty after the first run/iteration and
need to be remove in a subsequent run. Specifying this parameter causes the
script to run until it's done a complete run without finding a single empty
directory. This might be time-consuming depending on the size of the directory
tree structure.
If there is an error while deleting a directory, it will not run again, to
avoid an infinite loop.
#>
param(
[Parameter(Mandatory=$true)][string] $Path,
[switch] $Find,
[switch] $Remove,
[switch] $VerifyNoEmpty
)
Set-StrictMode -Version 2.0
$ErrorLog = 'remove-empty-dirs-error.log'
######## START OF FUNCTIONS ########
function Iterate-And-Remove-Empty-Dirs {
$FoundEmpty = $false
#Write-Host "Iterating '$Path'"
Get-ChildItem -Force -Recurse -Path $Path | Where-Object { $_.PSIsContainer } | ForEach-Object {
if ($Find -or -not $Remove) {
if (-not (Get-ChildItem -Force $_.FullName)) {
# Directory should be empty
$_.FullName + ' is empty'
}
}
# This is the dangerous part
elseif ($Remove) {
if (-not (Get-ChildItem -Force $_.FullName)) {
$FoundEmpty = $true
# Directory should be empty
Remove-Item -Force $_.FullName
if (-not $?) {
Write-Host -ForegroundColor Red "Error: $(Get-Date): Unable to delete $($_.FullName): $($Error[0].ToString))"
"Error: $(Get-Date): Unable to delete $($_.FullName): $($Error[0].ToString))" | Out-File -Append $ErrorLog
$FoundEmpty = $false # avoid infinite loop
}
else {
Write-Host -ForegroundColor Green "$(Get-Date): Successfully deleted the empty folder: $($_.FullName)"
}
}
}
} # end of ForEach-Object
$FoundEmpty
} # end of function Iterate-And-Remove-Empty-Dirs
######## END OF FUNCTIONS ########
if (-not (Test-Path -Path $Path -PathType Container)) {
"The specified path does not exist. Exiting with code 1."
exit 1
}
if ($Remove -and $VerifyNoEmpty) {
$Counter = 0
while (($OutsideFoundEmpty = Iterate-And-Remove-Empty-Dirs) -eq $true) {
$Counter++
#Write-Host -ForegroundColor Yellow "-VerifyNoEmpty specified. Found empty dirs on run no ${Counter}. Starting next run."
}
$Counter++
#Write-Host "Made $Counter runs in total"
}
else {
Iterate-And-Remove-Empty-Dirs
}

View File

@ -0,0 +1,61 @@
#!/usr/bin/env fish
set slocal ~/.local/share
set sconfig ~/.config
set sflat ~/.var/app
set dest ~/Torrents/Backups/mega
set dlocal $dest/local
set dconfig $dest/config
set dflat $dest/var
set -x fisher_path ~/.config/fish/fisher
set -x PNPM_HOME ~/.local/share/pnpm
set -x PATH $PNPM_HOME $PATH
set ssubs ~/Torrents/Data/Media
set dsubs ~/Torrents/Data/Subs
paru -Qettq >$dest/paru
flatpak list --all --columns=application >$dest/flatpak
pip list --user >$dest/pip
pipx list >$dest/pipx
fish -lc "fisher list >$dest/fisher"
pnpm list -g >$dest/pnpm
function bkup
echo "Creating a backup of" $argv[1] into $argv[2]
rsync --exclude "*.git" --inplace --delete -aurL $argv[1] $argv[2]
end
bkup ~/Development/Scripts/ $dest/scripts
bkup ~/Development/Docker/docker-compose.yml $dest
bkup ~/.ssh/ $dest/ssh
bkup ~/Torrents/Data/Backups/ $dest/servarr
bkup ~/.var/ $dest/var
### Deprecate
### pass
for dir in gnupg fonts gnome-recipes rhythmbox maps-places\.json \
gvfs-metadata
bkup $slocal/$dir $dlocal
end
### Deprecate
### backintime muso SmpDirs2 iriKali 'org.gabmus.gfeeds.json' 'chromium-flags.conf'
for dir in bat beets celluloid ComicTagger calibre desmume \
doom 'environment.d' gallery-dl jawz mpd fish git gopass htop \
lutris moc mpd mpv MusicBrainz ncmpcpp neofetch paru proselint \
systemd yuzu 'PureRef.ini' \
'syncplay.ini' 'topgrade.toml' wgetrc \
mpdscribble mpdasrc Trolltech.conf
bkup $sconfig/$dir $dconfig
end
for file in $ssubs/**/**.srt
set dest (string replace $ssubs $dsubs $file)
mkdir --parents (dirname $dest)
cp $file $dest
end
# busctl --user call org.gnome.Shell /io/elhan/ExtensionsSync io.elhan.ExtensionsSync save
# set -x GZIP -9
# doas tar cvfz /home/jawz/Torrents/Backups/docker.tar.gz /home/jawz/Development/Docker/

View File

@ -0,0 +1,84 @@
#!/usr/bin/env fish
read -gP "Insert Token: " token
read -gP "Insert an after date: " dateInput
set afterDate (date "+%F %H:%M:%S" --date="$dateInput")
set beforeDate (date "+%F %H:%M:%S")
set guildIDs 828901086722785281 659186066724749312 \
618655243554521089 111912780377985024
set guildNames 'The fattest pussy club' CreativeCringeCorner \
'Bound Art With Lore and Less Minors' 'Webcomic Land'
set dmIDs 808310797004308500 539621978504560640 810121293818363934 816078347972116491
set dmNames Hurricane DeftBeck Tomayto Weenie
set baseDir $HOME/Temp/Discord
mkdir -p $baseDir
function guildsAll
for guildID in $guildIDs
discordchatexporter-cli exportguild --parallel 5 \
-t $token -g $guildID --before $beforeDate \
-p 10mb -o "$baseDir/$guildID - $beforeDate"/
end
end
function guildsUpdate
for guildID in $guildIDs
discordchatexporter-cli exportguild --parallel 5 \
-t $token -g $guildID --after $afterDate --before $beforeDate \
-p 10mb -o "$baseDir/$guildID - $beforeDate"/
end
end
function dmAll
for dmID in $dmIDs
discordchatexporter-cli export --parallel 5 \
-t $token -c $dmID --before $beforeDate \
-p 10mb -o "$baseDir/$dmID - $beforeDate"
end
end
function dmUpdate
#echo $afterDate
for dmID in $dmIDs
discordchatexporter-cli export --parallel 5 \
-t $token -c $dmID --after $afterDate --before $beforeDate \
-p 10mb -o "$baseDir/$dmID - $beforeDate"
end
end
function renameDirs
set i 1
set names $guildNames $dmNames
for ID in $guildIDs $dmIDs
set foundDir (find $baseDir -type d -name "$ID*")
mv $foundDir $baseDir/(string replace $ID $names[$i] (basename $foundDir))
set i (math $i + 1)
end
for dir in (find $baseDir -maxdepth 1 -type d -not -path $baseDir)
set fileName (basename $dir).tar.xz
cd $baseDir
set baseName (basename $dir)
tar cJvf $baseDir/$fileName $baseName/
trash-put $dir
end
end
switch $argv[1]
case -G
guildsAll
renameDirs
case -g
guildsUpdate
renameDirs
case -D
dmAll
renameDirs
case -d
dmUpdate
renameDirs
case -u
guildsUpdate
dmUpdate
renameDirs
end

View File

@ -0,0 +1,49 @@
#!/bin/sh -e
help() {
cat - >&2 <<EOF
doasedit - like sudoedit, but for doas
doasedit file...
Every argument will be treated as a file to edit. There's no support for
passing arguments to doas, so you can only doas root.
This script is SECURITY SENSITIVE! Special care has been taken to correctly
preserve file attributes. Please exercise CAUTION when modifying AND using
this script.
EOF
}
case "$1" in
--help|-h) help; exit 0;;
*) ;;
esac
export TMPDIR=/dev/shm/
trap 'rm -f "$tmp" "$tmpcopy"' EXIT HUP QUIT TERM INT ABRT
for file; do
case "$file" in -*) file=./"$file" ;; esac
tmp="$(mktemp)"
if [ -f "$file" ] && [ ! -r "$file" ]; then
doas cat "$file" > "$tmp"
elif [ -r "$file" ]; then
cat "$file" > "$tmp"
fi
tmpcopy="$(mktemp)"
cat "$tmp" > "$tmpcopy"
${EDITOR:-vi} "$tmp"
if cmp -s "$tmp" "$tmpcopy"; then
echo 'File unchanged, exiting...'
else
doas dd if="$tmp" of="$file"
echo 'Done, changes written'
fi
rm "$tmp" "$tmpcopy"
done

View File

@ -0,0 +1,10 @@
#!/usr/bin/env fish
function exporg_cal -d "Update gnome-calendar using emacs events"
set -l calendar_file ~/Documents/Calendar.ics
emacsclient -e "(org-icalendar-combine-agenda-files)"
string replace -a "DTSTART:" 'DTSTART;TZID=/freeassociation.sourceforge.net/America/Mexico_City:
' (cat $calendar_file) >$calendar_file
string replace -a "DTEND:" 'DTEND;TZID=/freeassociation.sourceforge.net/America/Mexico_City:
' (cat $calendar_file) >$calendar_file
kill (ps -efa | grep calendar | awk '{print $2}' | head -n 2)
end

View File

@ -0,0 +1,12 @@
#!/usr/bin/env python3
from pathlib import Path
import re
path = Path('/home/jawz/Downloads/Jubilations/485935')
pattern = re.compile(r" (\(\d{1,2}\)(?=\.\w))")
for picture in path.iterdir():
if re.search(pattern, picture.name):
newname = (re.sub(pattern, "", picture.name))
if not (path / newname).exists():
(path / picture.name).rename(path / newname)

View File

@ -0,0 +1,60 @@
#!/usr/bin/env fish
function manage_music
set root_directory ~/Music/
# set i 1
# find $root_directory -type f -name "cover.jpg" -delete
# for file in (find $root_directory -type f)
# mkdir $root_directory/$i
# mv $file $root_directory$i/
# set i (math $i + 1)
# end
# beet import -A $root_directory
# find $root_directory -type d -empty -delete
# for directory in (find $root_directory -type d -not \( -path /home/jawz/Music/.debris -prune \))
# set file_count (count (find $directory -maxdepth 1 -type f))
# if test $file_count -gt 0
# set file_head (find $directory -maxdepth 1 -type f | head -n 1)
# ffmpeg -i $file_head -y -loglevel 0 $directory/cover.jpg
# if test ! -e $directory/cover.jpg
# echo $directory "doesn't have a cover"
# end
# end
# end
# Fix covers
# for file in (find $root_directory -type f -name cover.jpg)
# set resolution (string match -r "\d+x\d+" (identify $file))
# set width (string split x $resolution)[1]
# set height (string split x $resolution)[2]
# set div (math $width / $height)
# # Scale up to square
# if test \( $width -ne $height \) \
# -a \( $div -ge 0.98 \) \
# -a \( $div -le 1.2 \)
# if test $width -gt $height
# set size "$width"x"$width"!
# else
# set size "$height"!x"$height"
# end
# echo "Will scale up" $file $resolution
# mogrify -resize $size $file
# end
# # Crop
# if test $width -ne $height
# if test $width -gt $height
# set size "$height"x"$height"+0+0
# else
# set size "$width"x"$width"+0+0
# end
# echo "Will crop " $file $resolution $size
# mogrify -gravity Center -crop $size $file
# end
# # Check if image is a square and bigger than 500x500
# if test \( $width -eq $height \) -a \( $width -gt 1000 \)
# echo "Will resize " $file $resolution
# mogrify -resize 1000 $file
# end
# end
end

127
deprecated-rewrite/moviezip Normal file
View File

@ -0,0 +1,127 @@
#!/usr/bin/env fish
set d_dest /torrents/Kim
set d_tmp /torrents/Data/tmp
set d_media /torrents/Data/Media
function rename_subtitle -a f f_dest
set -f f_base (basename "$f_dest" | string split -r -m1 .)[1]
set -f dots (math (string split "." (basename "$f") | count) -1 )
if test $dots -eq 1
set -f f_ext (basename "$f" | string split -r -m1 .)
echo $f_base.$f_ext[2]
else
set -f f_ext (basename "$f" | string split -r -m4 .)
echo $f_base.$f_ext[2].$f_ext[3]
end
end
function print_color -a message color
echo (set_color $color)"$message"(set_color normal)
end
function separator
echo
print_color _________ yellow
echo
end
function mv_file -a src dst
if test ! -e $dst
print_color Moving green
echo $src
print_color Into
echo $dst
separator
mv "$src" "$dst"
end
end
function zip_movie -a d_movie
set movie_orig_name (basename "$d_movie")
set movie_year (string match -r "\(\d{4}\)" $movie_orig_name)
set movie_name (string lower $movie_orig_name \
| string replace -a a 4 \
| string replace -a e 3 \
| string replace -a i 1 \
| string replace -a o 0\
| string trim)
print_color Processing green
echo $movie_orig_name
print_color "Encrypted name" green
echo $movie_name
separator
for f in (find "$d_movie" -maxdepth 1 -type f)
set episode (string match -r "S\d{2}E\d{2}" (basename "$f"))
set -l f_ext (basename $f | string split -r -m1 .)[2]
if test -n "$movie_year"
set f_dest $d_movie/$movie_name.$f_ext
else if test -n "$episode"
set episode (string match -r "S\d{2}E\d{2}" (basename "$f"))
set f_dest $d_movie/$movie_name $episode.$f_ext
else
set f_dest $d_movie/$movie_name.$f_ext
end
if test ! "$f_ext" = srt
mv_file "$f" "$f_dest"
else if test "$f_ext" = srt
set s_dest $d_movie/(rename_subtitle "$f" "$f_dest")
mv_file "$f" "$s_dest"
end
end
set -f d_original (find "$d_media" -mindepth 2 -type d -name "$movie_orig_name")
set -f f_subtitles (find "$d_movie" -mindepth 1 -name \*.srt)
if test \( -z "$f_subtitles" \) -a \( -d "$d_original" \)
print_color "No subtittles found in the tmp directory..." red
print_color "searching in the original..." green
for f in (find "$d_original" -mindepth 1 -name \*.srt)
function cp_file -a src dst
print_color Found green
echo $src
print_color Copying green
echo $dst
cp "$src" "$dst"
separator
end
if test -n "$episode"
if test (string match "*$episode*" (basename "$f"))
set s_dest $d_movie/(rename_subtitle "$f" "$f_dest")
cp_file "$f" "$s_dest"
end
else
set s_dest $d_movie/(rename_subtitle "$f" "$f_dest")
cp_file "$f" "$s_dest"
end
separator
end
end
print_color "Compressing the files" green
echo $d_movie/*
print_color "Into the zip file" green
echo $d_dest/$movie_name.zip
7z a -ppredator6969 $d_dest/$movie_name.zip $d_movie/*
separator
# GHEKRE
# 7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -mhe=on -ptits6969
end
if test -e $d_tmp
for d_movie in (find $d_tmp -mindepth 1 -type d)
zip_movie $d_movie
end
trash-put $d_tmp
end

View File

@ -0,0 +1,17 @@
#!/usr/bin/env fish
function pywal
set -f wallpaper (string replace -r "file:\/\/" "" \
(gsettings get org.gnome.desktop.background picture-uri) \
| string replace -ra "\'" "")
switch $argv[1]
case light
echo "Setting up light theme"
# wal -lni $wallpaper --backend colorz -b FAFAFA
wal -lni $wallpaper -b FAFAFA
case dark
echo "Setting up dark theme"
# wal -ni $wallpaper --backend colorz
wal -ni $wallpaper
end
# systemctl restart --user emacs.service
end

View File

@ -0,0 +1,17 @@
#!/usr/bin/env fish
function rnm
for f in $argv
# xdg-open $f &
# wait
echo "Please input a new name for the file "(set_color green)(basename $f)(set_color normal)
read -f userinput
set f_new_name "["(basename $PWD)"] $userinput.mp4"
# mv $file $newname
echo $f $new_name
# done
# for f in *.mp4
# do
# ffmpreg $file
# done
end
end

View File

@ -0,0 +1,103 @@
#!/bin/zsh
baseDir=~/Temp/Phone
mkdir -p ~/.cache/phone/{screenshots,photos}
mkdir -p $baseDir
is_mounted() {
mount | awk -v DIR="$1" '{if ($3 == DIR) { exit 0}} ENDFILE{exit -1}'
}
check_mount() {
if is_mounted $baseDir; then
echo "Phone is mounted :)"
else
echo "Mounting phone..."
sshfs -o port=2222 -oHostKeyAlgorithms=+ssh-rsa jawz@phone:/ $baseDir
fi
}
sync_music() {
check_mount
echo "Syncing music..."
rsync --omit-dir-times --size-only --no-perms --recursive --progress \
--delete $HOME/Music/ $baseDir/Music
}
sync_art() {
check_mount
echo "Moving drawings..."
typeset -A remotes
remotes=(
"$HOME/Pictures/Art/My Art/2019/" "$baseDir/Pictures/Art/2019/"
"$HOME/Pictures/Art/My Art/2020/" "$baseDir/Pictures/Art/2020/"
"$HOME/Pictures/Art/My Art/2021/" "$baseDir/Pictures/Art/2021/"
"$HOME/Pictures/Art/4me/" "$baseDir/Pictures/Commissions/"
"$HOME/Pictures/Art/Artists/Friends/" "$baseDir/Pictures/Friends/"
)
for local remote in "${(@kv)remotes}"
do (
rsync --omit-dir-times --size-only --no-perms --recursive --progress --delete \
--exclude={'*.psd','*.clip','*.docx','*.pdf','*.pur','*.ttf','*.zip','*.xcf'} \
--exclude={'*/Assets','.nomedia','*.sai','*.mp4'} \
$local $remote
)
done
}
sync_photos() {
check_mount
echo "Moving photos..."
mv $baseDir/DCIM/Camera/* $HOME/.cache/phone/photos/
mv $HOME/.cache/phone/photos/* "$HOME/Pictures/Photos/Camera Roll/"
}
sync_screenshots() {
check_mount
echo "Moving screenshots..."
mv $baseDir/Pictures/Screenshots/* $HOME/.cache/phone/screenshots/
mv $HOME/.cache/phone/screenshots/* $HOME/Pictures/Screenshots/
}
sync_memes() {
check_mount
echo "Moving those memes... lol"
mv $baseDir/Pictures/Twitter/* "$HOME/Pictures/To Organize/"
mv $baseDir/Pictures/Reddit/* "$HOME/Pictures/To Organize/"
mv $baseDir/Pictures/Discord/* "$HOME/Pictures/To Organize/"
}
sync_telegram() {
check_mount
echo "Moving telegram media..."
mv $baseDir/Pictures/Telegram/* "$HOME/Pictures/To Organize/"
}
check_umount() {
umount $baseDir
rmdir $baseDir
}
case "$1" in
mount) check_mount ;;
music) sync_music ;;
art) sync_art ;;
photos) sync_photos ;;
screenshots) sync_screenshots ;;
memes) sync_memes ;;
telegram) sync_telegram ;;
unmount) unmount ;;
everything)
#sync_music
sync_art
sync_photos
sync_screenshots
sync_memes
sync_telegram
check_umount
;;
*)
echo "not a valid input"
exit 1
;;
esac

View File

@ -0,0 +1,8 @@
#!/usr/bin/env bash
dir="$(realpath $(dirname ${BASH_SOURCE[0]})/../..)"
_nix_direnv_force_reload=1 direnv exec "$dir" true
direnv reload
# direnv reload updates the mtime of .envrc. Also update the timestamp of the
# profile_rc file to keep track that we actually are up to date.
touch $dir/.direnv/{nix,flake}-profile-*.rc

View File

@ -0,0 +1 @@
/nix/store/0gylbw8l57rajj2zpl8dm9mi5sq0lp93-download-hs-0.1.0.0-env

File diff suppressed because one or more lines are too long

1
download_hs/.envrc Normal file
View File

@ -0,0 +1 @@
use nix

5
download_hs/CHANGELOG.md Normal file
View File

@ -0,0 +1,5 @@
# Revision history for download-hs
## 0.1.0.0 -- YYYY-mm-dd
* First version. Released on an unsuspecting world.

20
download_hs/LICENSE Normal file
View File

@ -0,0 +1,20 @@
Copyright (c) 2024 Danilo Reyes
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

18
download_hs/app/Main.hs Normal file
View File

@ -0,0 +1,18 @@
module Main where
-- import Text.RE
-- Read a file line by line
readLines :: FilePath -> IO [String]
readLines = fmap lines . readFile
-- Example usage
main :: IO ()
main = do
let filePath = "./app/test.txt"
linesOfFile <- readLines filePath
mapM_ watchedURLS linesOfFile
watchedURLS :: String -> IO ()
watchedURLS line = do
putStrLn $ "Processing line: " ++ line

2294
download_hs/app/test.txt Executable file

File diff suppressed because it is too large Load Diff

12
download_hs/default.nix Normal file
View File

@ -0,0 +1,12 @@
let pkgs = import <nixpkgs> { };
in pkgs.haskellPackages.developPackage {
root = ./.;
modifier = drv:
pkgs.haskell.lib.addBuildTools drv (with pkgs.haskellPackages; [
cabal-install
ghcid
haskell-language-server
fourmolu
regex
]);
}

BIN
download_hs/dist-newstyle/cache/compiler vendored Normal file

Binary file not shown.

BIN
download_hs/dist-newstyle/cache/config vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
{"cabal-version":"3.10.2.1","cabal-lib-version":"3.10.2.1","compiler-id":"ghc-9.4.8","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"base-4.17.2.1","pkg-name":"base","pkg-version":"4.17.2.1","depends":["ghc-bignum-1.3","ghc-prim-0.9.1","rts"]},{"type":"configured","id":"download-hs-0.1.0.0-inplace-download-hs","pkg-name":"download-hs","pkg-version":"0.1.0.0","flags":{},"style":"local","pkg-src":{"type":"local","path":"/home/jawz/Development/NixOS/scripts/download_hs/."},"dist-dir":"/home/jawz/Development/NixOS/scripts/download_hs/dist-newstyle/build/x86_64-linux/ghc-9.4.8/download-hs-0.1.0.0/x/download-hs","build-info":"/home/jawz/Development/NixOS/scripts/download_hs/dist-newstyle/build/x86_64-linux/ghc-9.4.8/download-hs-0.1.0.0/x/download-hs/build-info.json","depends":["base-4.17.2.1"],"exe-depends":[],"component-name":"exe:download-hs","bin-file":"/home/jawz/Development/NixOS/scripts/download_hs/dist-newstyle/build/x86_64-linux/ghc-9.4.8/download-hs-0.1.0.0/x/download-hs/build/download-hs/download-hs"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.9.1"]},{"type":"pre-existing","id":"ghc-prim-0.9.1","pkg-name":"ghc-prim","pkg-version":"0.9.1","depends":["rts"]},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.2","depends":[]}]}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,77 @@
cabal-version: 3.0
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.
-- Initial package description 'download-hs' generated by
-- 'cabal init'. For further documentation, see:
-- http://haskell.org/cabal/users-guide/
--
-- The name of the package.
name: download-hs
-- The package version.
-- See the Haskell package versioning policy (PVP) for standards
-- guiding when and how versions should be incremented.
-- https://pvp.haskell.org
-- PVP summary: +-+------- breaking API changes
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 0.1.0.0
-- A short (one-line) description of the package.
-- synopsis:
-- A longer description of the package.
-- description:
-- The license under which the package is released.
license: MIT
-- The file containing the license text.
license-file: LICENSE
-- The package author(s).
author: Danilo Reyes
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: CaptainJawZ@outlook.com
-- A copyright notice.
-- copyright:
category: Web
build-type: Simple
-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
extra-doc-files: CHANGELOG.md
-- Extra source files to be distributed with the package, such as examples, or a tutorial module.
-- extra-source-files:
common warnings
ghc-options: -Wall
executable download-hs
-- Import common warning flags.
import: warnings
-- .hs or .lhs file containing the Main module.
main-is: Main.hs
-- Modules included in this executable, other than Main.
-- other-modules:
-- LANGUAGE extensions used by modules in this package.
-- other-extensions:
-- Other library packages from which modules are imported.
build-depends: base ^>=4.17.2.1
-- Directories containing source files.
hs-source-dirs: app
-- Base language which the package is written in.
default-language: Haskell2010

67
gdl/gdl_log_report Executable file
View File

@ -0,0 +1,67 @@
#!/usr/bin/env fish
mkdir -p /dev/shm/logs
set logs (journalctl --user -e -n 99999 \
-u download@\* \
-u instagram@\* \
--no-pager \
| string replace -r \
"(^.*)(workstation download\[\d+\]\: )" "" \
| grep -F \[error\] -B 1)
for i in (seq 1 (count $logs))
set -l log $logs[$i]
if test (string match -r "\[error\]" $log)
if test (string match -r \
"NotFoundError\: Twitter suspends accounts" \
$log)
set -a filter_suspended $i
else if test (string match -r \
"Tweets are protected" $log)
set -a filter_protected $i
else if test (string match -r \
"Requested user could not be found" $log)
set -a filter_missing $i
else if test (string match -r \
"\[instagram\]\[error\] HttpError\: \'404 Not Found\'" $log)
set -a filter_missing $i
else if test (string match -r \
"Unable to retrieve Tweets from this timeline" $log)
set -a filter_empty $i
else
set -a filter_others $i
end
end
end
function _print_accounts -a filter_name --inherit-variable logs
set i_list $argv[3..-1]
for i in $i_list
set regex "\[\d+\/\d+\] "
set log $logs[(math $i-1)]
if test (string match -r $regex $log)
string replace -r $regex "" $log >>/dev/shm/logs/$filter_name
end
end
if test -e /dev/shm/logs/$filter_name
echo "The following accounts are $filter_name:"
for line in (cat /dev/shm/logs/$filter_name | sort | uniq)
echo "- " $line
end
echo ""
end
end
_print_accounts suspended $filter_suspended
_print_accounts protected $filter_protected
_print_accounts missing $filter_missing
_print_accounts empty $filter_empty
echo "The following accouns have other errors:"
for i in $filter_others
echo $logs[(math $i-1)]
echo $logs[$i]
end
command rm -rf /dev/shm/logs

68
gdl/gdl_log_report.sh Executable file
View File

@ -0,0 +1,68 @@
#! /usr/bin/env nix-shell
#! nix-shell -i fish -p fish fd ripgrep gum
mkdir -vp /dev/shm/logs
set logs (journalctl --user -e -n 99999 \
-u download@\* \
-u instagram@\* \
--no-pager \
| string replace -r \
"(^.*)(workstation download\[\d+\]\: )" "" \
| grep -F \[error\] -B 1)
for i in (seq 1 (count $logs))
set -l log $logs[$i]
if test (string match -r "\[error\]" $log)
if test (string match -r \
"NotFoundError\: Twitter suspends accounts" \
$log)
set -a filter_suspended $i
else if test (string match -r \
"Tweets are protected" $log)
set -a filter_protected $i
else if test (string match -r \
"Requested user could not be found" $log)
set -a filter_missing $i
else if test (string match -r \
"\[instagram\]\[error\] HttpError\: \'404 Not Found\'" $log)
set -a filter_missing $i
else if test (string match -r \
"Unable to retrieve Tweets from this timeline" $log)
set -a filter_empty $i
else
set -a filter_others $i
end
end
end
function _print_accounts -a filter_name --inherit-variable logs
set i_list $argv[3..-1]
for i in $i_list
set regex "\[\d+\/\d+\] "
set log $logs[(math $i-1)]
if test (string match -r $regex $log)
string replace -r $regex "" $log >>/dev/shm/logs/$filter_name
end
end
if test -e /dev/shm/logs/$filter_name
echo "The following accounts are $filter_name:"
for line in (cat /dev/shm/logs/$filter_name | sort | uniq)
echo "- " $line
end
echo ""
end
end
_print_accounts suspended $filter_suspended
_print_accounts protected $filter_protected
_print_accounts missing $filter_missing
_print_accounts empty $filter_empty
echo "The following accouns have other errors:"
for i in $filter_others
echo $logs[(math $i-1)]
echo $logs[$i]
end
command rm -rf /dev/shm/logs

68
gdl/gdl_mv Executable file
View File

@ -0,0 +1,68 @@
#! /usr/bin/env nix-shell
#! nix-shell -i fish -p fish
set d_parent '/mnt/disk2/scrapping/JawZ'
set d_gdl 'gallery-dl'
set d_gdl_filtered 'organized'
function _get_parent
dirname (dirname $argv[1])
end
function _replace_path
string replace $argv[1] $argv[2] $argv[3]
end
function _mv_files -a d
for f in (find $d -type f)
set f_name (basename $f)
# Search for video files
if test (string match -r "\.mp4|\.webm\$" $f_name)
set f_dest (dirname $f)/Videos/(basename $f)
# Loop until the parent directory isn't named Videos|mp4
while test (string match -r "Videos|mp4" (basename (_get_parent $f_dest)))
set f_dest (_get_parent $f_dest)/(basename $f_dest)
end
# Place videos in their own subdirectory
set f_dest (_replace_path $d_gdl $d_gdl_filtered $f_dest)
else # Not a video file
set f_dest (_replace_path $d_gdl $d_gdl_filtered $f)
echo $f_dest
end
set d_dest (dirname $f_dest)
# Strip dirname for logging
set d_name (string replace $d_parent "" $d_dest)
# Check if destination exists
if test ! -e $d_dest
echo (set_color green)$d_name(set_color normal) \
"Doesn't exist, creating..."
mkdir -p $d_dest
end
# If destination exists, and basename isn't duplicated
if test \( -e $d_dest \) -a \( (basename $f) = (basename $f_dest) \)
echo "Moving the file" (set_color green)$f_name(set_color normal) \
into (set_color green)$d_name(set_color normal)
echo "Original path:"
echo (set_color brblue)$f(set_color normal)
echo "New path:"
echo (set_color brblue)$f_dest | grep -F "$d_name"
echo (set_color yellow)__________________________________(set_color normal)
# Move files
mv $f $f_dest
end
end
end
# TEST IF THE SCRIPT RAN WITH ARGUMENTS
if test -z "$argv[1]"
echo "Please drag a few directories!"
# _mv_files $d_gdl false
end
if test -n "$argv[1]"
for d in $argv
_mv_files $d true
end
end

33
gdl/gdl_mv.sh Executable file
View File

@ -0,0 +1,33 @@
#! /nix/store/kxkdrxvc3da2dpsgikn8s2ml97h88m46-bash-interactive-5.2-p15/bin/bash
#! nix-shell -i bash -p bash fd ripgrep
base_directory='/mnt/disk2/scrapping/JawZ'
gdl_directory=$base_directory/gallery-dl
filtered_directory=$base_directory/organized
move_files() {
orig_file=$(realpath "$1")
dest_file=${orig_file//$gdl_directory/$filtered_directory}
dest_dir=$(realpath "$(dirname "$dest_file")")
mkdir -vp "$dest_dir"
command mv -in "$orig_file" "$dest_dir"
}
if [ -z "$1" ]; then
echo "Please drag a few directories or files!"
else
for arg in "$@"; do
if [ -d "$arg" ]; then
while IFS= read -r file; do
move_files "$file"
done < <(fd . "$arg" -tf)
elif [ -f "$arg" ]; then
move_files "$arg"
else
echo "It's neither a file or a directory"
echo "Please check your input"
fi
done
fi

16
gdl/track_files.fish Normal file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env fish
function _update_count
count (find ~/Pictures/To\ Organize/gdl-organizing/ -type f)
end
function track_files -a goal
set -f original_count (_update_count)
while test (_update_count) -ge $goal
echo "Currently there are:" \
(set_color red)(_update_count)(set_color normal)
echo Delete (set_color green)(math (_update_count) - $goal)(set_color normal) "more files to finish"
sleep 10
clear
end
end

1112
metadata_changes.log Normal file

File diff suppressed because it is too large Load Diff

150
photos-metadata.sh Executable file
View File

@ -0,0 +1,150 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p bash exiftool
# Directory to start the search
base_dir=~/Pictures/Photos/Camera
log_file="metadata_changes.log"
# Function to extract date and time from filename
extract_datetime_from_filename() {
filename=$(basename "$1")
datetime=""
# Patterns to match filenames with date and time
if [[ "$filename" =~ ([0-9]{4})-([0-9]{2})-([0-9]{2})_([0-9]{2})_([0-9]{2})_([0-9]{2}) ]]; then
datetime="${BASH_REMATCH[1]}:${BASH_REMATCH[2]}:${BASH_REMATCH[3]} ${BASH_REMATCH[4]}:${BASH_REMATCH[5]}:${BASH_REMATCH[6]}"
elif [[ "$filename" =~ ([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{2})([0-9]{2})([0-9]{2}) ]]; then
datetime="${BASH_REMATCH[1]}:${BASH_REMATCH[2]}:${BASH_REMATCH[3]} ${BASH_REMATCH[4]}:${BASH_REMATCH[5]}:${BASH_REMATCH[6]}"
elif [[ "$filename" =~ ([0-9]{8})_([0-9]{6}) ]]; then
datetime="${BASH_REMATCH[1]:0:4}:${BASH_REMATCH[1]:4:2}:${BASH_REMATCH[1]:6:2} ${BASH_REMATCH[2]:0:2}:${BASH_REMATCH[2]:2:2}:${BASH_REMATCH[2]:4:2}"
elif [[ "$filename" =~ ([0-9]{8})([0-9]{6}) ]]; then
datetime="${BASH_REMATCH[1]:0:4}:${BASH_REMATCH[1]:4:2}:${BASH_REMATCH[1]:6:2} ${BASH_REMATCH[2]:0:2}:${BASH_REMATCH[2]:2:2}:${BASH_REMATCH[2]:4:2}"
elif [[ "$filename" =~ ([0-9]{8}) ]]; then
datetime="${BASH_REMATCH[1]:0:4}:${BASH_REMATCH[1]:4:2}:${BASH_REMATCH[1]:6:2} 00:00:00"
elif [[ "$filename" =~ ([0-9]{4})-([0-9]{2})-([0-9]{2}) ]]; then
datetime="${BASH_REMATCH[1]}:${BASH_REMATCH[2]}:${BASH_REMATCH[3]} 00:00:00"
fi
# Validate extracted date
if echo "$datetime" | grep -qE '^([0-9]{4}):([0-9]{2}):([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})$'; then
year=$(echo "$datetime" | cut -d':' -f1)
month=$(echo "$datetime" | cut -d':' -f2)
day=$(echo "$datetime" | cut -d':' -f3 | cut -d' ' -f1)
hour=$(echo "$datetime" | cut -d' ' -f2 | cut -d':' -f1)
minute=$(echo "$datetime" | cut -d':' -f5)
second=$(echo "$datetime" | cut -d':' -f6)
# Remove leading zeros for validation
year=$((10#$year))
month=$((10#$month))
day=$((10#$day))
hour=$((10#$hour))
minute=$((10#$minute))
second=$((10#$second))
if (( year < 2009 || year > 2024 )) || (( month < 1 || month > 12 )) || (( day < 1 || day > 31 )) || (( hour > 23 )) || (( minute > 59 )) || (( second > 59 )); then
datetime=""
fi
else
datetime=""
fi
echo "$datetime"
}
# Function to log changes
log_change() {
photo="$1"
old_date="$2"
new_date="$3"
echo "File: $photo" >> "$log_file"
echo " Old Date: $old_date" >> "$log_file"
echo " New Date: $new_date" >> "$log_file"
echo "" >> "$log_file"
}
# Loop through each year directory
for year_dir in "$base_dir"/*/; do
year=$(basename "$year_dir")
# Exclude VFS directory
if [ "$year" == "VFS" ]; then
continue
fi
# Loop through each month directory
for month_dir in "$year_dir"*/; do
month=$(basename "$month_dir")
# Loop through each photo in the month directory
for photo in "$month_dir"*; do
if [ -f "$photo" ]; then
# Extract the date from the photo metadata
photo_date=$(exiftool -DateTimeOriginal -d "%Y:%m:%d %H:%M:%S" "$photo" | awk -F': ' '{print $2}')
if [ -z "$photo_date" ]; then
# Scenario 2: No date metadata
filename_datetime=$(extract_datetime_from_filename "$photo")
if [ -n "$filename_datetime" ]; then
new_date="$filename_datetime"
log_change "$photo" "No date metadata" "$new_date"
echo "Updating date for: $photo"
echo " Extracted date from filename: $new_date"
# exiftool -overwrite_original -DateTimeOriginal="$new_date" "$photo"
else
new_date="$year:$month:01 00:00:00"
log_change "$photo" "No date metadata" "$new_date"
echo "Updating date for: $photo"
echo " Defaulting to directory date: $new_date"
# exiftool -overwrite_original -DateTimeOriginal="$new_date" "$photo"
fi
else
photo_year=$(echo "$photo_date" | cut -d':' -f1)
photo_month=$(echo "$photo_date" | cut -d':' -f2)
photo_day=$(echo "$photo_date" | cut -d':' -f3)
if [ "$photo_year" != "$year" ] || [ "$photo_month" != "$month" ]; then
# Scenario 1: Date mismatch
filename_datetime=$(extract_datetime_from_filename "$photo")
if [ -n "$filename_datetime" ]; then
filename_year=$(echo "$filename_datetime" | cut -d':' -f1)
filename_month=$(echo "$filename_datetime" | cut -d':' -f2)
filename_day=$(echo "$filename_datetime" | cut -d':' -f3)
if [ "$photo_year" == "$filename_year" ] && [ "$photo_month" == "$filename_month" ]; then
echo "Mismatch found: $photo"
echo " Directory date: $year/$month"
echo " Photo date: $photo_date"
echo " Filename date matches photo date, file is in the wrong directory."
echo " Suggested action: Move to $filename_year/$filename_month/$filename_day"
else
new_date="$filename_datetime"
log_change "$photo" "$photo_date" "$new_date"
echo "Mismatch found: $photo"
echo " Directory date: $year/$month"
echo " Photo date: $photo_date"
echo " Filename date: $filename_datetime"
echo " Updating photo metadata to match filename date."
# exiftool -overwrite_original -DateTimeOriginal="$new_date" "$photo"
fi
else
echo "Mismatch found: $photo"
echo " Directory date: $year/$month"
echo " Photo date: $photo_date"
echo " No valid date found in filename."
fi
fi
fi
fi
done
done
# Ask for confirmation before proceeding to the next year
read -p "Finished processing year $year. Do you want to continue to the next year? (y/n): " response
if [[ "$response" != "y" ]]; then
echo "Stopping script."
exit 0
fi
done