commit d0af37ab9c70a6e53c240d9136f0f2b6f88f59ad Author: Danilo Reyes Date: Tue Jul 16 12:59:22 2024 -0600 init diff --git a/clean-cloud.sh b/clean-cloud.sh new file mode 100755 index 0000000..6544d42 --- /dev/null +++ b/clean-cloud.sh @@ -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!" diff --git a/clean-watch.sh b/clean-watch.sh new file mode 100755 index 0000000..5afc6b3 --- /dev/null +++ b/clean-watch.sh @@ -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" diff --git a/deprecated-rewrite/Windows/Windows/Other/Bat to Exe/Bat_To_Exe_Converter.exe b/deprecated-rewrite/Windows/Windows/Other/Bat to Exe/Bat_To_Exe_Converter.exe new file mode 100644 index 0000000..dcd85e3 Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Other/Bat to Exe/Bat_To_Exe_Converter.exe differ diff --git a/deprecated-rewrite/Windows/Windows/Other/Bat to Exe/Bat_To_Exe_Converter_(x64).exe b/deprecated-rewrite/Windows/Windows/Other/Bat to Exe/Bat_To_Exe_Converter_(x64).exe new file mode 100644 index 0000000..1330cf1 Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Other/Bat to Exe/Bat_To_Exe_Converter_(x64).exe differ diff --git a/deprecated-rewrite/Windows/Windows/Other/Bat to Exe/settings b/deprecated-rewrite/Windows/Windows/Other/Bat to Exe/settings new file mode 100644 index 0000000..cbbe857 Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Other/Bat to Exe/settings differ diff --git a/deprecated-rewrite/Windows/Windows/Other/RazerChromaSampleApplication.exe b/deprecated-rewrite/Windows/Windows/Other/RazerChromaSampleApplication.exe new file mode 100644 index 0000000..e0bca08 Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Other/RazerChromaSampleApplication.exe differ diff --git a/deprecated-rewrite/Windows/Windows/Other/SyncSettings.ffs_gui b/deprecated-rewrite/Windows/Windows/Other/SyncSettings.ffs_gui new file mode 100644 index 0000000..566ac2c --- /dev/null +++ b/deprecated-rewrite/Windows/Windows/Other/SyncSettings.ffs_gui @@ -0,0 +1,42 @@ + + + + TimeAndSize + Exclude + + + + TwoWay + false + RecycleBin + + + + + * + + + \System Volume Information\ + \$Recycle.Bin\ + \RECYCLER\ + \RECYCLED\ + *\desktop.ini + *\thumbs.db + + 0 + 0 + 0 + + + + D:\Comic + \\JAWZ-WORKSTATIO\OneDrive\Comic + + + + + + + Action + + diff --git a/deprecated-rewrite/Windows/Windows/Other/Thumbnail me.ini b/deprecated-rewrite/Windows/Windows/Other/Thumbnail me.ini new file mode 100644 index 0000000..7a06886 --- /dev/null +++ b/deprecated-rewrite/Windows/Windows/Other/Thumbnail me.ini @@ -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= diff --git a/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/BulkFileChanger.cfg b/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/BulkFileChanger.cfg new file mode 100644 index 0000000..70bab0a --- /dev/null +++ b/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/BulkFileChanger.cfg @@ -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 diff --git a/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/BulkFileChanger.chm b/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/BulkFileChanger.chm new file mode 100644 index 0000000..c2e6f11 Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/BulkFileChanger.chm differ diff --git a/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/BulkFileChanger.exe b/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/BulkFileChanger.exe new file mode 100644 index 0000000..be0d595 Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/BulkFileChanger.exe differ diff --git a/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/readme.txt b/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/readme.txt new file mode 100644 index 0000000..3c1d3e5 --- /dev/null +++ b/deprecated-rewrite/Windows/Windows/Other/bulkfilechanger-x64/readme.txt @@ -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 +Start BulkFileChanger with the specified configuration file. For example: +BulkFileChanger.exe /cfg "c:\config\bfc.cfg" + +/ChangeTimeAttr +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. + + + - Specifies the base folder to scan. + - 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 "*". + - Specifies the depth of subfolders to scan. If you +specify 0, BulkFileChanger will not scan the subfolders. + - 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 +Specifies a log file to write all actions and errors while running the +/ChangeTimeAttr command. + +/LogFileAppend +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 diff --git a/deprecated-rewrite/Windows/Windows/Other/cmder.xml b/deprecated-rewrite/Windows/Windows/Other/cmder.xml new file mode 100644 index 0000000..ea6ce84 --- /dev/null +++ b/deprecated-rewrite/Windows/Windows/Other/cmder.xml @@ -0,0 +1,704 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deprecated-rewrite/Windows/Windows/Other/config.xlaunch b/deprecated-rewrite/Windows/Windows/Other/config.xlaunch new file mode 100644 index 0000000..f6f9772 --- /dev/null +++ b/deprecated-rewrite/Windows/Windows/Other/config.xlaunch @@ -0,0 +1,2 @@ + + diff --git a/deprecated-rewrite/Windows/Windows/Other/md5c_x64.exe b/deprecated-rewrite/Windows/Windows/Other/md5c_x64.exe new file mode 100644 index 0000000..258de57 Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Other/md5c_x64.exe differ diff --git a/deprecated-rewrite/Windows/Windows/Other/new settings.touchmouseptr_setting b/deprecated-rewrite/Windows/Windows/Other/new settings.touchmouseptr_setting new file mode 100644 index 0000000..3c12a11 Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Other/new settings.touchmouseptr_setting differ diff --git a/deprecated-rewrite/Windows/Windows/Other/tabletpro.touchmouseptr_setting b/deprecated-rewrite/Windows/Windows/Other/tabletpro.touchmouseptr_setting new file mode 100644 index 0000000..8a88cce Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Other/tabletpro.touchmouseptr_setting differ diff --git a/deprecated-rewrite/Windows/Windows/TabProBG - Pink.png b/deprecated-rewrite/Windows/Windows/TabProBG - Pink.png new file mode 100644 index 0000000..83e381c Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/TabProBG - Pink.png differ diff --git a/deprecated-rewrite/Windows/Windows/TabProBG.png b/deprecated-rewrite/Windows/Windows/TabProBG.png new file mode 100644 index 0000000..73adb8b Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/TabProBG.png differ diff --git a/deprecated-rewrite/Windows/Windows/TabProBlur.png b/deprecated-rewrite/Windows/Windows/TabProBlur.png new file mode 100644 index 0000000..a8f163f Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/TabProBlur.png differ diff --git a/deprecated-rewrite/Windows/Windows/Touch settings.ini b/deprecated-rewrite/Windows/Windows/Touch settings.ini new file mode 100644 index 0000000..b42f3cd Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Touch settings.ini differ diff --git a/deprecated-rewrite/Windows/Windows/Touch settings.ini.tabletpro b/deprecated-rewrite/Windows/Windows/Touch settings.ini.tabletpro new file mode 100644 index 0000000..b42f3cd Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/Touch settings.ini.tabletpro differ diff --git a/deprecated-rewrite/Windows/Windows/onenote purple.ini b/deprecated-rewrite/Windows/Windows/onenote purple.ini new file mode 100644 index 0000000..656780d Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/onenote purple.ini differ diff --git a/deprecated-rewrite/Windows/Windows/onenote purple.ini.tabletpro b/deprecated-rewrite/Windows/Windows/onenote purple.ini.tabletpro new file mode 100644 index 0000000..656780d Binary files /dev/null and b/deprecated-rewrite/Windows/Windows/onenote purple.ini.tabletpro differ diff --git a/deprecated-rewrite/Windows/color.ps1 b/deprecated-rewrite/Windows/color.ps1 new file mode 100644 index 0000000..31bf6da --- /dev/null +++ b/deprecated-rewrite/Windows/color.ps1 @@ -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 +} + diff --git a/deprecated-rewrite/Windows/create.ps1 b/deprecated-rewrite/Windows/create.ps1 new file mode 100644 index 0000000..4977c9f --- /dev/null +++ b/deprecated-rewrite/Windows/create.ps1 @@ -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} +} \ No newline at end of file diff --git a/deprecated-rewrite/Windows/library scripts/download.ps1 b/deprecated-rewrite/Windows/library scripts/download.ps1 new file mode 100644 index 0000000..5484fd2 --- /dev/null +++ b/deprecated-rewrite/Windows/library scripts/download.ps1 @@ -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 +} diff --git a/deprecated-rewrite/Windows/library scripts/fix.ps1 b/deprecated-rewrite/Windows/library scripts/fix.ps1 new file mode 100644 index 0000000..4ac245a --- /dev/null +++ b/deprecated-rewrite/Windows/library scripts/fix.ps1 @@ -0,0 +1,1017 @@ +Import-Module PSWriteColor + +#Define important variables and information +$Locations = @( + 'F:\Library\Graphic Novels\Comic' + 'F:\Library\Graphic Novels\Manga' + 'F:\Library\Graphic Novels\WebToon' + 'F:\Library\Graphic Novels\Comic\Block 109' + 'F:\Library\Graphic Novels\Comic\Sabrina' + 'F:\Library\Graphic Novels\Comic\Doggybags' + 'F:\Library\Graphic Novels\Comic\Alien' + 'F:\Library\Graphic Novels\Comic\Hawkman' + 'F:\Library\Graphic Novels\Comic\Outer Darkness' + 'F:\Library\Graphic Novels\Comic\Secret Wars' + 'F:\Library\Graphic Novels\Comic\Teenage Mutant Ninja Turtles' + 'F:\Library\Graphic Novels\Comic\Hulk' + 'F:\Library\Graphic Novels\Comic\Wonder Woman' + "F:\Library\Graphic Novels\Comic\Conan The Barbarian" + "F:\Library\Graphic Novels\Comic\Avengers" + "F:\Library\Graphic Novels\Comic\Amory Wars" + "F:\Library\Graphic Novels\Comic\Batman" + "F:\Library\Graphic Novels\Comic\Borderlands" + "F:\Library\Graphic Novels\Comic\Brit" + "F:\Library\Graphic Novels\Comic\Clive Barker" + "F:\Library\Graphic Novels\Comic\Colder" + "F:\Library\Graphic Novels\Comic\Constantine" + "F:\Library\Graphic Novels\Comic\Critical Role" + "F:\Library\Graphic Novels\Comic\Dark Ark" + "F:\Library\Graphic Novels\Comic\Deadpool" + "F:\Library\Graphic Novels\Comic\Dicks" + "F:\Library\Graphic Novels\Comic\Ether" + "F:\Library\Graphic Novels\Comic\Fables" + "F:\Library\Graphic Novels\Comic\Grimm Fairy Tales" + "F:\Library\Graphic Novels\Comic\Guardians of the Galaxy" + "F:\Library\Graphic Novels\Comic\Gwenpool" + "F:\Library\Graphic Novels\Comic\Hack Slash" + "F:\Library\Graphic Novels\Comic\Harley Quinn" + "F:\Library\Graphic Novels\Comic\Hellboy" + "F:\Library\Graphic Novels\Comic\Hercules" + "F:\Library\Graphic Novels\Comic\Joker" + "F:\Library\Graphic Novels\Comic\Justice League" + "F:\Library\Graphic Novels\Comic\Kick-Ass" + "F:\Library\Graphic Novels\Comic\Lazarus" + "F:\Library\Graphic Novels\Comic\Lobo" + "F:\Library\Graphic Novels\Comic\Mad Max" + "F:\Library\Graphic Novels\Comic\Teen Titans" + "F:\Library\Graphic Novels\Comic\Midnighter" + "F:\Library\Graphic Novels\Comic\Nailbiter" + "F:\Library\Graphic Novels\Comic\Pilot Season" + "F:\Library\Graphic Novels\Comic\Punisher" + "F:\Library\Graphic Novels\Comic\Predator" + "F:\Library\Graphic Novels\Comic\Rumble" + "F:\Library\Graphic Novels\Comic\Sonic" + "F:\Library\Graphic Novels\Comic\Star Wars" + "F:\Library\Graphic Novels\Comic\Suicide Squad" + "F:\Library\Graphic Novels\Comic\Spider-Man" + "F:\Library\Graphic Novels\Comic\The Boys" + "F:\Library\Graphic Novels\Comic\The Last Zombie" + "F:\Library\Graphic Novels\Comic\The Realm" + "F:\Library\Graphic Novels\Comic\The Walking Dead" + "F:\Library\Graphic Novels\Comic\Thor" + "F:\Library\Graphic Novels\Comic\Transformers" + "F:\Library\Graphic Novels\Comic\Venom" + "F:\Library\Graphic Novels\Comic\Vikings" + "F:\Library\Graphic Novels\Comic\WWE" + "F:\Library\Graphic Novels\Comic\X-Men" + "F:\Library\Graphic Novels\Comic\X-Men\Wolverine" + "F:\Library\Graphic Novels\Comic\X-Men\X-Men" + "F:\Library\Graphic Novels\Manga\GUNNM" + "F:\Library\Graphic Novels\Manga\Battle Through The Heavens" + "F:\Library\Graphic Novels\Manga\Boku No Hero Academia" + "F:\Library\Graphic Novels\Manga\Dr. Stone" + "F:\Library\Graphic Novels\Manga\Franken Fran" + "F:\Library\Graphic Novels\Manga\Kakegurui" + "F:\Library\Graphic Novels\Manga\Kami-Sama No Iutoori" + "F:\Library\Graphic Novels\Manga\Shaman King" + "F:\Library\Graphic Novels\Manga\Tensei Shitara Slime Datta Ken" + "F:\Library\Graphic Novels\Manga\Touhou" + "F:\Library\Graphic Novels\Manga\Touhou\Official" + "F:\Library\Graphic Novels\Manga\Touhou\Doujinshi" + ) +$rootDirectory = 'F:\Library\Graphic Novels' +[string[]]$blackList = @("*Director's cut*",'*16777215*', '*Occult Edition*', '*Preview*', '*All Out War Artist Proof Edition*','*Script*','*I Hate It Here*','*Filth of the City*', 'folder*', '*TPB*', '*annual*', '*special*', '*full*', '*primer*', '*Colección*', '*book*', '*1000000*', '*extra*') +[string[]]$whiteList = @('Wolverine (2003)','Borderlands ~ Tannis & the Vault', 'Star Wars ~ Republic','Star Wars ~ Rebels Magazine','*Akira*','Gyo','Uncanny X-Men (2013)','Franken Fran', 'GUNNM', 'The Transformers (2014)', 'The Transformers ~ Regeneration One', 'Transformers ~ Energon', 'Dark Wolverine', 'Wolverine (2010)', 'All-New Guardians of the Galaxy', 'Incredible Hercules', 'Mighty Thor (2016)', 'Venom (2016)', 'Dorohedoro', 'Montage (WATANABE Jun)') +$pattern = '((\d+)(\.\d)?)((?=\.cbz)|(?=\.zip))' #Pattern of the numbers +[regex]$rx = $pattern + +#Functions downloaded from the internet +function SortNaturally{ + PARAM( + [string[]]$strArray + ) + + Add-Type -TypeDefinition @' +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace NaturalSort { + public static class NaturalSort + { + [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)] + public static extern int StrCmpLogicalW(string psz1, string psz2); + + public static System.Collections.ArrayList Sort(System.Collections.ArrayList foo) + { + foo.Sort(new NaturalStringComparer()); + return foo; + } + } + + public class NaturalStringComparer : IComparer + { + public int Compare(object x, object y) + { + return NaturalSort.StrCmpLogicalW(x.ToString(), y.ToString()); + } + } +} +'@ + + return [NaturalSort.NaturalSort]::Sort($strArray) +} + +function deleteDuplicates { + param( + [Parameter( + Mandatory=$True, + ValueFromPipeline=$True, + ValueFromPipelineByPropertyName=$True + )] + [string[]]$PathDuplicates) + + $DuplicatePaths = + Get-ChildItem $PathDuplicates -Recurse| + Get-FileHash | + Group-Object -Property Hash | + Where-Object -Property Count -gt 1 | + ForEach-Object { + $_.Group.Path | + Select-Object -First ($_.Count -1)} + $TotalCount = (Get-ChildItem $PathDuplicates).Count + Write-Warning ("You are going to delete {0} files out of {1} total. Please confirm the prompt" -f $DuplicatePaths.Count, $TotalCount) + Invoke-Item $DuplicatePaths + $DuplicatePaths | Remove-Item -Confirm +} + +#My own functions + +function Write-Separator{Write-Color '---' -Color DarkGray} +function checkDecimals($name, $indexNumber, $testFile){ + $testFileDecimal = @( + $name + ' - ' + $indexNumber + '.' + 0 + '.cbz' + $name + ' - ' + $indexNumber + '.' + 1 + '.cbz' + $name + ' - ' + $indexNumber + '.' + 2 + '.cbz' + $name + ' - ' + $indexNumber + '.' + 3 + '.cbz' + $name + ' - ' + $indexNumber + '.' + 4 + '.cbz' + $name + ' - ' + $indexNumber + '.' + 5 + '.cbz' + $name + ' - ' + $indexNumber + '.' + 6 + '.cbz' + $name + ' - ' + $indexNumber + '.' + 7 + '.cbz' + $name + ' - ' + $indexNumber + '.' + 8 + '.cbz' + $name + ' - ' + $indexNumber + '.' + 9 + '.cbz' + ) + $openDir = $true + for ($i = 0; $i -lt $testFileDecimal.Count; $i++) + { + if (Test-Path($testFileDecimal[$i])){ + $openDir = $false + } + } + if ($openDir -eq $true){ + $dir = Get-Location + Write-Color 'The issue ', $testFile, ' is missing from the directory ', $dir -Color White, DarkRed, White, Red + } +} +function removeEmptyDirectory{ + remove-emtpy.ps1 -Path .\ -Remove -VerifyNoEmpty +} + +function decompress{ + foreach ($file in Get-ChildItem *.cbz -Recurse) { #Creates a list of CBZ files on all the subdirectories and runs for each one + Clear-Host #This will make the screen flash so it becomes somewhat readable. + Set-Location $file.DirectoryName #Changes location to a children directory to avoid uncompressing into the wrong folders + 7z x $file -o* + Remove-Item $file.FullName #Removes the CBZ file after extracted + } +} + +function fixZip{ + foreach ($file in Get-ChildItem *.cbz -Recurse) { #Creates a list of CBZ files on all the subdirectories and runs for each one + Clear-Host #This will make the screen flash so it becomes somewhat readable. + Set-Location $file.DirectoryName #Changes location to a children directory to avoid uncompressing into the wrong folders + 7z x $file -o* + $dirCreated = [io.path]::GetFileNameWithoutExtension($file) + if (Test-Path -Path $dirCreated){ + #Get-ChildItem -Recurse ComicInfo.xml | Remove-Item + Remove-Item $file.FullName #Removes the CBZ file after extracted + 7z a "$dirCreated.zip" .\$dirCreated\* + Remove-Item $dirCreated -Force -Recurse + } + } +} + +function compress{ #Compress every comic folder that contains valid filetypes + Set-Location $rootDirectory #Goes to the root in case anything changed + foreach ($directory in Get-ChildItem -recurse -Directory){ + Set-Location $directory.FullName + if ((Test-Path .\*.jpg -Exclude 'folder.jpg') -or (Test-Path .\*.png -Exclude 'folder.png') -or (Test-Path .\*.jpeg -Exclude 'folder.jpeg')){ #checks if the file contains valid images otherwise skips + Set-Location $directory.Parent.FullName + $fileArray = Get-ChildItem $directory.FullName + #foreach ($file in Get-ChildItem $directory.FullName){#Compress the folder with all the files found inside + $chunkSize = 100 + $outFileArray = @() + $parts =[math]::Ceiling($fileArray.Count / $chunkSize) + if($fileArray.Count -eq 1){ + #$fileArray.FullName + #$directory + 7z a "$directory.zip" $fileArray.FullName + Remove-Item $fileArray.FullName -Force + if ((Get-ChildItem $directory).Count -eq 0){ + Remove-Item $directory + } + } + elseif($fileArray.Count -gt 1){ + for($i=0; $i -lt $parts; $i++){ + $start = $i*$chunkSize + $end = (($i+1)*$chunkSize)-1 + $outFileArray += ,@($fileArray[$start..$end]) + #Clear-Host #FLashes the screen so its possible to read + #7z a "$directory.zip" $file.FullName + #Remove-Item $file.FullName -Force + } + for ($i=0; $i -lt $outFileArray.Count; $i++){ + #$outFileArray[$i] + 7z a "$directory.zip" $outFileArray[$i].FullName + Remove-Item $outFileArray[$i].FullName -Force + } + if ((Get-ChildItem $directory).Count -eq 0){ + Remove-Item $directory + } + } + } + } + Set-Location $rootDirectory #As the progam exits the loop go back to the root directory +} + +function cleanNames{ + $allDirs = Get-ChildItem -Directory + $allFiles = Get-ChildItem -Recurse -File -Depth 1 + + #Rename files with year on the name so the scrapper can identify them better + $patternConflict = @( + '\((\d{4})\) ' + '(? + + #Rename directories + for ($i = 0; $i -lt $nameConflict.Count; $i++){ + #$nameFilter = '*' + $nameConflict[$i] + '*' + $filteredDirs = $allDirs | Where-Object {$_.Name -imatch $nameConflict[$i]} + $filteredFiles = $allFiles | Where-Object {$_.Name -imatch $nameConflict[$i]} + foreach ($conflictName in $filteredFiles){ + if ($conflictName.Name.ToLower() -eq $conflictName.Name.Replace($nameConflict[$i], $nameFix[$i]).ToLower()){} + else{ + 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]) + } + } + foreach ($conflictName in $filteredDirs){ + $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 + } + } + } +} + +function folderCover{ + Set-Location $rootDirectory + $folderCoverArray = Get-ChildItem -Recurse -File 'folder*' + <#foreach ($folderCover in $folderCoverArray){ + Set-Location $folderCover.Directory + $directoryFiles = Get-ChildItem -Exclude $blackList + $firstFile = SortNaturally -strArray $directoryFiles | Select-Object -First 1 + $firstFileDirectory = $firstFile.Split('.') + 7z x $firstFile -o* + Remove-Item $firstFile + Move-Item $folderCover -Destination $firstFileDirectory[0] + }#> + $folderCoverArray + Set-Location $rootDirectory + <#$folderCoverArray = Get-ChildItem -Recurse -File '0' + $folderCoverArray + foreach ($file in $folderCoverArray){Rename-Item $file -NewName '0.jpg'} + $folderCoverArray = Get-ChildItem -Recurse -File '0.jpg' + foreach ($file in $folderCoverArray){ + #magick mogrify -format png $file + Remove-Item $file + }#> +} + + +function pad{ #Pad filenames based on the newest number + foreach ($directory in Get-ChildItem -recurse -Directory){ #Get directories + Set-Location $directory #Changes to each child directory + if ((Get-ChildItem | Measure-Object).Count -gt 0){ #If there are more than one files + $directoryFiles = Get-ChildItem -Exclude $blackList + if ($directoryFiles.Name -match $pattern){ #Loops trough all the files that contain a matching name + #$lastFile = SortNaturally -strArray $directoryFiles | Select-Object -last 1 #Get the last file + #Extract the number part of the name + #[int]$number = $rx.match($lastFile).value + foreach ($file in $directoryFiles){ + $paddedDigits = "{0:D4}" -f [int]($file.Name | Select-String -Pattern $pattern).matches.Groups[2].Value #calculate new name + $newName = $file.Name -replace ($pattern, $($paddedDigits+'$3')) #replace new name + if ($newName -ne $file.Name){ + Write-Color $file.Name, ' will be renamed into ', $newName -Color Red, White, Green + Rename-Item $file -NewName $newName #rename file + } + } + <#if (($number -le 9999) -and ($number -ge 900)){#If file is part of a long series + foreach ($file in $directoryFiles) + { + $paddedDigits = "{0:D4}" -f [int]($file.Name | Select-String -Pattern $pattern).matches.Groups[2].Value #calculate new name + $newName = $file.Name -replace ($pattern, $($paddedDigits+'$3')) #replace new name + if ($newName -ne $file.Name){ + Write-Color $file.Name, ' will be renamed into ', $newName -Color Red, White, Green + Rename-Item $file -NewName $newName #rename file + } + } + } + if (($number -le 899) -and ($number -ge 70)){#If file is part of a long series + foreach ($file in $directoryFiles) + { + $paddedDigits = "{0:D3}" -f [int]($file.Name | Select-String -Pattern $pattern).matches.Groups[2].Value #calculate new name + $newName = $file.Name -replace ($pattern, $($paddedDigits+'$3')) #replace new name + if ($newName -ne $file.Name){ + Write-Color $file.Name, ' will be renamed into ', $newName -Color Red, White, Green + Rename-Item $file -NewName $newName #rename file + } + } + } + elseif (($number -le 99) -and ($number -ge 10)){#If file is part of a short series + foreach ($file in $directoryFiles) + { + $paddedDigits = "{0:D2}" -f [int]($file.Name | Select-String -Pattern $pattern).matches.Groups[2].Value #calculate new name + $newName = $file.Name -replace ($pattern, $($paddedDigits+'$3')) #replace new name + if ($newName -ne $file.Name){ + Write-Color $file.Name, ' will be renamed into ', $newName -Color Red, White, Green + Rename-Item $file -NewName $newName #rename file + } + } + } + elseif (($number -le 9)){#If file is part of a short series + foreach ($file in $directoryFiles) + { + $paddedDigits = "{0:D1}" -f [int]($file.Name | Select-String -Pattern $pattern).matches.Groups[2].Value #calculate new name + $newName = $file.Name -replace ($pattern, $($paddedDigits+'$3')) #replace new name + if ($newName -ne $file.Name){ + Write-Color $file.Name, ' will be renamed into ', $newName -Color Red, White, Green + Rename-Item $file -NewName $newName #rename file + } + } + }#> + } + } + } +} + +function decimals{ + foreach ($directory in Get-ChildItem -Recurse -Directory -Exclude 'Akira'){ + Set-Location $directory + $files = Get-ChildItem -File -Recurse -Exclude $blackList + if ($files.Name -match '(\.\d)(?=\.cbz)'){ + foreach ($file in $files -match '(\.\d)(?=\.cbz)'){ + #$file.FullName + $splitName = $file.Name.Split('.') + $origName = $splitName[0] + '.cbz' + if(Test-Path $origName){ + $newName = $splitName[0] + '.0.cbz' + Write-Color $origName, ' will be renamed into ', $newName -Color Red, White, Green + Rename-Item $origName -NewName $newName + } + } + } + } +} + +function missingFiles{ + foreach ($directory in Get-ChildItem -Directory -Exclude $whiteList){ + Set-Location $directory + $directoryFiles = Get-ChildItem -Exclude $blackList + if ($directoryFiles.Name -match $pattern){ + [string]$lastFile = SortNaturally -strArray $directoryFiles.Name | Select-Object -last 1 + $number = $rx.match($lastFile).value + $number = $number - 1 + #'((\d+)(\.\d)?)((?=\.cbz)|(?=\.zip))' + #$name = $lastFile.Split(' - ') #Split the name of the file structure + $name = [regex]::Split($lastFile, ' - \d+') #Split the name of the file structure + [int]$number = $number + for ($i=1; $i -le $number; $i++){ + $indexNumber = "{0:0000}" -f $i + $testFile = $name[0] + ' - ' + $indexNumber + '.cbz' + if(!(Test-Path ($testFile))){ + checkDecimals $name[0] $indexNumber $testFile + } + } + + <#for ($i=1; $i -le $number; $i++){ + if (($number -le 9999) -and ($number -ge 900)){ + $indexNumber = "{0:0000}" -f $i + $testFile = $name[0] + ' - ' + $indexNumber + '.cbz' + if(!(Test-Path ($testFile))){ + checkDecimals $name[0] $indexNumber $testFile + } + } + if (($number -le 899) -and ($number -ge 70)){ + $indexNumber = "{0:000}" -f $i + $testFile = $name[0] + ' - ' + $indexNumber + '.cbz' + if(!(Test-Path ($testFile))){ + checkDecimals $name[0] $indexNumber $testFile + } + } + elseif (($number -le 99) -and ($number -ge 10)){ + $indexNumber = "{0:00}" -f $i + $testFile = $name[0] + ' - ' + $indexNumber + '.cbz' + if(!(Test-Path ($testFile))){ + checkDecimals $name[0] $indexNumber $testFile + } + } + elseif (($number -le 9)){ + $indexNumber = "{0:0}" -f $i + $testFile = $name[0] + ' - ' + $indexNumber + '.cbz' + if(!(Test-Path ($testFile))){ + checkDecimals $name[0] $indexNumber $testFile + } + } + elseif ($number -eq 100){ + $testFile = $name[0] + ' - ' + 100 + '.cbz' + if(!(Test-Path ($testFile))){ + $testFile + $openDir = $true + } + } + }#> + if($openDir) + { + Invoke-Item . + Read-Host -Prompt "Continue" + } + } + } +} + +function partZip { + + $partListDirectory = Get-ChildItem -Recurse -File *part* + $partListDirectory = $partListDirectory.Directory | Sort-Object | Select-Object -Unique + foreach ($partDirectory in $partListDirectory){ + $partListFile = @() + Set-Location $partDirectory + foreach ($partFile in Get-ChildItem -File *part*){ + $partListFileTemp = $partFile.Name.Split(" (Part") + $partListFile += $partListFileTemp[0] + } + $partListFile = $partListFile | Sort-Object | Select-Object -Unique + mkdir $partListFile + <#foreach ($partListFileFile in $partListFile){ + foreach ($file in Get-ChildItem){ + $partListFileFile + $file.NameString + $file.NameString.Contains("$partListFile") + } + }#> + } +} + +function Move-Directories{ + $moveLocations =@( + "F:\Library\Graphic Novels\Comic\" + "F:\Library\Graphic Novels\Manga\" + ) + foreach ($moveLocation in $moveLocations) { + Set-Location $moveLocation + $dirCollection = @( + 'WWE' + 'Venom' + 'Transformers' + 'The Last Zombie' + 'The Boys' + 'Star Wars' + 'Pilot Season' + 'Midnighter' + 'Lobo' + 'Hellboy' + 'Fables' + 'Colder' + 'Clive Barker' + 'Brit' + 'Amory Wars' + 'Guardians of the Galaxy' + 'Klaus' + 'Batman' + 'Critical Role' + 'Hack Slash' + 'Justice League' + 'Nailbiter' + 'Lazarus' + 'Dark Ark' + 'Dicks' + 'Ether' + 'Grimm Fairy Tales' + 'Hercules' + 'Thor' + 'Punisher' + 'Rumble' + 'Sonic' + 'The Realm' + 'Vikings' + 'Mad Max' + 'Harley Quinn' + 'Joker' + 'Suicide Squad' + 'Deadpool' + 'Gwenpool' + 'Borderlands' + 'Battle Through The Heavens' + 'Boku No Hero Academia' + 'Franken Fran' + 'Kakegurui' + 'Shaman King' + 'GUNNM' + 'Touhou' + "Teen Titans" + 'Avengers' + 'Block 109' + 'Sabrina' + 'Doggybags' + 'Hawkman' + 'Outer Darkness' + 'Secret Wars' + 'Teenage Mutant Ninja Turtles' + 'Hulk' + 'Wonder Woman' + 'Predator' + ) + $dirCollectionBlacklist = @( + 'Kid Lobotomy' + 'War Of The Realms ~ Omega' + 'Teether' + 'Detective Conan' + ) + $xmenCollection = @( + 'Wolverine' + 'Logan' + 'Sabretooth' + 'X-Men' + 'X-Force' + ) + $kickassCollection = @( + 'Hit-Girl' + 'Kick-Ass' + ) + $constantineCollection = @( + 'Constantine' + 'Hellblazer' + ) + $spiderCollection = @( + 'Spider' + ) + $slimeCollection = @( + 'Shitara Slime Datta Ken' + 'Tenchura! Tensei Shitara Slime Datta Ken' + ) + $conanCollection = @( + 'Conan' + 'Cimmerian' + ) + $alienCollection =@( + 'Alien' + 'Prometheus' + ) + + $collections = $conanCollection, $xmenCollection, $kickassCollection, $constantineCollection, $spiderCollection, $slimeCollection, $alienCollection + $collectionsDirs = @( + 'Conan The Barbarian' + 'X-Men' + 'Kick-Ass' + 'Constantine' + 'Spider-Man' + 'Tensei Shitara Slime Datta Ken' + 'Alien' + ) + #Collections + $Directories = Get-ChildItem -Directory -Exclude $dirCollectionBlacklist + for ($i = 0; $i -lt $dirCollection.Count; $i++){ + $matchingDirectories = $Directories | Where-Object {$_.Name -match $dirCollection[$i]} + ForEach ($missplacedDirectory in $matchingDirectories){ + if ($missplacedDirectory.Name -ne $dirCollection[$i]){ + $destinationDir = $dirCollection[$i] + '\' + $missplacedDirectory.Name + if(Test-Path $destinationDir){ + $dir2move = Get-ChildItem -Path $missplacedDirectory + Write-Color 'Will move ', $dir2move, ' into ', $destinationDir -Color White, yellow, White, Green + Move-Item $dir2move -Destination $destinationDir + } + else{ + Write-Color 'Will move ', $missplacedDirectory.Name, ' into ', $dirCollection[$i] -Color White, yellow, White, Green + if(!(Test-Path $dirCollection[$i])){mkdir $dirCollection[$i]} + Move-Item $missplacedDirectory -Destination $dirCollection[$i] + } + } + } + } + #Special collections + for ($i = 0; $i -lt $collections.Count; $i++){ + for ($ii = 0; $ii -lt $collections[$i].Count; $ii++){ + $currentCollection = $collections[$i][$ii] + $matchingDirectories = $Directories | Where-Object {$_.Name -match $currentCollection} + ForEach ($missplacedDirectory in $matchingDirectories){ + if ($missplacedDirectory.Name -ne $collectionsDirs[$i]){ + if(!(Test-Path $collectionsDirs[$i])){mkdir $collectionsDirs[$i]} + Write-Color 'Will move ', $missplacedDirectory.Name, ' into ', $collectionsDirs[$i] -Color White, yellow, White, Green + Move-Item $missplacedDirectory -Destination $collectionsDirs[$i] + } + } + } + } + } + + #X-men folder + Set-Location 'F:\Library\Graphic Novels\Comic\X-men' + $Dirs = Get-ChildItem -Directory + $wolvDirs = $Dirs | Where-Object {($_.Name -Match 'Wolverine' -or $_.Name -Match 'Sabretooth' -or $_.Name -Match 'Logan')} + $xmenDirs = $Dirs | Where-Object {($_.Name -Match 'X-Men' -or $_.Name -Match 'X-Force')} + $xCollections = $wolvDirs, $xmenDirs + $xDirs = @( + 'Wolverine' + 'X-Men' + ) + For ($i = 0; $i -lt $xCollections.Count; $i++){ + + ForEach ($dir in $xCollections[$i]){ + if ($dir.Name -ne $xDirs[$i]){ + if (!(Test-Path $xDirs[$i])){mkdir $xDirs[$i]} + $destinationDir = $xDirs[$i] + '\' + $dir.Name + if(Test-Path $destinationDir){ + $dir2move = Get-ChildItem -Path $dir + Write-Color 'Will move ', $dir2move, ' into ', $destinationDir -Color White, yellow, White, Green + Move-Item $dir2move -Destination $destinationDir + } + else{ + Write-Color 'Will move ', $dir.Name, ' into ', $xDirs[$i] -Color White, yellow, White, Green + if(!(Test-Path $xDirs[$i])){mkdir $xDirs[$i]} + Move-Item $dir -Destination $xDirs[$i] + } + } + } + } +} + +function DirectoryTree{ + $parentDirectories = @() + foreach ($directory in Get-ChildItem -Recurse -Directory){ + Set-Location $directory + $filesinside = Get-ChildItem + if(($filesinside.Name -match 'pdf') -or ($filesinside.Name -match 'cbz') -or ($filesinside.Name -match 'jpg') -or ($filesinside.Name -match 'png')) + {} + else{ + $locationString = Get-Location + $parentDirectories += '"' + $locationString + '"' + } + } + $parentDirectories > 'F:\Library\Tree.txt' + +} +function Capitalize{ + Set-Location 'F:\Library\Comic' + foreach ($directory in Get-ChildItem -Recurse -Directory){ + Set-Location $directory + [string[]]$renamerBL = @("*.xml","*.pdf","*.cbz","Folder.jpg","Folder.png", "folder.jpg", "folder.png") + $capitalizeFiles = Get-ChildItem -Exclude "*.xml","*.pdf","*.cbz","Folder.jpg","Folder.png", "folder.jpg", "folder.png" + foreach ($file in $capitalizeFiles){ + $file.FullName + ReNamer.exe /silent /rename number $file + Wait-Process -Name "ReNamer" + } + } + <#Set-Location 'F:\Library\Graphic Novels\' + foreach ($directory in Get-ChildItem -Directory){ + ReNamer.exe /silent /rename Capitalize $directory.FullName + Wait-Process -Name "ReNamer" + }#> +} + +function findCrossovers{ + $seriesCollectionNames = @( + "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" + "Wolverine" + "X-Men" + ) + $seriesCollectionDirectories = @( + "F:\Library\Graphic Novels\Comic\Amory Wars" + "F:\Library\Graphic Novels\Comic\Batman" + "F:\Library\Graphic Novels\Comic\Borderlands" + "F:\Library\Graphic Novels\Comic\Brit" + "F:\Library\Graphic Novels\Comic\Clive Barker" + "F:\Library\Graphic Novels\Comic\Colder" + "F:\Library\Graphic Novels\Comic\Constantine" + "F:\Library\Graphic Novels\Comic\Critical Role" + "F:\Library\Graphic Novels\Comic\Dark Ark" + "F:\Library\Graphic Novels\Comic\Deadpool" + "F:\Library\Graphic Novels\Comic\Dicks" + "F:\Library\Graphic Novels\Comic\Ether" + "F:\Library\Graphic Novels\Comic\Fables" + "F:\Library\Graphic Novels\Comic\Grimm Fairy Tales" + "F:\Library\Graphic Novels\Comic\Guardians of the Galaxy" + "F:\Library\Graphic Novels\Comic\Gwenpool" + "F:\Library\Graphic Novels\Comic\Hack Slash" + "F:\Library\Graphic Novels\Comic\Harley Quinn" + "F:\Library\Graphic Novels\Comic\Hellboy" + "F:\Library\Graphic Novels\Comic\Hercules" + "F:\Library\Graphic Novels\Comic\Joker" + "F:\Library\Graphic Novels\Comic\Justice League" + "F:\Library\Graphic Novels\Comic\Kick-Ass" + "F:\Library\Graphic Novels\Comic\Lazarus" + "F:\Library\Graphic Novels\Comic\Lobo" + "F:\Library\Graphic Novels\Comic\Mad Max" + "F:\Library\Graphic Novels\Comic\Midnighter" + "F:\Library\Graphic Novels\Comic\Nailbiter" + "F:\Library\Graphic Novels\Comic\Pilot Season" + "F:\Library\Graphic Novels\Comic\Punisher" + "F:\Library\Graphic Novels\Comic\Rumble" + "F:\Library\Graphic Novels\Comic\Sonic" + "F:\Library\Graphic Novels\Comic\Star Wars" + "F:\Library\Graphic Novels\Comic\Suicide Squad" + "F:\Library\Graphic Novels\Comic\The Boys" + "F:\Library\Graphic Novels\Comic\The Last Zombie" + "F:\Library\Graphic Novels\Comic\The Realm" + "F:\Library\Graphic Novels\Comic\The Walking Dead" + "F:\Library\Graphic Novels\Comic\Thor" + "F:\Library\Graphic Novels\Comic\Transformers" + "F:\Library\Graphic Novels\Comic\Venom" + "F:\Library\Graphic Novels\Comic\Vikings" + "F:\Library\Graphic Novels\Comic\WWE" + "F:\Library\Graphic Novels\Comic\X-Men\Wolverine" + "F:\Library\Graphic Novels\Comic\X-Men\X-Men" + ) + for ($i=0; $i -lt $seriesCollectionDirectories.Count; $i++){ + set-location $seriesCollectionDirectories[$i] + $files = Get-ChildItem -Recurse -File + for($ii=0; $ii -lt $seriesCollectionNames.Count; $ii++){ + if (!($files.Name -match $seriesCollectionNames[$i])){ + } + else { + if($files.Name -match $seriesCollectionNames[$ii]){ + foreach ($file in $files){ + if ($seriesCollectionNames[$i] -eq $seriesCollectionNames[$ii]){} + else{ + #Write-Host 'Comparing ' + $seriesCollectionNames[$ii] + ' in ' $seriesCollectionNames[$i] + $file.Name + } + } + } + } + } + } +} + +function newest{ + $dirs2Monitor = @( + 'F:\Library\Graphic Novels\Manga\Boku No Hero Academia\Boku No Hero Academia' + 'F:\Library\Graphic Novels\Manga\Boruto ~ Naruto Next Generations' + 'F:\Library\Graphic Novels\Manga\Detective Conan' + 'F:\Library\Graphic Novels\Manga\Dragon Ball Super' + 'F:\Library\Graphic Novels\Manga\My Father Became A Cute Vtuber Girl!' + 'F:\Library\Graphic Novels\Manga\Onepunch-Man' + 'F:\Library\Graphic Novels\Manga\Shaman King\Shaman King ~ The Super Star' + 'F:\Library\Graphic Novels\Manga\Boku No Hero Academia\Vigilante ~ Boku No Hero Academia Illegals' + 'F:\Library\Graphic Novels\Manga\Kaiju No. 8' + ) + foreach ($dir in $dirs2Monitor){ + set-location $dir + $directoryFiles = Get-ChildItem -File + $lastFile = SortNaturally -strArray $directoryFiles.Name | Select-Object -last 1 #Get the last file + $mangaName = $lastFile.Split(' - ') + $mangaIssue = $mangaName[1].split('.') + Write-Color 'The newest issue of ', $mangaName[0], ' is ', $mangaIssue[0] -Color White, Yellow, White, Blue + } + Write-Separator +} + +function routine{ + fix2.ps1 3 'F:\Library\Graphic Novels\Comic' + compress + removeEmptyDirectory + Move-Directories + foreach ($Location in $Locations){ + set-location $Location + cleanNames + set-location $Location + decimals + set-location $Location + pad + set-location $Location + removeEmptyDirectory + } + set-location $rootDirectory + Get-ChildItem -Recurse -File '*zip' | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, "cbz")} #Rename every zipped file into cbz + + foreach ($Location in $Locations){ + set-location $Location + missingFiles + } + set-location +} + +Write-Color '1) ', 'Variable task' -Color White, Yellow +Write-Color '2) ', 'Remove empty directories' -Color White, Yellow +Write-Color '3) ', 'Decompress' -Color White, Yellow +Write-Color '4) ', 'Compress' -Color White, Yellow +Write-Color '5) ', 'Fix filenames' -Color White, Yellow +Write-Color '6) ', 'Find missing issues' -Color White, Yellow +Write-Color '7) ', 'Routine' -Color White, Yellow +Write-Color '8) ', 'Print the newest manga for special list' -Color White, Yellow +Write-Color '9) ', 'Directory Tree' -Color White, Yellow +Write-Separator +$selection = Read-Host +Write-Separator + + +switch ($selection) +{ + '1' {findCrossovers} + '2' {removeEmptyDirectory} + '3' {decompress} + '4' {compress} + '5' { + OnePiece + set-location $rootDirectory + decimals + set-location $rootDirectory + cleanNames + set-location $rootDirectory + cleanNames + set-location $rootDirectory + pad + } + '6' {missingFiles} + '7' {routine} + '8'{newest} + '9'{DirectoryTree} +} \ No newline at end of file diff --git a/deprecated-rewrite/Windows/library scripts/fix2.ps1 b/deprecated-rewrite/Windows/library scripts/fix2.ps1 new file mode 100644 index 0000000..574e2f5 --- /dev/null +++ b/deprecated-rewrite/Windows/library scripts/fix2.ps1 @@ -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 + } + } +} \ No newline at end of file diff --git a/deprecated-rewrite/Windows/library scripts/manga.ps1 b/deprecated-rewrite/Windows/library scripts/manga.ps1 new file mode 100644 index 0000000..2f3ef9b --- /dev/null +++ b/deprecated-rewrite/Windows/library scripts/manga.ps1 @@ -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 \ No newline at end of file diff --git a/deprecated-rewrite/Windows/remove-emtpy.ps1 b/deprecated-rewrite/Windows/remove-emtpy.ps1 new file mode 100644 index 0000000..6b04dc7 --- /dev/null +++ b/deprecated-rewrite/Windows/remove-emtpy.ps1 @@ -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 + +} \ No newline at end of file diff --git a/deprecated-rewrite/backups b/deprecated-rewrite/backups new file mode 100644 index 0000000..954ab47 --- /dev/null +++ b/deprecated-rewrite/backups @@ -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/ diff --git a/deprecated-rewrite/discord_chatlogs b/deprecated-rewrite/discord_chatlogs new file mode 100644 index 0000000..f85f451 --- /dev/null +++ b/deprecated-rewrite/discord_chatlogs @@ -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 diff --git a/deprecated-rewrite/doasedit b/deprecated-rewrite/doasedit new file mode 100644 index 0000000..a3fe77a --- /dev/null +++ b/deprecated-rewrite/doasedit @@ -0,0 +1,49 @@ +#!/bin/sh -e + +help() { + cat - >&2 < "$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 diff --git a/deprecated-rewrite/exporg_cal.fish b/deprecated-rewrite/exporg_cal.fish new file mode 100644 index 0000000..a4b5c05 --- /dev/null +++ b/deprecated-rewrite/exporg_cal.fish @@ -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 diff --git a/deprecated-rewrite/kemono.py b/deprecated-rewrite/kemono.py new file mode 100644 index 0000000..9657b99 --- /dev/null +++ b/deprecated-rewrite/kemono.py @@ -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) diff --git a/deprecated-rewrite/manage_music.fish b/deprecated-rewrite/manage_music.fish new file mode 100644 index 0000000..63aea1c --- /dev/null +++ b/deprecated-rewrite/manage_music.fish @@ -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 diff --git a/deprecated-rewrite/moviezip b/deprecated-rewrite/moviezip new file mode 100644 index 0000000..95ad24a --- /dev/null +++ b/deprecated-rewrite/moviezip @@ -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 diff --git a/deprecated-rewrite/pywal.fish b/deprecated-rewrite/pywal.fish new file mode 100644 index 0000000..fb5a469 --- /dev/null +++ b/deprecated-rewrite/pywal.fish @@ -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 diff --git a/deprecated-rewrite/rnm.fish b/deprecated-rewrite/rnm.fish new file mode 100644 index 0000000..41ca525 --- /dev/null +++ b/deprecated-rewrite/rnm.fish @@ -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 diff --git a/deprecated-rewrite/syncphone b/deprecated-rewrite/syncphone new file mode 100644 index 0000000..7e86874 --- /dev/null +++ b/deprecated-rewrite/syncphone @@ -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 diff --git a/download_hs/.direnv/bin/nix-direnv-reload b/download_hs/.direnv/bin/nix-direnv-reload new file mode 100755 index 0000000..186ac96 --- /dev/null +++ b/download_hs/.direnv/bin/nix-direnv-reload @@ -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 + diff --git a/download_hs/.direnv/nix-profile-.928.50aa30a13c4a b/download_hs/.direnv/nix-profile-.928.50aa30a13c4a new file mode 120000 index 0000000..f405d98 --- /dev/null +++ b/download_hs/.direnv/nix-profile-.928.50aa30a13c4a @@ -0,0 +1 @@ +/nix/store/0gylbw8l57rajj2zpl8dm9mi5sq0lp93-download-hs-0.1.0.0-env \ No newline at end of file diff --git a/download_hs/.direnv/nix-profile-.928.50aa30a13c4a.rc b/download_hs/.direnv/nix-profile-.928.50aa30a13c4a.rc new file mode 100644 index 0000000..c6c29f1 --- /dev/null +++ b/download_hs/.direnv/nix-profile-.928.50aa30a13c4a.rc @@ -0,0 +1,2024 @@ +unset shellHook +PATH=${PATH:-} +nix_saved_PATH="$PATH" +XDG_DATA_DIRS=${XDG_DATA_DIRS:-} +nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS" +AR='ar' +export AR +AS='as' +export AS +BASH='/nix/store/q1c2flcykgr4wwg5a6h450hxbk4ch589-bash-5.2-p15/bin/bash' +CC='gcc' +export CC +CONFIG_SHELL='/nix/store/q1c2flcykgr4wwg5a6h450hxbk4ch589-bash-5.2-p15/bin/bash' +export CONFIG_SHELL +CXX='g++' +export CXX +HOSTTYPE='x86_64' +HOST_PATH='/nix/store/5i51nfixxx3p3gshkfsjj4bzp7wajwxz-ncurses-6.4/bin:/nix/store/bblyj5b3ii8n6v4ra0nb37cmi3lf8rz9-coreutils-9.3/bin:/nix/store/l974pi8a5yqjrjlzmg6apk0jwjv81yqw-findutils-4.9.0/bin:/nix/store/8q25nyfirzsng6p57yp8hsaldqqbc7dg-diffutils-3.10/bin:/nix/store/9c5qm297qnvwcf7j0gm01qrslbiqz8rs-gnused-4.9/bin:/nix/store/rx2wig5yhpbwhnqxdy4z7qivj9ln7fab-gnugrep-3.11/bin:/nix/store/7wfya2k95zib8jl0jk5hnbn856sqcgfk-gawk-5.2.2/bin:/nix/store/xpidksbd07in3nd4sjx79ybwwy81b338-gnutar-1.35/bin:/nix/store/202iqv4bd7lh6f7fpy48p7q4d96lqdp7-gzip-1.13/bin:/nix/store/ik7jardq92dxw3fnz3vmlcgi9c8dwwdq-bzip2-1.0.8-bin/bin:/nix/store/v4iswb5kwj33l46dyh2zqh0nkxxlr3mz-gnumake-4.4.1/bin:/nix/store/q1c2flcykgr4wwg5a6h450hxbk4ch589-bash-5.2-p15/bin:/nix/store/cbj1ph7zi009m53hxs90idl1f5i9i941-patch-2.7.6/bin:/nix/store/76z4cjs7jj45ixk12yy6k5z2q2djk2jb-xz-5.4.4-bin/bin:/nix/store/qmfxld7qhk8qxlkx1cm4bkplg1gh6jgj-file-5.45/bin' +export HOST_PATH +IFS=' +' +IN_NIX_SHELL='impure' +export IN_NIX_SHELL +LANG='en_US.UTF-8' +export LANG +LD='ld' +export LD +LINENO='76' +LOCALE_ARCHIVE='/nix/store/v1ifa3741hza5r1507yd4r0vfkqv0mih-glibc-locales-2.38-27/lib/locale/locale-archive' +export LOCALE_ARCHIVE +MACHTYPE='x86_64-pc-linux-gnu' +NIX_BINTOOLS='/nix/store/1alqjnr40dsk7cl15l5sn5y2zdxidc1v-binutils-wrapper-2.40' +export NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_BUILD_CORES='16' +export NIX_BUILD_CORES +NIX_CC='/nix/store/90h6k8ylkgn81k10190v5c9ldyjpzgl9-gcc-wrapper-12.3.0' +export NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_CFLAGS_COMPILE=' -frandom-seed=0gylbw8l57' +export NIX_CFLAGS_COMPILE +NIX_ENFORCE_NO_NATIVE='1' +export NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE='fortify fortify3 stackprotector pic strictoverflow format relro bindnow' +export NIX_HARDENING_ENABLE +NIX_LDFLAGS='-rpath /home/jawz/Development/NixOS/scripts/download_hs/outputs/out/lib -L/nix/store/5i51nfixxx3p3gshkfsjj4bzp7wajwxz-ncurses-6.4/lib -L/nix/store/9kd4bc8fpclpvf1vdwlbila71svyb6w1-libffi-3.4.4/lib -L/nix/store/s3s7gv33p88kzbgki2bprg2a1nc7jnf8-gmp-with-cxx-6.3.0/lib -L/nix/store/5i51nfixxx3p3gshkfsjj4bzp7wajwxz-ncurses-6.4/lib -L/nix/store/9kd4bc8fpclpvf1vdwlbila71svyb6w1-libffi-3.4.4/lib -L/nix/store/s3s7gv33p88kzbgki2bprg2a1nc7jnf8-gmp-with-cxx-6.3.0/lib' +export NIX_LDFLAGS +NIX_NO_SELF_RPATH='1' +NIX_STORE='/nix/store' +export NIX_STORE +NM='nm' +export NM +OBJCOPY='objcopy' +export OBJCOPY +OBJDUMP='objdump' +export OBJDUMP +OLDPWD='' +export OLDPWD +OPTERR='1' +OSTYPE='linux-gnu' +PATH='/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8/bin:/nix/store/5i51nfixxx3p3gshkfsjj4bzp7wajwxz-ncurses-6.4/bin:/nix/store/7l5mcp1p5zc2ifvaiw9aaab9f1jxj4j2-remove-references-to/bin:/nix/store/sabz7k6lblgxfmacl3bv3yr20hk876cd-cabal-install-3.10.2.1/bin:/nix/store/l9sxfp8hxxf2nbfv1g31lcir8gqrcyjk-ghcid-0.8.9-bin/bin:/nix/store/ycy6k3p91s6w4nvidhm9rb2inmmy342l-haskell-language-server-2.4.0.0/bin:/nix/store/39w18wppiv87s6npdy0gm0g1zhwcwq7h-aeson-pretty-0.8.9/bin:/nix/store/kpqrp4rjpnjdw3gpiz8gsbsgy6bqmbi3-ghcide-2.4.0.0/bin:/nix/store/gzn7qcy5yc54nyp56336sin3lhapww9a-constraints-extras-0.4.0.0/bin:/nix/store/c3r1zn7w2r1imdppahgx10f33xrm4m4r-hie-bios-0.12.0/bin:/nix/store/1wf8mhpffr6bfdn1z2ak2g932z4h4b8w-hiedb-0.4.3.0/bin:/nix/store/k7nzl2123bcxijr5hvmb941z3jlkr6p1-lsp-types-2.0.2.0/bin:/nix/store/krpz24k6a77fnm4256viwa0m8ml8gp55-implicit-hie-0.1.2.7/bin:/nix/store/blhpw7i3ah8hz17fj60pwhfzz3r21hyp-pretty-simple-4.1.2.0/bin:/nix/store/m25nry771j06hcrfp6a3rgrj8rpjnil1-floskell-0.10.8/bin:/nix/store/5b5vvhzncj7zzmbd97zy1f1cpyr1r7di-fourmolu-0.14.0.0/bin:/nix/store/avjgvs065mmisir9zviyl7bi4k7xfgm5-retrie-1.2.2/bin:/nix/store/613mwgj3nzjs636pn7az7qj160iw3kqz-apply-refact-0.13.0.0/bin:/nix/store/rqqlvs9n4b867gn77mykskrxgkphpkng-hlint-3.6.1/bin:/nix/store/35zfcjbxh7fjcp1szc59d9wscpaajczj-cpphs-1.20.9.1/bin:/nix/store/04miyynj9ygrsca1y5liaxas6b6s27mh-hscolour-1.24.4/bin:/nix/store/c03cia2a5835j24fdgfk1xysf1sn80ry-ormolu-0.7.2.0-bin/bin:/nix/store/az2inb8flj6rfgcparg87qzppjfvqi7h-stylish-haskell-0.14.5.0/bin:/nix/store/85jldj870vzcl72yz03labc93bwvqayx-patchelf-0.15.0/bin:/nix/store/90h6k8ylkgn81k10190v5c9ldyjpzgl9-gcc-wrapper-12.3.0/bin:/nix/store/hf2gy3km07d5m0p1lwmja0rg9wlnmyr7-gcc-12.3.0/bin:/nix/store/cx01qk0qyylvkgisbwc7d3pk8sliccgh-glibc-2.38-27-bin/bin:/nix/store/bblyj5b3ii8n6v4ra0nb37cmi3lf8rz9-coreutils-9.3/bin:/nix/store/1alqjnr40dsk7cl15l5sn5y2zdxidc1v-binutils-wrapper-2.40/bin:/nix/store/1fn92b0783crypjcxvdv6ycmvi27by0j-binutils-2.40/bin:/nix/store/bblyj5b3ii8n6v4ra0nb37cmi3lf8rz9-coreutils-9.3/bin:/nix/store/l974pi8a5yqjrjlzmg6apk0jwjv81yqw-findutils-4.9.0/bin:/nix/store/8q25nyfirzsng6p57yp8hsaldqqbc7dg-diffutils-3.10/bin:/nix/store/9c5qm297qnvwcf7j0gm01qrslbiqz8rs-gnused-4.9/bin:/nix/store/rx2wig5yhpbwhnqxdy4z7qivj9ln7fab-gnugrep-3.11/bin:/nix/store/7wfya2k95zib8jl0jk5hnbn856sqcgfk-gawk-5.2.2/bin:/nix/store/xpidksbd07in3nd4sjx79ybwwy81b338-gnutar-1.35/bin:/nix/store/202iqv4bd7lh6f7fpy48p7q4d96lqdp7-gzip-1.13/bin:/nix/store/ik7jardq92dxw3fnz3vmlcgi9c8dwwdq-bzip2-1.0.8-bin/bin:/nix/store/v4iswb5kwj33l46dyh2zqh0nkxxlr3mz-gnumake-4.4.1/bin:/nix/store/q1c2flcykgr4wwg5a6h450hxbk4ch589-bash-5.2-p15/bin:/nix/store/cbj1ph7zi009m53hxs90idl1f5i9i941-patch-2.7.6/bin:/nix/store/76z4cjs7jj45ixk12yy6k5z2q2djk2jb-xz-5.4.4-bin/bin:/nix/store/qmfxld7qhk8qxlkx1cm4bkplg1gh6jgj-file-5.45/bin' +export PATH +PS4='+ ' +RANLIB='ranlib' +export RANLIB +READELF='readelf' +export READELF +SIZE='size' +export SIZE +SOURCE_DATE_EPOCH='315532800' +export SOURCE_DATE_EPOCH +STRINGS='strings' +export STRINGS +STRIP='strip' +export STRIP +XDG_DATA_DIRS='/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8/share:/nix/store/5i51nfixxx3p3gshkfsjj4bzp7wajwxz-ncurses-6.4/share:/nix/store/sabz7k6lblgxfmacl3bv3yr20hk876cd-cabal-install-3.10.2.1/share:/nix/store/9hcmngg8z1rkl26bc2rzbsri3ab4dgzs-attoparsec-0.14.4/share:/nix/store/qr4fjr7iw6q37a2vs3940r156rg3nspx-ghc-check-0.5.0.8/share:/nix/store/k7nzl2123bcxijr5hvmb941z3jlkr6p1-lsp-types-2.0.2.0/share:/nix/store/a2ql46krymn5j1k8qq1s5181qvsxf8ih-fail-4.9.0.0/share:/nix/store/c03cia2a5835j24fdgfk1xysf1sn80ry-ormolu-0.7.2.0-bin/share:/nix/store/85jldj870vzcl72yz03labc93bwvqayx-patchelf-0.15.0/share' +export XDG_DATA_DIRS +__structuredAttrs='' +export __structuredAttrs +buildInputs='' +export buildInputs +buildPhase='runHook preBuild +./Setup build +runHook postBuild +' +export buildPhase +builder='/nix/store/q1c2flcykgr4wwg5a6h450hxbk4ch589-bash-5.2-p15/bin/bash' +export builder +checkPhase='runHook preCheck +checkFlagsArray+=( + "--show-details=streaming" + +) +./Setup test $checkFlags ${checkFlagsArray:+"${checkFlagsArray[@]}"} +runHook postCheck +' +export checkPhase +cmakeFlags='' +export cmakeFlags +compileBuildDriverPhase='runHook preCompileBuildDriver + +for i in Setup.hs Setup.lhs /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs; do + test -f $i && break +done + +echo setupCompileFlags: $setupCompileFlags +ghc $setupCompileFlags --make -o Setup -odir $builddir -hidir $builddir $i + +runHook postCompileBuildDriver +' +export compileBuildDriverPhase +configureFlags='' +export configureFlags +configurePhase='runHook preConfigure + +unset GHC_PACKAGE_PATH # Cabal complains if this variable is set during configure. + +echo configureFlags: $configureFlags +./Setup configure $configureFlags 2>&1 | /nix/store/bblyj5b3ii8n6v4ra0nb37cmi3lf8rz9-coreutils-9.3/bin/tee "$NIX_BUILD_TOP/cabal-configure.log" +if /nix/store/rx2wig5yhpbwhnqxdy4z7qivj9ln7fab-gnugrep-3.11/bin/egrep -q -z '\''Warning:.*depends on multiple versions'\'' "$NIX_BUILD_TOP/cabal-configure.log"; then + echo >&2 "*** abort because of serious configure-time warning from Cabal" + exit 1 +fi + +export GHC_PACKAGE_PATH="$packageConfDir:" + +runHook postConfigure +' +export configurePhase +configurePlatforms='' +export configurePlatforms +defaultBuildInputs='' +defaultNativeBuildInputs='/nix/store/85jldj870vzcl72yz03labc93bwvqayx-patchelf-0.15.0 /nix/store/9vk5fqaik9zx14zpfxipg7lxkdk8c5g9-update-autotools-gnu-config-scripts-hook /nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh /nix/store/wzdsbnv2ba3nj91aql8jjdddfmkkdh7h-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh /nix/store/wmknncrif06fqxa16hpdldhixk95nds0-strip.sh /nix/store/90h6k8ylkgn81k10190v5c9ldyjpzgl9-gcc-wrapper-12.3.0' +depsBuildBuild='/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8' +export depsBuildBuild +depsBuildBuildPropagated='' +export depsBuildBuildPropagated +depsBuildTarget='' +export depsBuildTarget +depsBuildTargetPropagated='' +export depsBuildTargetPropagated +depsHostHost='' +export depsHostHost +depsHostHostPropagated='' +export depsHostHostPropagated +depsTargetTarget='' +export depsTargetTarget +depsTargetTargetPropagated='' +export depsTargetTargetPropagated +doCheck='1' +export doCheck +doInstallCheck='' +export doInstallCheck +doc='/home/jawz/Development/NixOS/scripts/download_hs/outputs/doc' +export doc +dontAddDisableDepTrack='1' +export dontAddDisableDepTrack +declare -a envBuildBuildHooks=() +declare -a envBuildHostHooks=() +declare -a envBuildTargetHooks=() +declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +declare -a envTargetTargetHooks=() +declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' ) +haddockPhase='runHook preHaddock + +runHook postHaddock +' +export haddockPhase +hardeningDisable='pie' +export hardeningDisable +initialPath='/nix/store/bblyj5b3ii8n6v4ra0nb37cmi3lf8rz9-coreutils-9.3 /nix/store/l974pi8a5yqjrjlzmg6apk0jwjv81yqw-findutils-4.9.0 /nix/store/8q25nyfirzsng6p57yp8hsaldqqbc7dg-diffutils-3.10 /nix/store/9c5qm297qnvwcf7j0gm01qrslbiqz8rs-gnused-4.9 /nix/store/rx2wig5yhpbwhnqxdy4z7qivj9ln7fab-gnugrep-3.11 /nix/store/7wfya2k95zib8jl0jk5hnbn856sqcgfk-gawk-5.2.2 /nix/store/xpidksbd07in3nd4sjx79ybwwy81b338-gnutar-1.35 /nix/store/202iqv4bd7lh6f7fpy48p7q4d96lqdp7-gzip-1.13 /nix/store/ik7jardq92dxw3fnz3vmlcgi9c8dwwdq-bzip2-1.0.8-bin /nix/store/v4iswb5kwj33l46dyh2zqh0nkxxlr3mz-gnumake-4.4.1 /nix/store/q1c2flcykgr4wwg5a6h450hxbk4ch589-bash-5.2-p15 /nix/store/cbj1ph7zi009m53hxs90idl1f5i9i941-patch-2.7.6 /nix/store/76z4cjs7jj45ixk12yy6k5z2q2djk2jb-xz-5.4.4-bin /nix/store/qmfxld7qhk8qxlkx1cm4bkplg1gh6jgj-file-5.45' +installPhase='runHook preInstall + +./Setup install + + + + +for x in $doc/share/doc/download-hs-0.1.0.0"/html/src/"*.html; do + remove-references-to -t $out $x +done +mkdir -p $doc + + + +runHook postInstall +' +export installPhase +mesonFlags='' +export mesonFlags +name='download-hs-0.1.0.0-env' +export name +nativeBuildInputs='/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8 /nix/store/7l5mcp1p5zc2ifvaiw9aaab9f1jxj4j2-remove-references-to /nix/store/sabz7k6lblgxfmacl3bv3yr20hk876cd-cabal-install-3.10.2.1 /nix/store/1m54rhm5dpxlf1n9g9nx3wib78mw8qbk-ghcid-0.8.9 /nix/store/ycy6k3p91s6w4nvidhm9rb2inmmy342l-haskell-language-server-2.4.0.0 /nix/store/5b5vvhzncj7zzmbd97zy1f1cpyr1r7di-fourmolu-0.14.0.0 /nix/store/hfy4b7pzwxs337sncmnpj0wyd7bw7qka-regex-1.1.0.2' +export nativeBuildInputs +out='/home/jawz/Development/NixOS/scripts/download_hs/outputs/out' +export out +outputBin='out' +outputDev='out' +outputDevdoc='REMOVE' +outputDevman='out' +outputDoc='doc' +outputInclude='out' +outputInfo='out' +outputLib='out' +outputMan='out' +outputs='out doc' +export outputs +patches='' +export patches +pkg='/nix/store/90h6k8ylkgn81k10190v5c9ldyjpzgl9-gcc-wrapper-12.3.0' +declare -a pkgsBuildBuild=('/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8' '/nix/store/5i51nfixxx3p3gshkfsjj4bzp7wajwxz-ncurses-6.4' '/nix/store/9kd4bc8fpclpvf1vdwlbila71svyb6w1-libffi-3.4.4' '/nix/store/s3s7gv33p88kzbgki2bprg2a1nc7jnf8-gmp-with-cxx-6.3.0' ) +declare -a pkgsBuildHost=('/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8' '/nix/store/7l5mcp1p5zc2ifvaiw9aaab9f1jxj4j2-remove-references-to' '/nix/store/sabz7k6lblgxfmacl3bv3yr20hk876cd-cabal-install-3.10.2.1' '/nix/store/xphv07xjmmnvyvk17igc1c5f1dlsh0y5-async-2.2.4' '/nix/store/ig8w7gl1v2pwiw2k1wybrq265i50l4hz-hashable-1.4.3.0' '/nix/store/8qs4lwa3l2lijjqjf951gkx2gghwhb1y-base16-bytestring-1.0.2.0' '/nix/store/11cwl351bs7gmfd6w042mqyw2bz0l8nh-base64-bytestring-1.2.1.0' '/nix/store/cb4d4snhzw0b2lrcb65v1y5yj3w18247-Cabal-3.10.2.1' '/nix/store/1z2n72b8yxlih8kqwhj4db7rlycry1z3-Cabal-syntax-3.10.2.0' '/nix/store/cslysdr8gqwx01kvpgidkmn4wyg6hmlp-cabal-install-solver-3.10.2.1' '/nix/store/jrii9m8arh5nx5l8pwmm026kifwblcqh-edit-distance-0.2.2.1' '/nix/store/1pfld0kfsjblis5rhp44q2cxcsjb7i3m-random-1.2.1.1' '/nix/store/idjn1sf82jxipxznk72p0mpqrqxpp7vd-splitmix-0.1.0.5' '/nix/store/7blmk5qsvn7vlp8784dy522140in1xh1-cryptohash-sha256-0.11.102.1' '/nix/store/mnrjwpc8w2alazbx4kd2mhkv02ddb6rn-echo-0.1.4' '/nix/store/4i2yk299c3pa4k76si59grgzlx9gvd6s-hackage-security-0.6.2.3' '/nix/store/lhwg5l1qyizrmmpqg88888mc3ya98xm3-ed25519-0.0.5.0' '/nix/store/2vwgq70aij11j1vqvydkidb25gn1apx0-lukko-0.1.1.3' '/nix/store/yrnzgmrh5c5kmnmxagxmz6h4nfc5s8a7-network-3.1.4.0' '/nix/store/ssd4wwf6k6nn4gqxzp6zsb268jxq3wqn-network-uri-2.6.4.2' '/nix/store/20j6l1vqfpy6x7qcvzii0x59znr4dwjh-th-compat-0.1.4' '/nix/store/mm9qgsjk7k3bbr9cjkdbnfc2i8bmr8gy-tar-0.5.1.1' '/nix/store/j7b6gz1syq8zhy1zizsvm0r2yg4js4pa-zlib-0.6.3.0' '/nix/store/jh2z5cdylp6vqfz0l657rgrnbb5y298b-HTTP-4000.4.1' '/nix/store/bqnhs77bf809w3xwqiqfd3lk2mp3ad1q-regex-base-0.94.0.2' '/nix/store/21drb8fgiqsrxqj3vda9j78wkcxrz5px-regex-posix-0.96.0.1' '/nix/store/246zdgp8wviq51v58a45hrvj1fa9qyga-resolv-0.1.2.0' '/nix/store/5qm6anr33v5fmxpm5mwr38nzfxzxadpj-safe-exceptions-0.1.7.4' '/nix/store/1m54rhm5dpxlf1n9g9nx3wib78mw8qbk-ghcid-0.8.9' '/nix/store/903w1i6hgc43fzqx1zr1xhl8n32iivh7-ansi-terminal-0.11.5' '/nix/store/zkmrlg558iw9iali9dgv5fvs09x7j8zx-ansi-terminal-types-0.11.5' '/nix/store/i5b1f2syj5zwv4wd1chfy8nx2cvrc2l7-colour-2.3.6' '/nix/store/i5b1f2syj5zwv4wd1chfy8nx2cvrc2l7-colour-2.3.6' '/nix/store/s76x6spy8mycwxm43bf9z6zdi9cgv4h1-cmdargs-0.10.22' '/nix/store/bqj8qxnglfxxz51h9dklymsgygx8vjdl-extra-1.7.14' '/nix/store/f89h6y736jqq796w0hnk4fxsmj8c3wwk-clock-0.8.4' '/nix/store/k9z9m7w0mr81gbq18sz0grcgykzlg0dj-fsnotify-0.4.1.0' '/nix/store/wlw9bihmhfdr5pl4k5zp8j63jxd8cylr-hinotify-0.4.1' '/nix/store/8nmsfwbv07fvnyq7hr1rp8bl32jy5hqr-monad-control-1.0.3.1' '/nix/store/baj56qfy0dfnp5kasxy454878j9pjgrv-transformers-base-0.4.6' '/nix/store/pvv9gyaj24ml0y1iyn7zvr4v94ljcsgs-base-orphans-0.9.1' '/nix/store/x1mgb2djis4gn3cqmfidlpzw70dbxdsr-transformers-compat-0.7.2' '/nix/store/x1mgb2djis4gn3cqmfidlpzw70dbxdsr-transformers-compat-0.7.2' '/nix/store/wh5q1qqczi0f50glcsfqf1fs9dfcjmd0-unix-compat-0.7' '/nix/store/a7la7qizxzjb7z97lq01z4gw8jhp121l-terminal-size-0.3.4' '/nix/store/l9sxfp8hxxf2nbfv1g31lcir8gqrcyjk-ghcid-0.8.9-bin' '/nix/store/ycy6k3p91s6w4nvidhm9rb2inmmy342l-haskell-language-server-2.4.0.0' '/nix/store/39w18wppiv87s6npdy0gm0g1zhwcwq7h-aeson-pretty-0.8.9' '/nix/store/x2jkqdy6nfdkshn9cj2mgw0zmkfn39rg-aeson-2.1.2.1' '/nix/store/9hcmngg8z1rkl26bc2rzbsri3ab4dgzs-attoparsec-0.14.4' '/nix/store/bichw287mqjywp2gsl0ibmv7kmri7yl3-scientific-0.3.7.0' '/nix/store/kl9wlqg4s4r295gnj8j81nzj9lc1nd8b-integer-logarithms-1.0.3.1' '/nix/store/93219li1jq15013lf5nc2kqql3w747r1-primitive-0.8.0.0' '/nix/store/w1xgrfi7jp71q45bx27dcaracxnwwsjv-base-compat-batteries-0.12.3' '/nix/store/cvr8aimw0f00q4787s8gwxj6q5m1746a-base-compat-0.12.3' '/nix/store/9cz1fdbvabn0im11xga1avhdbcg8qrlm-data-fix-0.3.2' '/nix/store/va5lq14l1mz2nlqppa51in7vkscgrj2j-dlist-1.0' '/nix/store/48indjqxgq2qbrrvrc8r8aj6la8rmfd1-generically-0.1.1' '/nix/store/6skdsrws065w363nf3b2yg1wb1i2f5dg-indexed-traversable-0.1.3' '/nix/store/nzn9a15j4668v6h6il5xsrm84ksmlzhd-foldable1-classes-compat-0.1' '/nix/store/sk7appb3pby07d0z825274rrr0a9b7lb-tagged-0.8.7' '/nix/store/by1kmnwna3dzcjyximjz4lciyzblwmhd-OneTuple-0.4.1.1' '/nix/store/kicjcr9kjan8jpd7bpqplx727y33qrqr-QuickCheck-2.14.3' '/nix/store/f5wd69ymasxdypaahss1av3fi1ayqw1l-semialign-1.3' '/nix/store/ravi3jhs70n1z1lxg90fkwhxnb2qkb4x-indexed-traversable-instances-0.1.1.2' '/nix/store/7g4q6659frv4slsfw2gxlr3b4w8f293p-unordered-containers-0.2.19.1' '/nix/store/bxaf56bnb7nw0gr801skfcdrq5rfyqqa-vector-0.13.1.0' '/nix/store/qplxjm9j71fl2vw71n7sqwbdib7y8cx0-vector-stream-0.1.0.0' '/nix/store/wl7j3y8xww1yrr1a49l6a44ilacgr8z7-semigroupoids-5.3.7' '/nix/store/b1y74phhh9x7p37rry05q18sj52gj6v7-bifunctors-5.5.15' '/nix/store/yi5r1sk8iqv595d0g724h0xh0h7agz4q-comonad-5.0.8' '/nix/store/w7vlvsan98lqxmq173206yxjbwymcqp2-distributive-0.6.2.1' '/nix/store/v66gfck08srf4061fsaffw5llpxngab1-th-abstraction-0.4.5.0' '/nix/store/bnfix9g7wplya4cd4gm10ylk9l42yly2-contravariant-1.5.5' '/nix/store/w1g0w0nzvhpra1qna586p612985pawyx-StateVar-1.2.2' '/nix/store/yvdzx5lrh4919x8lzsmksm6wk1kn8w80-these-1.2' '/nix/store/csv1l0zm6vp0xl0xmci7x7i5xhblq86z-assoc-1.1' '/nix/store/x3cb16xn8cg214z2fwwdk89aa7kr6wvi-strict-0.5' '/nix/store/ayz4xj26qs35kjzka3wqspqiq5x56sb6-text-short-0.1.5' '/nix/store/w3s5k3d7h636xbj5cp3j8bz4mfniybpi-time-compat-1.9.6.1' '/nix/store/qbbdid7y1kyzrx6dyxs43f1bjir2x3ml-uuid-types-1.0.5.1' '/nix/store/hzb2gc76akx27d3rplxn6s2hb85ih5cp-witherable-0.4.2' '/nix/store/hq6n8lwh9vhrbsv39pmbb6agcdw1mdmk-cryptohash-sha1-0.11.101.0' '/nix/store/abpb21lm5rf6mr0d78c9kvhb6g3r221q-data-default-0.7.1.1' '/nix/store/1s9gccjiv21j7zgifvwp7jf199hf2cpy-data-default-class-0.1.2.0' '/nix/store/miq1gz8n4ng4ljwyc0r9v0g6m3cbdd0r-data-default-instances-containers-0.0.1' '/nix/store/80piib2cjzz7pbbnnv2ilf8l3qi666fj-data-default-instances-dlist-0.0.1' '/nix/store/c8mwk64awxa33nch3jrxwqxk9g6x93ap-data-default-instances-old-locale-0.0.1' '/nix/store/hxashwdb4knakrpg7yv7rnswpfx1h4wa-old-locale-1.0.0.7' '/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8' '/nix/store/kpqrp4rjpnjdw3gpiz8gsbsgy6bqmbi3-ghcide-2.4.0.0' '/nix/store/fii615m2pf3g5jj1v5w772824ahxrvjn-case-insensitive-1.2.1.0' '/nix/store/02nkl2zchlmjrvxbpi739c02m3sqia29-co-log-core-0.3.2.1' '/nix/store/gbpkq197zicj665miz11ijy7k7g01dz5-dependent-map-0.4.0.0' '/nix/store/gzn7qcy5yc54nyp56336sin3lhapww9a-constraints-extras-0.4.0.0' '/nix/store/713gkzdnx3xqkpkr9hp01jfd347bcarc-constraints-0.13.4' '/nix/store/ss7jxsdvx7589kxjjrjh62iyhmqj87m5-type-equality-1' '/nix/store/r9s1zy2malpx4c5l8lqis0x0lld87g8m-dependent-sum-0.7.2.0' '/nix/store/67djpmq6ld33qkrayxhn4jkni43mnchn-some-1.0.4.1' '/nix/store/l78yhx8l74b6l9h7qr46fb6ypp1v61gd-Diff-0.4.1' '/nix/store/4c1y4yjxry8g523rh8xdlp6az2xb9jx2-enummapset-0.7.1.0' '/nix/store/3mwqljsralgpf4hvckhzyzijm93ly2v8-fingertree-0.1.5.0' '/nix/store/x9zbp4vaf241dyaciwh5r2c0vmnsrr5r-focus-1.0.3.2' '/nix/store/qr4fjr7iw6q37a2vs3940r156rg3nspx-ghc-check-0.5.0.8' '/nix/store/ldgk9yz5m5qrawcyppv7iz58cydfpr41-ghc-paths-0.1.0.12' '/nix/store/ldgk9yz5m5qrawcyppv7iz58cydfpr41-ghc-paths-0.1.0.12' '/nix/store/lgnd11aj00hjq9dxw77fqp0d19p45jd8-ghc-trace-events-0.1.2.7' '/nix/store/vg36pajhazrfll3ddijjl85sq78kzk1m-Glob-0.10.2' '/nix/store/gjr0kpps8cgqyr9j54c71ksf5dj1wx1i-haddock-library-1.11.0' '/nix/store/c3r1zn7w2r1imdppahgx10f33xrm4m4r-hie-bios-0.12.0' '/nix/store/qv9fadi17nmrfwcq5ny8pfydf6w3nq0c-conduit-1.3.5' '/nix/store/bvlcsxpkhssij49sidmdmzg8ypxrpp2h-mono-traversable-1.0.15.3' '/nix/store/6r5wl743sfryykigzm0yjviiqh19pwq6-split-0.2.3.5' '/nix/store/gqg0n1hcm7mzivbgq9ldr9jkcn9v42m7-vector-algorithms-0.9.0.1' '/nix/store/d7h24l8bwjqc8345cmll57idyl1qfyv4-bitvec-1.1.5.0' '/nix/store/mr8xcz5z50sra0ic1q1p4nw70bpm2zn3-resourcet-1.2.6' '/nix/store/xvqg1k17l9m7y4jg2sskl1bq0r9f14q9-unliftio-core-0.2.1.0' '/nix/store/xvqg1k17l9m7y4jg2sskl1bq0r9f14q9-unliftio-core-0.2.1.0' '/nix/store/58rdr1l6lw0srly3jjyaw0g7s3f2lx0i-conduit-extra-1.3.6' '/nix/store/lbg7lk69bwbdkghriqsfhigqd3mxzgr1-streaming-commons-0.2.2.6' '/nix/store/c90g95jsdzylcbhksiqpayklc4n9b4rz-typed-process-0.2.11.1' '/nix/store/h5n8b2zcw5sfsnwv1gs2h5j9cl1jk56k-file-embed-0.0.15.0' '/nix/store/9mc9mz9nfx2q85dxpdm9zjxw9hk23qsz-prettyprinter-1.7.1' '/nix/store/q77w911aaw289x5326f1qx26wyvls3vr-temporary-1.3' '/nix/store/yjrk71awz8pvxqayqcxlhvd5gn9xxba8-yaml-0.11.11.2' '/nix/store/v0wfxyxk1dxah7dj001nx5z9jiaqcn63-libyaml-0.1.2' '/nix/store/3qcj0dndz485wlbdjp8wkypdp4nvnncp-optparse-applicative-0.17.1.0' '/nix/store/mnlah2kf89j4sjy0w1fdk7xxvnyi83d2-ansi-wl-pprint-0.6.9' '/nix/store/69223jmi91zz0a5s6ns8cl3a80a9f83l-hie-compat-0.3.1.1' '/nix/store/1wf8mhpffr6bfdn1z2ak2g932z4h4b8w-hiedb-0.4.3.0' '/nix/store/x101v1iwmm4zsmscg5mlch160rdhz1vf-algebraic-graphs-0.7' '/nix/store/mnv5icw8cpkdsk3n80j1yi0w190bc3sv-lucid-2.11.20230408' '/nix/store/zwma0xr4f2njk09bkhc23h4rvzsa6k4b-blaze-builder-0.4.2.3' '/nix/store/5hfrhchl7syifs9zbbckqkz3dlxhhika-mmorph-1.2.0' '/nix/store/g7zg8nsypzanxyxyv70x6r2z9hlza98x-sqlite-simple-0.4.18.2' '/nix/store/l7f66kibdqg9ip1za26s9kq5zcmzfa4b-blaze-textual-0.2.3.1' '/nix/store/mwqnvm7g2c1i23azhllvli08bcb4fas2-direct-sqlite-2.3.28' '/nix/store/z83pgvkr72ypbcy7r8xj8jplpyc9b22j-Only-0.1' '/nix/store/rw1xh146jgfpnmy8k4ki7b9g2jw19q07-hls-graph-2.4.0.0' '/nix/store/l83z2qxzws5a4xqvpkylm8shfy75dlm4-js-dgtable-0.5.2' '/nix/store/1ipyxgnqsf96zzcqcrdxwg1kvjzc8pv8-js-flot-0.8.3' '/nix/store/h95j7hz85m0gqza6mj6ygx7lignklz0n-js-jquery-3.3.1' '/nix/store/83ciqch1pm7rjyhy89fkfpf7bb59i305-list-t-1.0.5.7' '/nix/store/byx30h22nh1gf3fpz9c3m664prkkxdys-foldl-1.4.15' '/nix/store/3w6jhrka9bd97nq0brfk10b51n5vrgj6-profunctors-5.6.2' '/nix/store/ic3i9j590ggnn129dx3hica63jfw2dly-logict-0.8.0.0' '/nix/store/m8rz47qwcbdqj7zbkkyfjgllahvqkvfm-stm-containers-1.2.0.3' '/nix/store/xb7apwxv6x9d7svjwwsg1bj0d3qdgd7h-deferred-folds-0.9.18.5' '/nix/store/zjk4pr93pi8cik0kqzpx3v40wsw8k5km-stm-hamt-1.2.0.14' '/nix/store/glmx4zq076h4i4vw3223b1cabgr05rgx-primitive-extras-0.10.1.10' '/nix/store/3548jlnyfsnjzziq56cv3kjznhq0bgwb-cereal-0.5.8.3' '/nix/store/fhg7dw7xyzky1i7yzpc4xcbl3md3k07f-primitive-unlifted-0.1.3.1' '/nix/store/qvv5lmx6zy8fy0z71gp549a42x767025-unliftio-0.2.25.0' '/nix/store/79phn69hqw156gi5gfqagxb577g0h72f-hls-plugin-api-2.4.0.0' '/nix/store/yfffn0xgd2anm1xp5q6xd1hbqz2krr5d-hw-fingertree-0.1.2.1' '/nix/store/5xlapbsragg9ki026vily8974jzw47f1-hw-prim-0.6.3.2' '/nix/store/vxgxjrflcghlba06y44iiz4qqxsfnfjg-mmap-0.5.9' '/nix/store/z0b3c9wld298lnhrbcaqr9qf5lsmsci4-lens-5.2.3' '/nix/store/9bfmvfvmwhw80ffrlfz0r6jrrya9pjk7-call-stack-0.4.0' '/nix/store/6vnycf13wcrryaszrmjil9l928h7zpkz-free-5.1.10' '/nix/store/aqaxbxlpfq4x8y1x2f7idyqjh0gs1fr7-kan-extensions-5.2.5' '/nix/store/5gf1jnsf6jas3sw9dz35rkwbl2n6v3c5-adjunctions-4.4.2' '/nix/store/mdd9hbf4d7bd98axr2jf7j0x7s1zaa4i-semigroups-0.20' '/nix/store/8n29pr3qlcycdrx9h8jbbqdgbyn2gdi1-void-0.7.3' '/nix/store/wjmpv8z3n74s8424dd2pfnf2cdd4wjnb-invariant-0.6.2' '/nix/store/v2m43kp6p3hccjm04drkb3x36f493mlp-parallel-3.2.2.0' '/nix/store/a7xrxmqhysm474y8vz5vwgjlgbs18ajv-reflection-2.1.7' '/nix/store/2cjvwfrf7rr9dvvp1gsjwpm1i9qwimfb-lens-aeson-1.2.3' '/nix/store/sz843z98hqrkhwlffy5qy641c7nl0y9w-lsp-2.2.0.0' '/nix/store/k7nzl2123bcxijr5hvmb941z3jlkr6p1-lsp-types-2.0.2.0' '/nix/store/syp0xzpvzir8mhf4ba5k1d49hissj8mw-mod-0.2.0.1' '/nix/store/16l00svhbpdbb81i8wy25hvv5iqx0rq0-semirings-0.6' '/nix/store/a9bhwb9aym47nnanh4l4np6fam41wp2w-row-types-1.0.1.2' '/nix/store/hcq327qwrpi1w8h9ffzfjmfmjm2qinjv-generic-lens-2.2.2.0' '/nix/store/rsyxs8pczaizn93yq047whfz0q2xi09v-generic-lens-core-2.2.1.0' '/nix/store/5bawpzi16v9daj3av50na8mk1zj2c46c-indexed-profunctors-0.1.1.1' '/nix/store/9ishaqcwy24wcn1m9l1vnv423gc52m5v-safe-0.3.19' '/nix/store/hfy4b7pzwxs337sncmnpj0wyd7bw7qka-regex-1.1.0.2' '/nix/store/3f4k76xck8mcvfgqvdq8316xmx31awbn-regex-pcre-builtin-0.95.2.3.8.44' '/nix/store/px5sd3gmlm252ws6m9d20wa4aqr9d3ra-regex-tdfa-1.3.2.2' '/nix/store/v0p5byzyx4zd1s1ca4798192r8dsgwl6-time-locale-compat-0.1.1.5' '/nix/store/4rxdlihx69zpc19w25kybj6ml9mf4c5l-utf8-string-1.0.2' '/nix/store/3q5j6bc41gh95d8z66621vn32rdqx5x3-sorted-list-0.2.1.2' '/nix/store/a732vgcazyf7xxqyx77kbrdmcf9ax4zn-text-rope-0.2' '/nix/store/4d8qzcbby06kdi2wfbinpmbbm02r52ig-uuid-1.3.15' '/nix/store/6y93l92r1fz2n5qwvzwlfr1gli3jhb48-cryptohash-md5-0.11.101.0' '/nix/store/nigm742ywycmq285607nv7gk41zqdhhq-entropy-0.4.1.10' '/nix/store/gajr7a6slqqgjmcgbs9cnbm948kcq5fl-network-info-0.2.1' '/nix/store/z73m74mk7kl400yxp6sl9flca485pq0r-megaparsec-9.3.1' '/nix/store/ihrv2kmcwvzza3g7bf95vaa21arz83yb-parser-combinators-1.3.0' '/nix/store/k3npma131w6dw7vfb3jx4mjkzxb91gpc-opentelemetry-0.8.0' '/nix/store/krpz24k6a77fnm4256viwa0m8ml8gp55-implicit-hie-0.1.2.7' '/nix/store/8j2mrn8a8ap5x60xalr82zlcc4pvv8ma-filepattern-0.1.3' '/nix/store/8j2mrn8a8ap5x60xalr82zlcc4pvv8ma-filepattern-0.1.3' '/nix/store/cg5d7frw50327jm021qwafnl63mg8gkl-implicit-hie-cradle-0.5.0.1' '/nix/store/71ac90vpn54r1zh07midgjdcy6hv5xxz-prettyprinter-ansi-terminal-1.1.3' '/nix/store/rasvc7i5qcid2aajw29bgdclkqwgcg9r-syb-0.7.2.4' '/nix/store/nka4mg1kngxj2k22wb9ic1pbanb1yfvh-gitrev-1.3.1' '/nix/store/q4kq6h84nqpa0ps7flaf9c0a2yzqasn9-githash-0.1.7.0' '/nix/store/sbk9phf4rzqpyxpphlzx6l6rvvc8lymk-hls-alternate-number-format-plugin-2.4.0.0' '/nix/store/3lw894yyya7m6z0ssnxbd0fckrmxz2m0-hls-cabal-fmt-plugin-2.4.0.0' '/nix/store/7mdvms8jrq8snmy778prsh7zl6ikmd8a-process-extras-0.7.4' '/nix/store/lxw7kxn8mpz1ldiqls89y7ig751iwp70-generic-deriving-1.14.5' '/nix/store/msy3hn71dp8f1lclmn917wpk19wanzj4-ListLike-4.7.8.2' '/nix/store/kaf54hm177s2g05a3gqnmgakvwc8g8cc-fmlist-0.9.4' '/nix/store/41yvkym3nkkj98svw23w4qlssp0d8ppa-hls-cabal-plugin-2.4.0.0' '/nix/store/wr1kwnsaazlafj8c49kgxs46dmnfg8bg-hls-call-hierarchy-plugin-2.4.0.0' '/nix/store/xqi65wx8ab4j85pbqd18qv3hykcw2rpm-hls-change-type-signature-plugin-2.4.0.0' '/nix/store/vqx7d0jpci4ad1vr8cmmwcpcy2716930-hls-class-plugin-2.4.0.0' '/nix/store/n97kiyxkq3rj0asfwnfnisnc6ll15nb5-ghc-exactprint-1.6.1.3' '/nix/store/a2ql46krymn5j1k8qq1s5181qvsxf8ih-fail-4.9.0.0' '/nix/store/4x03rr2pzzd318wimbggmj4sld7gda3l-ordered-containers-0.2.3' '/nix/store/dd95bjr9m262v00j9vww1c58r54fl6mh-hls-code-range-plugin-2.4.0.0' '/nix/store/k3flskgs2wpl7s2x43nbg0yx3f57dk7h-hls-eval-plugin-2.4.0.0' '/nix/store/blhpw7i3ah8hz17fj60pwhfzz3r21hyp-pretty-simple-4.1.2.0' '/nix/store/k7nicnz5syr4v9axlp7q2hn38kq2f9gz-hls-explicit-fixity-plugin-2.4.0.0' '/nix/store/w8vjgnqijczzp45gr6gamwdswqhkd9y8-hls-explicit-imports-plugin-2.4.0.0' '/nix/store/073skj46cajgra4p76bwzm5sah83d2sr-hls-explicit-record-fields-plugin-2.4.0.0' '/nix/store/jpgi9xmp1bjv82qa20cavaq71wym0f78-hls-floskell-plugin-2.4.0.0' '/nix/store/m25nry771j06hcrfp6a3rgrj8rpjnil1-floskell-0.10.8' '/nix/store/wg2cdzq8qkwi130jd1p4c6n9h2xbw9g4-haskell-src-exts-1.23.1' '/nix/store/2sdz19qjjxxpfscq5xw66r5wqmjm7xxc-monad-dijkstra-0.1.1.4' '/nix/store/d1cakb1x6wxz6i4hm9ywjksppszhig11-psqueues-0.2.8.0' '/nix/store/f8bp6qfnlkfgqg73z2jafqdnk46lg2bl-hls-fourmolu-plugin-2.4.0.0' '/nix/store/5b5vvhzncj7zzmbd97zy1f1cpyr1r7di-fourmolu-0.14.0.0' '/nix/store/4ak6xcwlm6xchayv2bw76df6xyzgkgm0-ghc-lib-parser-9.6.3.20231014' '/nix/store/6picsjm8hkjqlda4w6rr1i3q2q7vvfh8-MemoTrie-0.6.11' '/nix/store/7aq0hnqnaq00h5bdi6w76fhv9jl8l78p-newtype-generics-0.6.2' '/nix/store/4lkzgm4rvsiy41756fas5jcyy4vbph4z-th-env-0.1.1' '/nix/store/j0i16zvv0jz4c4ix6xs37cg6wqlsyf3g-hls-gadt-plugin-2.4.0.0' '/nix/store/y8xcjhxasg3bn7skhagkrq7jlqhb8il1-hls-refactor-plugin-2.4.0.0' '/nix/store/m1xq3p34djvlr71ljmqbld4c2zkpwql5-regex-applicative-0.3.4' '/nix/store/cq4ld5x1q65acmwhakckmy0000454gsh-filtrable-0.1.6.0' '/nix/store/avjgvs065mmisir9zviyl7bi4k7xfgm5-retrie-1.2.2' '/nix/store/4z3k5wwq0ffpxm1f6glly9w3rs7irixf-random-shuffle-0.0.4' '/nix/store/qin7anvw53ng0c8qsy4ikhx9rndpvnvm-MonadRandom-0.6' '/nix/store/vh080kw2v6wng5w0ryhv1p7lrws61792-hls-hlint-plugin-2.4.0.0' '/nix/store/613mwgj3nzjs636pn7az7qj160iw3kqz-apply-refact-0.13.0.0' '/nix/store/2xcsm1pvxyxdwgd7lvwqm6bygb3cl8nd-filemanip-0.3.6.3' '/nix/store/ch6zpnvaic5503vfamvh9ikzym4rx2kq-refact-0.3.0.2' '/nix/store/cl8wbcrchw1a29xvhny0gff1gjpppd3k-uniplate-1.6.13' '/nix/store/cl8wbcrchw1a29xvhny0gff1gjpppd3k-uniplate-1.6.13' '/nix/store/i405hgm8f6ssxp6blpky846rpm6ap72i-ghc-lib-parser-ex-9.6.0.2' '/nix/store/rqqlvs9n4b867gn77mykskrxgkphpkng-hlint-3.6.1' '/nix/store/35zfcjbxh7fjcp1szc59d9wscpaajczj-cpphs-1.20.9.1' '/nix/store/3d7xaw13halqbf1z0zg4lj0ny7viwmha-polyparse-1.13' '/nix/store/3d7xaw13halqbf1z0zg4lj0ny7viwmha-polyparse-1.13' '/nix/store/73gbq7w9qd8kn9ij4ka0a97yrnx33ckx-deriving-aeson-0.2.9' '/nix/store/04miyynj9ygrsca1y5liaxas6b6s27mh-hscolour-1.24.4' '/nix/store/4lbqhvg3qp14zzj0rqxb7ywkgp2smsxr-hls-module-name-plugin-2.4.0.0' '/nix/store/6n9fznqdljy1dhxy7z3rlrp27zl9mp3d-hls-ormolu-plugin-2.4.0.0' '/nix/store/ara9c3ndzdv9a0z5f35jxipfl9kfqyli-ormolu-0.7.2.0' '/nix/store/c03cia2a5835j24fdgfk1xysf1sn80ry-ormolu-0.7.2.0-bin' '/nix/store/6yhq3dgcyzx07pw2mc1s38iw1hmrwjnh-hls-overloaded-record-dot-plugin-2.4.0.0' '/nix/store/m36cab00w27s2675a4v7abz2qbyq5zk4-hls-pragmas-plugin-2.4.0.0' '/nix/store/s6vnj8z5pi6zbgi2lb9xwmbqfka5nyzv-fuzzy-0.1.0.1' '/nix/store/i60wpxw0lya7rhpcric32cyb23qkmdw8-monoid-subclasses-1.2.4.1' '/nix/store/a87cg7mq5hgcsgcs5kndzih4h3hmnr79-commutative-semigroups-0.1.0.1' '/nix/store/fd2v8prhcrpf60avw6250x8q4vc2jqvj-primes-0.2.1.0' '/nix/store/d89phi1np0wk9n81az296gwkkyv8djx3-hls-qualify-imported-names-plugin-2.4.0.0' '/nix/store/m6rykva6f88nsxn9dz0brccwk66rprb8-hls-rename-plugin-2.4.0.0' '/nix/store/5qb6jyp9v9ix53pv9p2jwvcgg3iqa0y0-hls-retrie-plugin-2.4.0.0' '/nix/store/mgqvya20vkn8qhq4h64nrv8lkzp4hind-hls-splice-plugin-2.4.0.0' '/nix/store/fs0cpv57fsshm662xh71p25rdmdyfwc4-hls-stylish-haskell-plugin-2.4.0.0' '/nix/store/az2inb8flj6rfgcparg87qzppjfvqi7h-stylish-haskell-0.14.5.0' '/nix/store/jl5q6xgs4ijjiyh83hj2qw1amv23fcwx-HsYAML-0.2.1.3' '/nix/store/v1whaa8xs0214afd4g8909r2mfj7a68c-HsYAML-aeson-0.2.0.1' '/nix/store/v1whaa8xs0214afd4g8909r2mfj7a68c-HsYAML-aeson-0.2.0.1' '/nix/store/v1yf7b78xch608v480hq35vkzla4w35d-optparse-simple-0.1.1.4' '/nix/store/v1yf7b78xch608v480hq35vkzla4w35d-optparse-simple-0.1.1.4' '/nix/store/85jldj870vzcl72yz03labc93bwvqayx-patchelf-0.15.0' '/nix/store/9vk5fqaik9zx14zpfxipg7lxkdk8c5g9-update-autotools-gnu-config-scripts-hook' '/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh' '/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh' '/nix/store/wzdsbnv2ba3nj91aql8jjdddfmkkdh7h-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh' '/nix/store/wmknncrif06fqxa16hpdldhixk95nds0-strip.sh' '/nix/store/90h6k8ylkgn81k10190v5c9ldyjpzgl9-gcc-wrapper-12.3.0' '/nix/store/1alqjnr40dsk7cl15l5sn5y2zdxidc1v-binutils-wrapper-2.40' ) +declare -a pkgsBuildTarget=() +declare -a pkgsHostHost=('/nix/store/5i51nfixxx3p3gshkfsjj4bzp7wajwxz-ncurses-6.4' '/nix/store/9kd4bc8fpclpvf1vdwlbila71svyb6w1-libffi-3.4.4' '/nix/store/s3s7gv33p88kzbgki2bprg2a1nc7jnf8-gmp-with-cxx-6.3.0' '/nix/store/5i51nfixxx3p3gshkfsjj4bzp7wajwxz-ncurses-6.4' ) +declare -a pkgsHostTarget=() +declare -a pkgsTargetTarget=() +pname='download-hs' +export pname +declare -a postFixupHooks=('_makeSymlinksRelativeInAllOutputs' '_multioutPropagateDev' ) +postPatch='' +export postPatch +declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) +declare -a preConfigureHooks=('_multioutConfig' ) +preConfigurePhases='compileBuildDriverPhase updateAutotoolsGnuConfigScriptsPhase' +export preConfigurePhases +declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) +preInstallPhases='haddockPhase' +export preInstallPhases +prePatch='' +export prePatch +prePhases='setupCompilerEnvironmentPhase' +export prePhases +prefix='/home/jawz/Development/NixOS/scripts/download_hs/outputs/out' +declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) +propagatedBuildInputs='' +export propagatedBuildInputs +declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' ) +propagatedNativeBuildInputs='' +export propagatedNativeBuildInputs +declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) +setOutputFlags='' +export setOutputFlags +setupCompilerEnvironmentPhase='NIX_BUILD_CORES=$(( NIX_BUILD_CORES < 16 ? NIX_BUILD_CORES : 16 )) +runHook preSetupCompilerEnvironment + +echo "Build with /nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8." + + +builddir="$(mktemp -d)" +setupPackageConfDir="$builddir/setup-package.conf.d" +mkdir -p $setupPackageConfDir +packageConfDir="$builddir/package.conf.d" +mkdir -p $packageConfDir + +setupCompileFlags="-package-db=$setupPackageConfDir -j$NIX_BUILD_CORES +RTS -A64M -RTS -threaded -rtsopts" +configureFlags="--verbose --prefix=$out --libdir=\$prefix/lib/\$compiler --libsubdir=\$abi/\$libname --docdir=$doc/share/doc/download-hs-0.1.0.0 --with-gcc=$CC --package-db=$packageConfDir --ghc-options=-j$NIX_BUILD_CORES +RTS -A64M -RTS --disable-split-objs --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --ghc-option=-split-sections $configureFlags" +for p in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}"; do + # If this dependency has a package database, then copy the contents of it, +# unless it is one of our GHCs. These can appear in our dependencies when +# we are doing native builds, and they have package databases in them, but +# we do not want to copy them over. +# +# We don'\''t need to, since those packages will be provided by the GHC when +# we compile with it, and doing so can result in having multiple copies of +# e.g. Cabal in the database with the same name and version, which is +# ambiguous. +if [ -d "$p/lib/ghc-9.4.8/package.conf.d" ] && [ "$p" != "/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8" ] && [ "$p" != "/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8" ]; then + cp -f "$p/lib/ghc-9.4.8/package.conf.d/"*.conf $setupPackageConfDir/ + continue +fi + +done +ghc-pkg --package-db="$setupPackageConfDir" recache +for p in "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}"; do + # If this dependency has a package database, then copy the contents of it, +# unless it is one of our GHCs. These can appear in our dependencies when +# we are doing native builds, and they have package databases in them, but +# we do not want to copy them over. +# +# We don'\''t need to, since those packages will be provided by the GHC when +# we compile with it, and doing so can result in having multiple copies of +# e.g. Cabal in the database with the same name and version, which is +# ambiguous. +if [ -d "$p/lib/ghc-9.4.8/package.conf.d" ] && [ "$p" != "/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8" ] && [ "$p" != "/nix/store/nlb9rfsx649rzwy0gfncvwxiic96ivik-ghc-9.4.8" ]; then + cp -f "$p/lib/ghc-9.4.8/package.conf.d/"*.conf $packageConfDir/ + continue +fi + + if [ -d "$p/include" ]; then + configureFlags+=" --extra-include-dirs=$p/include" + fi + if [ -d "$p/lib" ]; then + configureFlags+=" --extra-lib-dirs=$p/lib" + fi +if [[ -d "$p/Library/Frameworks" ]]; then + configureFlags+=" --extra-framework-dirs=$p/Library/Frameworks" +fi +done +ghc-pkg --package-db="$packageConfDir" recache + +runHook postSetupCompilerEnvironment +' +export setupCompilerEnvironmentPhase +shell='/nix/store/q1c2flcykgr4wwg5a6h450hxbk4ch589-bash-5.2-p15/bin/bash' +export shell +src='/nix/store/67c54822gzblj3pzvcmazp7yfh3fhfd2-download_hs' +export src +stdenv='/nix/store/wr08yanv2bjrphhi5aai12hf2qz5kvic-stdenv-linux' +export stdenv +strictDeps='' +export strictDeps +system='x86_64-linux' +export system +declare -a unpackCmdHooks=('_defaultUnpack' ) +version='0.1.0.0' +export version +_accumFlagsArray () +{ + + local name; + if [ -n "$__structuredAttrs" ]; then + for name in "$@"; + do + local -n nameref="$name"; + flagsArray+=(${nameref+"${nameref[@]}"}); + done; + else + for name in "$@"; + do + local -n nameref="$name"; + case "$name" in + *Array) + flagsArray+=(${nameref+"${nameref[@]}"}) + ;; + *) + flagsArray+=(${nameref-}) + ;; + esac; + done; + fi +} +_activatePkgs () +{ + + local hostOffset targetOffset; + local pkg; + for hostOffset in "${allPlatOffsets[@]}"; + do + local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"; + for targetOffset in "${allPlatOffsets[@]}"; + do + (( hostOffset <= targetOffset )) || continue; + local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + activatePackage "$pkg" "$hostOffset" "$targetOffset"; + done; + done; + done +} +_addRpathPrefix () +{ + + if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then + export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}"; + fi +} +_addToEnv () +{ + + local depHostOffset depTargetOffset; + local pkg; + for depHostOffset in "${allPlatOffsets[@]}"; + do + local hookVar="${pkgHookVarVars[depHostOffset + 1]}"; + local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"; + for depTargetOffset in "${allPlatOffsets[@]}"; + do + (( depHostOffset <= depTargetOffset )) || continue; + local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"; + if [[ -z "${strictDeps-}" ]]; then + local visitedPkgs=""; + for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}"; + do + if [[ "$visitedPkgs" = *"$pkg"* ]]; then + continue; + fi; + runHook "${!hookRef}" "$pkg"; + visitedPkgs+=" $pkg"; + done; + else + local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + runHook "${!hookRef}" "$pkg"; + done; + fi; + done; + done +} +_allFlags () +{ + + export system pname name version; + for varName in $(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }'); + do + if (( "${NIX_DEBUG:-0}" >= 1 )); then + printf "@%s@ -> %q\n" "${varName}" "${!varName}" 1>&2; + fi; + args+=("--subst-var" "$varName"); + done +} +_assignFirst () +{ + + local varName="$1"; + local _var; + local REMOVE=REMOVE; + shift; + for _var in "$@"; + do + if [ -n "${!_var-}" ]; then + eval "${varName}"="${_var}"; + return; + fi; + done; + echo; + echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."; + echo " The following variables were all unset or empty:"; + echo " $*"; + if [ -z "${out:-}" ]; then + echo ' If you do not want an "out" output in your derivation, make sure to define'; + echo ' the other specific required outputs. This can be achieved by picking one'; + echo " of the above as an output."; + echo ' You do not have to remove "out" if you want to have a different default'; + echo ' output, because the first output is taken as a default.'; + echo; + fi; + return 1 +} +_callImplicitHook () +{ + + local def="$1"; + local hookName="$2"; + if declare -F "$hookName" > /dev/null; then + "$hookName"; + else + if type -p "$hookName" > /dev/null; then + source "$hookName"; + else + if [ -n "${!hookName:-}" ]; then + eval "${!hookName}"; + else + return "$def"; + fi; + fi; + fi +} +_defaultUnpack () +{ + + local fn="$1"; + local destination; + if [ -d "$fn" ]; then + destination="$(stripHash "$fn")"; + if [ -e "$destination" ]; then + echo "Cannot copy $fn to $destination: destination already exists!"; + echo "Did you specify two \"srcs\" with the same \"name\"?"; + return 1; + fi; + cp -pr --reflink=auto -- "$fn" "$destination"; + else + case "$fn" in + *.tar.xz | *.tar.lzma | *.txz) + xz -d < "$fn" | tar xf - --warning=no-timestamp + ;; + *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz) + tar xf "$fn" --warning=no-timestamp + ;; + *) + return 1 + ;; + esac; + fi +} +_doStrip () +{ + + local -ra flags=(dontStripHost dontStripTarget); + local -ra debugDirs=(stripDebugList stripDebugListTarget); + local -ra allDirs=(stripAllList stripAllListTarget); + local -ra stripCmds=(STRIP STRIP_FOR_TARGET); + local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET); + stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin}; + stripDebugListTarget=${stripDebugListTarget[*]:-}; + stripAllList=${stripAllList[*]:-}; + stripAllListTarget=${stripAllListTarget[*]:-}; + local i; + for i in ${!stripCmds[@]}; + do + local -n flag="${flags[$i]}"; + local -n debugDirList="${debugDirs[$i]}"; + local -n allDirList="${allDirs[$i]}"; + local -n stripCmd="${stripCmds[$i]}"; + local -n ranlibCmd="${ranlibCmds[$i]}"; + if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then + continue; + fi; + stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}"; + stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}"; + done +} +_eval () +{ + + if declare -F "$1" > /dev/null 2>&1; then + "$@"; + else + eval "$1"; + fi +} +_makeSymlinksRelative () +{ + + local symlinkTarget; + if [ "${dontRewriteSymlinks-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + while IFS= read -r -d '' f; do + symlinkTarget=$(readlink "$f"); + if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then + continue; + fi; + if [ ! -e "$symlinkTarget" ]; then + echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)"; + fi; + echo "rewriting symlink $f to be relative to $prefix"; + ln -snrf "$symlinkTarget" "$f"; + done < <(find $prefix -type l -print0) +} +_makeSymlinksRelativeInAllOutputs () +{ + + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" _makeSymlinksRelative; + done +} +_moveLib64 () +{ + + if [ "${dontMoveLib64-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then + return; + fi; + echo "moving $prefix/lib64/* to $prefix/lib"; + mkdir -p $prefix/lib; + shopt -s dotglob; + for i in $prefix/lib64/*; + do + mv --no-clobber "$i" $prefix/lib; + done; + shopt -u dotglob; + rmdir $prefix/lib64; + ln -s lib $prefix/lib64 +} +_moveSbin () +{ + + if [ "${dontMoveSbin-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then + return; + fi; + echo "moving $prefix/sbin/* to $prefix/bin"; + mkdir -p $prefix/bin; + shopt -s dotglob; + for i in $prefix/sbin/*; + do + mv "$i" $prefix/bin; + done; + shopt -u dotglob; + rmdir $prefix/sbin; + ln -s bin $prefix/sbin +} +_moveSystemdUserUnits () +{ + + if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then + return; + fi; + if [ ! -e "${prefix:?}/lib/systemd/user" ]; then + return; + fi; + local source="$prefix/lib/systemd/user"; + local target="$prefix/share/systemd/user"; + echo "moving $source/* to $target"; + mkdir -p "$target"; + ( shopt -s dotglob; + for i in "$source"/*; + do + mv "$i" "$target"; + done ); + rmdir "$source"; + ln -s "$target" "$source" +} +_moveToShare () +{ + + if [ -n "$__structuredAttrs" ]; then + if [ -z "${forceShare-}" ]; then + forceShare=(man doc info); + fi; + else + forceShare=(${forceShare:-man doc info}); + fi; + if [[ -z "$out" ]]; then + return; + fi; + for d in "${forceShare[@]}"; + do + if [ -d "$out/$d" ]; then + if [ -d "$out/share/$d" ]; then + echo "both $d/ and share/$d/ exist!"; + else + echo "moving $out/$d to $out/share/$d"; + mkdir -p $out/share; + mv $out/$d $out/share/; + fi; + fi; + done +} +_multioutConfig () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then + return; + fi; + if [ -z "${shareDocName:-}" ]; then + local confScript="${configureScript:-}"; + if [ -z "$confScript" ] && [ -x ./configure ]; then + confScript=./configure; + fi; + if [ -f "$confScript" ]; then + local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"; + fi; + if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; + fi; + fi; + prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --oldincludedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale; + prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal +} +_multioutDevs () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then + return; + fi; + moveToOutput include "${!outputInclude}"; + moveToOutput lib/pkgconfig "${!outputDev}"; + moveToOutput share/pkgconfig "${!outputDev}"; + moveToOutput lib/cmake "${!outputDev}"; + moveToOutput share/aclocal "${!outputDev}"; + for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; + do + echo "Patching '$f' includedir to output ${!outputInclude}"; + sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f"; + done +} +_multioutDocs () +{ + + local REMOVE=REMOVE; + moveToOutput share/info "${!outputInfo}"; + moveToOutput share/doc "${!outputDoc}"; + moveToOutput share/gtk-doc "${!outputDevdoc}"; + moveToOutput share/devhelp/books "${!outputDevdoc}"; + moveToOutput share/man "${!outputMan}"; + moveToOutput share/man/man3 "${!outputDevman}" +} +_multioutPropagateDev () +{ + + if [ "$(getAllOutputNames)" = "out" ]; then + return; + fi; + local outputFirst; + for outputFirst in $(getAllOutputNames); + do + break; + done; + local propagaterOutput="$outputDev"; + if [ -z "$propagaterOutput" ]; then + propagaterOutput="$outputFirst"; + fi; + if [ -z "${propagatedBuildOutputs+1}" ]; then + local po_dirty="$outputBin $outputInclude $outputLib"; + set +o pipefail; + propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `; + set -o pipefail; + fi; + if [ -z "$propagatedBuildOutputs" ]; then + return; + fi; + mkdir -p "${!propagaterOutput}"/nix-support; + for output in $propagatedBuildOutputs; + do + echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs; + done +} +_overrideFirst () +{ + + if [ -z "${!1-}" ]; then + _assignFirst "$@"; + fi +} +_pruneLibtoolFiles () +{ + + if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; +} +_updateSourceDateEpochFromSourceRoot () +{ + + if [ -n "$sourceRoot" ]; then + updateSourceDateEpoch "$sourceRoot"; + fi +} +activatePackage () +{ + + local pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + if [ -f "$pkg" ]; then + source "$pkg"; + fi; + if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then + addToSearchPath _PATH "$pkg/bin"; + fi; + if (( hostOffset <= -1 )); then + addToSearchPath _XDG_DATA_DIRS "$pkg/share"; + fi; + if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then + addToSearchPath _HOST_PATH "$pkg/bin"; + fi; + if [[ -f "$pkg/nix-support/setup-hook" ]]; then + source "$pkg/nix-support/setup-hook"; + fi +} +addEnvHooks () +{ + + local depHostOffset="$1"; + shift; + local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]"; + local pkgHookVar; + for pkgHookVar in "${!pkgHookVarsSlice}"; + do + eval "${pkgHookVar}s"'+=("$@")'; + done +} +addToSearchPath () +{ + + addToSearchPathWithCustomDelimiter ":" "$@" +} +addToSearchPathWithCustomDelimiter () +{ + + local delimiter="$1"; + local varName="$2"; + local dir="$3"; + if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then + export "${varName}=${!varName:+${!varName}${delimiter}}${dir}"; + fi +} +appendToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if declare -p "$1" 2> /dev/null | grep -q '^'; then + type="$(declare -p "$1")"; + if [[ "$type" =~ "declare -A" ]]; then + echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2; + return 1; + else + if [[ "$type" =~ "declare -a" ]]; then + useArray=true; + else + useArray=false; + fi; + fi; + fi; + shift; + if $useArray; then + nameref=(${nameref+"${nameref[@]}"} "$@"); + else + nameref="${nameref-} $*"; + fi +} +auditTmpdir () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "checking for references to $TMPDIR/ in $dir..."; + local i; + find "$dir" -type f -print0 | while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if isELF "$i"; then + if { + printf :; + patchelf --print-rpath "$i" + } | grep -q -F ":$TMPDIR/"; then + echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/"; + exit 1; + fi; + fi; + if isScript "$i"; then + if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then + if grep -q -F "$TMPDIR/" "$i"; then + echo "wrapper script $i contains a forbidden reference to $TMPDIR/"; + exit 1; + fi; + fi; + fi; + done +} +bintoolsWrapper_addLDVars () +{ + + local role_post; + getHostRoleEnvHook; + if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib64"; + fi; + if [[ -d "$1/lib" ]]; then + local -a glob=($1/lib/lib*); + if [ "${#glob[*]}" -gt 0 ]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib"; + fi; + fi +} +buildPhase () +{ + + runHook preBuild; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom buildPhase, doing nothing"; + else + foundMakefile=1; + local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); + _accumFlagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray; + echoCmd 'build flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postBuild +} +ccWrapper_addCVars () +{ + + local role_post; + getHostRoleEnvHook; + if [ -d "$1/include" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include"; + fi; + if [ -d "$1/Library/Frameworks" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks"; + fi +} +checkPhase () +{ + + runHook preCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom checkPhase, doing nothing"; + runHook postCheck; + return; + fi; + if [[ -z "${checkTarget:-}" ]]; then + if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then + checkTarget=check; + else + if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then + checkTarget=test; + fi; + fi; + fi; + if [[ -z "${checkTarget:-}" ]]; then + echo "no check/test target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); + _accumFlagsArray makeFlags makeFlagsArray; + if [ -n "$__structuredAttrs" ]; then + flagsArray+=("${checkFlags[@]:-VERBOSE=y}"); + else + flagsArray+=(${checkFlags:-VERBOSE=y}); + fi; + _accumFlagsArray checkFlagsArray; + flagsArray+=(${checkTarget}); + echoCmd 'check flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postCheck +} +compressManPages () +{ + + local dir="$1"; + if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then + return; + fi; + echo "gzipping man pages under $dir/share/man/"; + find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | while IFS= read -r -d '' f; do + if gzip -c -n "$f" > "$f".gz; then + rm "$f"; + else + rm "$f".gz; + fi; + done; + find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do + local target; + target="$(readlink -f "$f")"; + if [ -f "$target".gz ]; then + ln -sf "$target".gz "$f".gz && rm "$f"; + fi; + done +} +configurePhase () +{ + + runHook preConfigure; + : "${configureScript=}"; + if [[ -z "$configureScript" && -x ./configure ]]; then + configureScript=./configure; + fi; + if [ -z "${dontFixLibtool:-}" ]; then + export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}"; + local i; + find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do + echo "fixing libtool script $i"; + fixLibtool "$i"; + done; + CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX); + find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;; + rm -f "$CONFIGURE_MTIME_REFERENCE"; + fi; + if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then + prependToVar configureFlags "${prefixKey:---prefix=}$prefix"; + fi; + if [[ -f "$configureScript" ]]; then + if [ -z "${dontAddDisableDepTrack:-}" ]; then + if grep -q dependency-tracking "$configureScript"; then + prependToVar configureFlags --disable-dependency-tracking; + fi; + fi; + if [ -z "${dontDisableStatic:-}" ]; then + if grep -q enable-static "$configureScript"; then + prependToVar configureFlags --disable-static; + fi; + fi; + fi; + if [ -n "$configureScript" ]; then + local -a flagsArray; + _accumFlagsArray configureFlags configureFlagsArray; + echoCmd 'configure flags' "${flagsArray[@]}"; + $configureScript "${flagsArray[@]}"; + unset flagsArray; + else + echo "no configure script, doing nothing"; + fi; + runHook postConfigure +} +consumeEntire () +{ + + if IFS='' read -r -d '' "$1"; then + echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2; + return 1; + fi +} +distPhase () +{ + + runHook preDist; + local flagsArray=(); + _accumFlagsArray distFlags distFlagsArray; + flagsArray+=(${distTarget:-dist}); + echo 'dist flags: %q' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + if [ "${dontCopyDist:-0}" != 1 ]; then + mkdir -p "$out/tarballs"; + cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs"; + fi; + runHook postDist +} +dumpVars () +{ + + if [ "${noDumpEnvVars:-0}" != 1 ]; then + export 2> /dev/null >| "$NIX_BUILD_TOP/env-vars" || true; + fi +} +echoCmd () +{ + + printf "%s:" "$1"; + shift; + printf ' %q' "$@"; + echo +} +exitHandler () +{ + + exitCode="$?"; + set +e; + if [ -n "${showBuildStats:-}" ]; then + read -r -d '' -a buildTimes < <(times); + echo "build times:"; + echo "user time for the shell ${buildTimes[0]}"; + echo "system time for the shell ${buildTimes[1]}"; + echo "user time for all child processes ${buildTimes[2]}"; + echo "system time for all child processes ${buildTimes[3]}"; + fi; + if (( "$exitCode" != 0 )); then + runHook failureHook; + if [ -n "${succeedOnFailure:-}" ]; then + echo "build failed with exit code $exitCode (ignored)"; + mkdir -p "$out/nix-support"; + printf "%s" "$exitCode" > "$out/nix-support/failed"; + exit 0; + fi; + else + runHook exitHook; + fi; + return "$exitCode" +} +findInputs () +{ + + local -r pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + local varVar="${pkgAccumVarVars[hostOffset + 1]}"; + local varRef="$varVar[$((targetOffset - hostOffset))]"; + local var="${!varRef}"; + unset -v varVar varRef; + local varSlice="$var[*]"; + case "${!varSlice-}" in + *" $pkg "*) + return 0 + ;; + esac; + unset -v varSlice; + eval "$var"'+=("$pkg")'; + if ! [ -e "$pkg" ]; then + echo "build input $pkg does not exist" 1>&2; + exit 1; + fi; + function mapOffset () + { + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi + }; + local relHostOffset; + for relHostOffset in "${allPlatOffsets[@]}"; + do + local files="${propagatedDepFilesVars[relHostOffset + 1]}"; + local hostOffsetNext; + mapOffset "$relHostOffset" hostOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + local relTargetOffset; + for relTargetOffset in "${allPlatOffsets[@]}"; + do + (( "$relHostOffset" <= "$relTargetOffset" )) || continue; + local fileRef="${files}[$relTargetOffset - $relHostOffset]"; + local file="${!fileRef}"; + unset -v fileRef; + local targetOffsetNext; + mapOffset "$relTargetOffset" targetOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + [[ -f "$pkg/nix-support/$file" ]] || continue; + local pkgNext; + read -r -d '' pkgNext < "$pkg/nix-support/$file" || true; + for pkgNext in $pkgNext; + do + findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"; + done; + done; + done +} +fixLibtool () +{ + + local search_path; + for flag in $NIX_LDFLAGS; + do + case $flag in + -L*) + search_path+=" ${flag#-L}" + ;; + esac; + done; + sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^' +} +fixupPhase () +{ + + local output; + for output in $(getAllOutputNames); + do + if [ -e "${!output}" ]; then + chmod -R u+w "${!output}"; + fi; + done; + runHook preFixup; + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" runHook fixupOutput; + done; + recordPropagatedDependencies; + if [ -n "${setupHook:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook"; + fi; + if [ -n "${setupHooks:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + local hook; + for hook in ${setupHooks[@]}; + do + local content; + consumeEntire content < "$hook"; + substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook"; + unset -v content; + done; + unset -v hook; + fi; + if [ -n "${propagatedUserEnvPkgs:-}" ]; then + mkdir -p "${!outputBin}/nix-support"; + printWords $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages"; + fi; + runHook postFixup +} +genericBuild () +{ + + export GZIP_NO_TIMESTAMPS=1; + if [ -f "${buildCommandPath:-}" ]; then + source "$buildCommandPath"; + return; + fi; + if [ -n "${buildCommand:-}" ]; then + eval "$buildCommand"; + return; + fi; + if [ -z "${phases[*]:-}" ]; then + phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}"; + fi; + for curPhase in ${phases[*]}; + do + runPhase "$curPhase"; + done +} +getAllOutputNames () +{ + + if [ -n "$__structuredAttrs" ]; then + echo "${!outputs[*]}"; + else + echo "$outputs"; + fi +} +getHostRole () +{ + + getRole "$hostOffset" +} +getHostRoleEnvHook () +{ + + getRole "$depHostOffset" +} +getRole () +{ + + case $1 in + -1) + role_post='_FOR_BUILD' + ;; + 0) + role_post='' + ;; + 1) + role_post='_FOR_TARGET' + ;; + *) + echo "binutils-wrapper-2.40: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +getTargetRole () +{ + + getRole "$targetOffset" +} +getTargetRoleEnvHook () +{ + + getRole "$depTargetOffset" +} +getTargetRoleWrapper () +{ + + case $targetOffset in + -1) + export NIX_BINTOOLS_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1 + ;; + 0) + export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 + ;; + 1) + export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1 + ;; + *) + echo "binutils-wrapper-2.40: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +installCheckPhase () +{ + + runHook preInstallCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom installCheckPhase, doing nothing"; + else + if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then + echo "no installcheck target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); + _accumFlagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray; + flagsArray+=(${installCheckTarget:-installcheck}); + echoCmd 'installcheck flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + fi; + runHook postInstallCheck +} +installPhase () +{ + + runHook preInstall; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom installPhase, doing nothing"; + runHook postInstall; + return; + else + foundMakefile=1; + fi; + if [ -n "$prefix" ]; then + mkdir -p "$prefix"; + fi; + local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); + _accumFlagsArray makeFlags makeFlagsArray installFlags installFlagsArray; + if [ -n "$__structuredAttrs" ]; then + flagsArray+=("${installTargets[@]:-install}"); + else + flagsArray+=(${installTargets:-install}); + fi; + echoCmd 'install flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + runHook postInstall +} +isELF () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [ "$magic" = 'ELF' ]; then + return 0; + else + return 1; + fi +} +isMachO () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then + return 0; + else + return 1; + fi; + fi; + fi +} +isScript () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 2 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" =~ \#! ]]; then + return 0; + else + return 1; + fi +} +mapOffset () +{ + + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi +} +moveToOutput () +{ + + local patt="$1"; + local dstOut="$2"; + local output; + for output in $(getAllOutputNames); + do + if [ "${!output}" = "$dstOut" ]; then + continue; + fi; + local srcPath; + for srcPath in "${!output}"/$patt; + do + if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then + continue; + fi; + if [ "$dstOut" = REMOVE ]; then + echo "Removing $srcPath"; + rm -r "$srcPath"; + else + local dstPath="$dstOut${srcPath#${!output}}"; + echo "Moving $srcPath to $dstPath"; + if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then + rmdir "$srcPath" --ignore-fail-on-non-empty; + if [ -d "$srcPath" ]; then + mv -t "$dstPath" "$srcPath"/*; + rmdir "$srcPath"; + fi; + else + mkdir -p "$(readlink -m "$dstPath/..")"; + mv "$srcPath" "$dstPath"; + fi; + fi; + local srcParent="$(readlink -m "$srcPath/..")"; + if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then + echo "Removing empty $srcParent/ and (possibly) its parents"; + rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true; + fi; + done; + done +} +patchELF () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "shrinking RPATHs of ELF executables and libraries in $dir"; + local i; + while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if ! isELF "$i"; then + continue; + fi; + echo "shrinking $i"; + patchelf --shrink-rpath "$i" || true; + done < <(find "$dir" -type f -print0) +} +patchPhase () +{ + + runHook prePatch; + local -a patchesArray; + if [ -n "$__structuredAttrs" ]; then + patchesArray=(${patches:+"${patches[@]}"}); + else + patchesArray=(${patches:-}); + fi; + for i in "${patchesArray[@]}"; + do + echo "applying patch $i"; + local uncompress=cat; + case "$i" in + *.gz) + uncompress="gzip -d" + ;; + *.bz2) + uncompress="bzip2 -d" + ;; + *.xz) + uncompress="xz -d" + ;; + *.lzma) + uncompress="lzma -d" + ;; + esac; + local -a flagsArray; + if [ -n "$__structuredAttrs" ]; then + flagsArray=("${patchFlags[@]:--p1}"); + else + flagsArray=(${patchFlags:--p1}); + fi; + $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}"; + done; + runHook postPatch +} +patchShebangs () +{ + + local pathName; + local update; + while [[ $# -gt 0 ]]; do + case "$1" in + --host) + pathName=HOST_PATH; + shift + ;; + --build) + pathName=PATH; + shift + ;; + --update) + update=true; + shift + ;; + --) + shift; + break + ;; + -* | --*) + echo "Unknown option $1 supplied to patchShebangs" 1>&2; + return 1 + ;; + *) + break + ;; + esac; + done; + echo "patching script interpreter paths in $@"; + local f; + local oldPath; + local newPath; + local arg0; + local args; + local oldInterpreterLine; + local newInterpreterLine; + if [[ $# -eq 0 ]]; then + echo "No arguments supplied to patchShebangs" 1>&2; + return 0; + fi; + local f; + while IFS= read -r -d '' f; do + isScript "$f" || continue; + read -r oldInterpreterLine < "$f"; + read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"; + if [[ -z "${pathName:-}" ]]; then + if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then + pathName=HOST_PATH; + else + pathName=PATH; + fi; + fi; + if [[ "$oldPath" == *"/bin/env" ]]; then + if [[ $arg0 == "-S" ]]; then + arg0=${args%% *}; + args=${args#* }; + newPath="$(PATH="${!pathName}" command -v "env" || true)"; + args="-S $(PATH="${!pathName}" command -v "$arg0" || true) $args"; + else + if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then + echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2; + exit 1; + else + newPath="$(PATH="${!pathName}" command -v "$arg0" || true)"; + fi; + fi; + else + if [[ -z $oldPath ]]; then + oldPath="/bin/sh"; + fi; + newPath="$(PATH="${!pathName}" command -v "$(basename "$oldPath")" || true)"; + args="$arg0 $args"; + fi; + newInterpreterLine="$newPath $args"; + newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}}; + if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then + if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then + echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\""; + escapedInterpreterLine=${newInterpreterLine//\\/\\\\}; + timestamp=$(stat --printf "%y" "$f"); + sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f"; + touch --date "$timestamp" "$f"; + fi; + fi; + done < <(find "$@" -type f -perm -0100 -print0) +} +patchShebangsAuto () +{ + + if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then + if [[ "$output" != out && "$output" = "$outputDev" ]]; then + patchShebangs --build "$prefix"; + else + patchShebangs --host "$prefix"; + fi; + fi +} +prependToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if declare -p "$1" 2> /dev/null | grep -q '^'; then + type="$(declare -p "$1")"; + if [[ "$type" =~ "declare -A" ]]; then + echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2; + return 1; + else + if [[ "$type" =~ "declare -a" ]]; then + useArray=true; + else + useArray=false; + fi; + fi; + fi; + shift; + if $useArray; then + nameref=("$@" ${nameref+"${nameref[@]}"}); + else + nameref="$* ${nameref-}"; + fi +} +printLines () +{ + + (( "$#" > 0 )) || return 0; + printf '%s\n' "$@" +} +printWords () +{ + + (( "$#" > 0 )) || return 0; + printf '%s ' "$@" +} +recordPropagatedDependencies () +{ + + declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated); + declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}"); + local propagatedInputsIndex; + for propagatedInputsIndex in "${!flatVars[@]}"; + do + local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]"; + local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}"; + [[ -n "${!propagatedInputsSlice}" ]] || continue; + mkdir -p "${!outputDev}/nix-support"; + printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile"; + done +} +runHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook; + for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _eval "$hook" "$@"; + done; + return 0 +} +runOneHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook ret=1; + for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + if _eval "$hook" "$@"; then + ret=0; + break; + fi; + done; + return "$ret" +} +runPhase () +{ + + local curPhase="$*"; + if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then + return; + fi; + if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then + return; + fi; + if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then + return; + fi; + if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then + return; + fi; + if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then + return; + fi; + if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then + return; + fi; + if [[ -n $NIX_LOG_FD ]]; then + echo "@nix { \"action\": \"setPhase\", \"phase\": \"$curPhase\" }" >&"$NIX_LOG_FD"; + fi; + showPhaseHeader "$curPhase"; + dumpVars; + local startTime=$(date +"%s"); + eval "${!curPhase:-$curPhase}"; + local endTime=$(date +"%s"); + showPhaseFooter "$curPhase" "$startTime" "$endTime"; + if [ "$curPhase" = unpackPhase ]; then + [ -n "${sourceRoot:-}" ] && chmod +x "${sourceRoot}"; + cd "${sourceRoot:-.}"; + fi +} +showPhaseFooter () +{ + + local phase="$1"; + local startTime="$2"; + local endTime="$3"; + local delta=$(( endTime - startTime )); + (( delta < 30 )) && return; + local H=$((delta/3600)); + local M=$((delta%3600/60)); + local S=$((delta%60)); + echo -n "$phase completed in "; + (( H > 0 )) && echo -n "$H hours "; + (( M > 0 )) && echo -n "$M minutes "; + echo "$S seconds" +} +showPhaseHeader () +{ + + local phase="$1"; + case "$phase" in + unpackPhase) + echo "unpacking sources" + ;; + patchPhase) + echo "patching sources" + ;; + configurePhase) + echo "configuring" + ;; + buildPhase) + echo "building" + ;; + checkPhase) + echo "running tests" + ;; + installPhase) + echo "installing" + ;; + fixupPhase) + echo "post-installation fixup" + ;; + installCheckPhase) + echo "running install tests" + ;; + *) + echo "$phase" + ;; + esac +} +stripDirs () +{ + + local cmd="$1"; + local ranlibCmd="$2"; + local paths="$3"; + local stripFlags="$4"; + local excludeFlags=(); + local pathsNew=; + [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1; + [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1; + local pattern; + if [ -n "${stripExclude:-}" ]; then + for pattern in "${stripExclude[@]}"; + do + excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')'); + done; + fi; + local p; + for p in ${paths}; + do + if [ -e "$prefix/$p" ]; then + pathsNew="${pathsNew} $prefix/$p"; + fi; + done; + paths=${pathsNew}; + if [ -n "${paths}" ]; then + echo "stripping (with command $cmd and flags $stripFlags) in $paths"; + local striperr; + striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')"; + find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -print0 | xargs -r -0 -n1 -- realpath -z | sort -u -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?; + [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 ); + rm "$striperr"; + find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null; + fi +} +stripHash () +{ + + local strippedName casematchOpt=0; + strippedName="$(basename -- "$1")"; + shopt -q nocasematch && casematchOpt=1; + shopt -u nocasematch; + if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then + echo "${strippedName:33}"; + else + echo "$strippedName"; + fi; + if (( casematchOpt )); then + shopt -s nocasematch; + fi +} +substitute () +{ + + local input="$1"; + local output="$2"; + shift 2; + if [ ! -f "$input" ]; then + echo "substitute(): ERROR: file '$input' does not exist" 1>&2; + return 1; + fi; + local content; + consumeEntire content < "$input"; + if [ -e "$output" ]; then + chmod +w "$output"; + fi; + substituteStream content "file '$input'" "$@" > "$output" +} +substituteAll () +{ + + local input="$1"; + local output="$2"; + local -a args=(); + _allFlags; + substitute "$input" "$output" "${args[@]}" +} +substituteAllInPlace () +{ + + local fileName="$1"; + shift; + substituteAll "$fileName" "$fileName" "$@" +} +substituteAllStream () +{ + + local -a args=(); + _allFlags; + substituteStream "$1" "$2" "${args[@]}" +} +substituteInPlace () +{ + + local -a fileNames=(); + for arg in "$@"; + do + if [[ "$arg" = "--"* ]]; then + break; + fi; + fileNames+=("$arg"); + shift; + done; + for file in "${fileNames[@]}"; + do + substitute "$file" "$file" "$@"; + done +} +substituteStream () +{ + + local var=$1; + local description=$2; + shift 2; + while (( "$#" )); do + case "$1" in + --replace) + pattern="$2"; + replacement="$3"; + shift 3; + local savedvar; + savedvar="${!var}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + if [ "$pattern" != "$replacement" ]; then + if [ "${!var}" == "$savedvar" ]; then + echo "substituteStream(): WARNING: pattern '$pattern' doesn't match anything in $description" 1>&2; + fi; + fi + ;; + --subst-var) + local varName="$2"; + shift 2; + if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then + echo "substituteStream(): ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2; + return 1; + fi; + if [ -z ${!varName+x} ]; then + echo "substituteStream(): ERROR: variable \$$varName is unset" 1>&2; + return 1; + fi; + pattern="@$varName@"; + replacement="${!varName}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var-by) + pattern="@$2@"; + replacement="$3"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + shift 3 + ;; + *) + echo "substituteStream(): ERROR: Invalid command line argument: $1" 1>&2; + return 1 + ;; + esac; + done; + printf "%s" "${!var}" +} +unpackFile () +{ + + curSrc="$1"; + echo "unpacking source archive $curSrc"; + if ! runOneHook unpackCmd "$curSrc"; then + echo "do not know how to unpack source archive $curSrc"; + exit 1; + fi +} +unpackPhase () +{ + + runHook preUnpack; + if [ -z "${srcs:-}" ]; then + if [ -z "${src:-}" ]; then + echo 'variable $src or $srcs should point to the source'; + exit 1; + fi; + srcs="$src"; + fi; + local -a srcsArray; + if [ -n "$__structuredAttrs" ]; then + srcsArray=("${srcs[@]}"); + else + srcsArray=($srcs); + fi; + local dirsBefore=""; + for i in *; + do + if [ -d "$i" ]; then + dirsBefore="$dirsBefore $i "; + fi; + done; + for i in "${srcsArray[@]}"; + do + unpackFile "$i"; + done; + : "${sourceRoot=}"; + if [ -n "${setSourceRoot:-}" ]; then + runOneHook setSourceRoot; + else + if [ -z "$sourceRoot" ]; then + for i in *; + do + if [ -d "$i" ]; then + case $dirsBefore in + *\ $i\ *) + + ;; + *) + if [ -n "$sourceRoot" ]; then + echo "unpacker produced multiple directories"; + exit 1; + fi; + sourceRoot="$i" + ;; + esac; + fi; + done; + fi; + fi; + if [ -z "$sourceRoot" ]; then + echo "unpacker appears to have produced no directories"; + exit 1; + fi; + echo "source root is $sourceRoot"; + if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then + chmod -R u+w -- "$sourceRoot"; + fi; + runHook postUnpack +} +updateAutotoolsGnuConfigScriptsPhase () +{ + + if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then + return; + fi; + for script in config.sub config.guess; + do + for f in $(find . -type f -name "$script"); + do + echo "Updating Autotools / GNU config script to a newer upstream version: $f"; + cp -f "/nix/store/c54kyc3vn0jbq5hznimvx6wz15jxw8jq-gnu-config-2023-09-19/$script" "$f"; + done; + done +} +updateSourceDateEpoch () +{ + + local path="$1"; + local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)); + local time="${res[0]//\.[0-9]*/}"; + local newestFile="${res[1]}"; + if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then + echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"; + export SOURCE_DATE_EPOCH="$time"; + local now="$(date +%s)"; + if [ "$time" -gt $((now - 60)) ]; then + echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"; + fi; + fi +} +PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}" +XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}" +export NIX_BUILD_TOP="$(mktemp -d -t nix-shell.XXXXXX)" +export TMP="$NIX_BUILD_TOP" +export TMPDIR="$NIX_BUILD_TOP" +export TEMP="$NIX_BUILD_TOP" +export TEMPDIR="$NIX_BUILD_TOP" +eval "$shellHook" diff --git a/download_hs/.envrc b/download_hs/.envrc new file mode 100644 index 0000000..1d953f4 --- /dev/null +++ b/download_hs/.envrc @@ -0,0 +1 @@ +use nix diff --git a/download_hs/CHANGELOG.md b/download_hs/CHANGELOG.md new file mode 100644 index 0000000..7a7a4e3 --- /dev/null +++ b/download_hs/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for download-hs + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/download_hs/LICENSE b/download_hs/LICENSE new file mode 100644 index 0000000..0cb1f87 --- /dev/null +++ b/download_hs/LICENSE @@ -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. diff --git a/download_hs/app/Main.hs b/download_hs/app/Main.hs new file mode 100644 index 0000000..f505467 --- /dev/null +++ b/download_hs/app/Main.hs @@ -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 diff --git a/download_hs/app/test.txt b/download_hs/app/test.txt new file mode 100755 index 0000000..b0191b8 --- /dev/null +++ b/download_hs/app/test.txt @@ -0,0 +1,2294 @@ +# https://kemono.party/gumroad/user/6935939074721 +# https://kemono.party/patreon/user/15469440 +# https://kemono.party/patreon/user/16216458 +# https://kemono.party/patreon/user/19875180 +# https://kemono.party/patreon/user/3554322 +# https://kemono.party/patreon/user/7542632 +# https://madobuchi.blogspot.com +# https://twitter.com/3INN0RD/media +# https://twitter.com/AllThingsGay6/media +# https://twitter.com/ApendiceChilen0/media +# https://twitter.com/ArtOfAsty/media +# https://twitter.com/BunnyDen_AD/media +# https://twitter.com/C0YOTEA/media +# https://twitter.com/DesignCvh/media +# https://twitter.com/FLLLYCAT/media +# https://twitter.com/IncubussyNSFW/media +# https://twitter.com/PoADnsfw/media +# https://twitter.com/StupidHorn/media +# https://twitter.com/WOLF_man3000/media +# https://twitter.com/Zumeanie/media +# https://twitter.com/_macntsh_/media +# https://twitter.com/art_geoff/media +# https://twitter.com/artgoblins/media +# https://twitter.com/darkgroan/media +# https://twitter.com/digiphim/media +# https://twitter.com/everkinged/media +# https://twitter.com/francisxiensfw/media +# https://twitter.com/nsfwkinged/media +# https://twitter.com/sockeyesalmon_/media +# https://twitter.com/theaudec/media +# https://www.instagram.com/Ammarriad1 +# https://www.instagram.com/Jorge_Amor +# https://www.instagram.com/Rouronizen +# https://www.instagram.com/_ivantao_ +# https://www.instagram.com/_jesusamador_ +# https://www.instagram.com/_oscar_martin_ +# https://www.instagram.com/absoalex +# https://www.instagram.com/adamw +# https://www.instagram.com/adrienbrody +# https://www.instagram.com/alexgarcia_web +# https://www.instagram.com/armiehammer +# https://www.instagram.com/beksinski +https://www.instagram.com/bennjordan +# https://www.instagram.com/brandbryce +# https://www.instagram.com/brianpatrickwade +# https://www.instagram.com/brunocalcantara +# https://www.instagram.com/cameron.geller +# https://www.instagram.com/canegiancane +# https://www.instagram.com/charlieberens +# https://www.instagram.com/charritopadrote +# https://www.instagram.com/chefpkcos +# https://www.instagram.com/chefschwarz +# https://www.instagram.com/chrisjmarchant +# https://www.instagram.com/claudiocsro +# https://www.instagram.com/danbilzerian +# https://www.instagram.com/danielleister76 +# https://www.instagram.com/dean_monroee +# https://www.instagram.com/deathburger +# https://www.instagram.com/decomposedtaco +# https://www.instagram.com/eastanbuli +# https://www.instagram.com/edwardquinn +# https://www.instagram.com/evanchenzo +# https://www.instagram.com/fanartshenanigans +# https://www.instagram.com/federicodordei +# https://www.instagram.com/francoisssagat +# https://www.instagram.com/francoors04 +https://www.instagram.com/frankgrillo1 +# https://www.instagram.com/gianluigibuffon +# https://www.instagram.com/golden.gully +# https://www.instagram.com/gonzo.star +# https://www.instagram.com/gregorynalbone +# https://www.instagram.com/gutmouth +# https://www.instagram.com/hasandpiker +# https://www.instagram.com/hasschagaev +# https://www.instagram.com/heartthrobanderson +# https://www.instagram.com/hoshinski333 +# https://www.instagram.com/i3adr +# https://www.instagram.com/ianbohen +# https://www.instagram.com/ianisguerrero +# https://www.instagram.com/ilyasov_n_a +# https://www.instagram.com/jaircosta19 +# https://www.instagram.com/jasantaolalla +# https://www.instagram.com/jess.weaver1221 +# https://www.instagram.com/jessechuku +# https://www.instagram.com/jjesuscorona01 +# https://www.instagram.com/karl_richard_frey +# https://www.instagram.com/kgbigelow +# https://www.instagram.com/kiku070 +# https://www.instagram.com/konstantinkamynin +# https://www.instagram.com/kyle__fox__ +# https://www.instagram.com/lasrecetasdesimon +# https://www.instagram.com/lazykingmma +# https://www.instagram.com/lievschreiber +# https://www.instagram.com/little_brakox +# https://www.instagram.com/lubomirarsov +# https://www.instagram.com/male.f33t +# https://www.instagram.com/marcoboccireal +# https://www.instagram.com/masherbalife.tandil +# https://www.instagram.com/maul_cosplay +# https://www.instagram.com/max_permyakov +# https://www.instagram.com/meanbossart +# https://www.instagram.com/megagrozov +# https://www.instagram.com/metalicecreamcomic +# https://www.instagram.com/miadarkarcher +# https://www.instagram.com/michaelmando +# https://www.instagram.com/miguelangelsilvestre +# https://www.instagram.com/mikimontllo +# https://www.instagram.com/misplacedfacetv +# https://www.instagram.com/mister_jagger +# https://www.instagram.com/mitchgerads +# https://www.instagram.com/mohammedagbadi +# https://www.instagram.com/mohammedagbadii +# https://www.instagram.com/mohsinkazmitakespictures +# https://www.instagram.com/mosquitoes_suk +# https://www.instagram.com/musclegorillarori +# https://www.instagram.com/mysmoothsole +# https://www.instagram.com/neymarjr +# https://www.instagram.com/nohealii +# https://www.instagram.com/originaljbone +# https://www.instagram.com/pg13_with_clara_and_zach +# https://www.instagram.com/primal_darknessofficial +# https://www.instagram.com/rahulkohli13 +# https://www.instagram.com/ramadandarwishh +# https://www.instagram.com/ranveersingh +# https://www.instagram.com/rayito +# https://www.instagram.com/realjessemetcalfe +# https://www.instagram.com/rennydraws +# https://www.instagram.com/rhyscoiro +# https://www.instagram.com/rokofearon +# https://www.instagram.com/romellchopraa +# https://www.instagram.com/ronan.toulhoat +# https://www.instagram.com/roxie.vizcarra +# https://www.instagram.com/santiagocaruso.art +# https://www.instagram.com/sebchabal +# https://www.instagram.com/soypiettro +# https://www.instagram.com/supdaily +# https://www.instagram.com/tamanduaexpeditions +# https://www.instagram.com/the_blacklist_underground +# https://www.instagram.com/thegallowboob +# https://www.instagram.com/thekavernacle +# https://www.instagram.com/thomastheboxer +# https://www.instagram.com/turboturabicamkran +# https://www.instagram.com/vivanbhathena_official +# https://www.instagram.com/vladimirchebakov +# https://www.instagram.com/waynebarlowe_thedarkness +# https://www.instagram.com/wismichu +# https://www.instagram.com/yourfriendkevin_ +# https://www.instagram.com/zacmorriss_ +## https://twitter.com/4444SKIN/media +https://baraag.net/@ryephero +https://boundartwork.blogspot.com +https://e621.net/posts?tags=balthromaw&page=1 +https://e621.net/posts?tags=beralin&page=1 +https://e621.net/posts?tags=cernunnos&page=1 +https://e621.net/posts?tags=fav%3AJohnNeal911 +https://e621.net/posts?tags=helloanonmyoldfriend +https://e621.net/posts?tags=incineroar&page=1 +https://e621.net/posts?tags=lt._john_llama +https://e621.net/posts?tags=oscar_%28fortnite%29 +https://e621.net/posts?tags=tomayto_%28tuhmayto%29+ +https://e621.net/posts?tags=tony_the_tiger+ +https://e621.net/posts?tags=toxtricity&page=1 +https://e621.net/posts?tags=wolf_o%27donnell&page=1 +https://furaffinity.net/user/tuhmayto +https://galoogamelady.tumblr.com +https://gorlassar.tumblr.com +https://gorspn-archive.tumblr.com +https://imrandymeeks.blogspot.com +https://instagram.com/rivaeri +https://kemono.party/fanbox/user/42389370 +https://kemono.party/fanbox/user/8781514 +https://kemono.party/gumroad/user/2435199376393 +https://kemono.party/patreon/user/11561197 +https://kemono.party/patreon/user/13141149 +https://kemono.party/patreon/user/150461 +https://kemono.party/patreon/user/18106236 +https://kemono.party/patreon/user/19442529 +https://kemono.party/patreon/user/19469973 +https://kemono.party/patreon/user/19823780 +https://kemono.party/patreon/user/20273175 +https://kemono.party/patreon/user/2300658 +https://kemono.party/patreon/user/2322961 +https://kemono.party/patreon/user/2491308 +https://kemono.party/patreon/user/2758384 +https://kemono.party/patreon/user/27829854 +https://kemono.party/patreon/user/28002571 +https://kemono.party/patreon/user/2831447 +https://kemono.party/patreon/user/2874302 +https://kemono.party/patreon/user/3144190 +https://kemono.party/patreon/user/3557895 +https://kemono.party/patreon/user/4823783 +https://kemono.party/patreon/user/485935 +https://kemono.party/patreon/user/50597442 +https://kemono.party/patreon/user/55319121 +https://kemono.party/patreon/user/58041575 +https://kemono.party/patreon/user/58930212 +https://kemono.party/patreon/user/956304 +https://konnestrasketch.tumblr.com +https://littledozerdraws.tumblr.com +https://logankomix.blogspot.com +https://men.wikifeet.com/%C3%81lex_Garc%C3%ADa +https://men.wikifeet.com/Aaron_Marino +https://men.wikifeet.com/Aaron_Rodgers +https://men.wikifeet.com/Aaron_Taylor-Johnson +https://men.wikifeet.com/Adam_Collard +https://men.wikifeet.com/Adam_Ellis +https://men.wikifeet.com/Adam_Levine +https://men.wikifeet.com/Adam_Tsekhman +https://men.wikifeet.com/Alfonso_G%C3%B3mez_Sempere +https://men.wikifeet.com/Alfonso_Herrera +https://men.wikifeet.com/Andre_Hamann +https://men.wikifeet.com/Andrew_Tate +https://men.wikifeet.com/Angus_Stone +https://men.wikifeet.com/Armie_Hammer +https://men.wikifeet.com/Ben_Affleck +https://men.wikifeet.com/Berto_Colon +https://men.wikifeet.com/Bill_Heck +https://men.wikifeet.com/Brandon_Rogers +https://men.wikifeet.com/Brant_Daugherty +https://men.wikifeet.com/Brian_Patrick_Wade +https://men.wikifeet.com/Brian_Thomas_Smith +https://men.wikifeet.com/C_M__Punk +https://men.wikifeet.com/C__Tangana +https://men.wikifeet.com/Chad_Johnson +https://men.wikifeet.com/Charlie_White(2) +https://men.wikifeet.com/Cheyenne_Jackson +https://men.wikifeet.com/Chris_Damned +https://men.wikifeet.com/Chris_Hemsworth +https://men.wikifeet.com/Chris_Pratt +https://men.wikifeet.com/Chris_Thompson +https://men.wikifeet.com/Christopher_Gorham +https://men.wikifeet.com/Claudio_Castagnoli +https://men.wikifeet.com/Colby_Keller +https://men.wikifeet.com/Colin_Farrell +https://men.wikifeet.com/Colin_O'Donoghue +https://men.wikifeet.com/Conor_McGregor +https://men.wikifeet.com/Cory_Williams +https://men.wikifeet.com/Coyote_Peterson +https://men.wikifeet.com/Dan_Bilzerian +https://men.wikifeet.com/Daniel_Radcliffe +https://men.wikifeet.com/Danilo_Dal_Farra +https://men.wikifeet.com/Danilo_Grangheia +https://men.wikifeet.com/Danilo_Sacramento +https://men.wikifeet.com/Dean_Monroe +https://men.wikifeet.com/Dermot_Mulroney +https://men.wikifeet.com/Diego_Luna +https://men.wikifeet.com/Diogo_Wirmond +https://men.wikifeet.com/Dudu_Azevedo +https://men.wikifeet.com/Dylan_McDermott +https://men.wikifeet.com/Ed_Quinn +https://men.wikifeet.com/Erick_Elias +https://men.wikifeet.com/Ethan_Embry +https://men.wikifeet.com/Eugenio_Derbez +https://men.wikifeet.com/Evan_Dumouchel +https://men.wikifeet.com/Ewan_McGregor +https://men.wikifeet.com/F%C3%A9lix_Maritaud +https://men.wikifeet.com/Florian_Munteanu +https://men.wikifeet.com/Frank_Grillo +https://men.wikifeet.com/Gabriel_Chytry +https://men.wikifeet.com/Gareth_Gates +https://men.wikifeet.com/Garrett_Hedlund +https://men.wikifeet.com/Gerard_Butler +https://men.wikifeet.com/Gianmarco_Saurino +https://men.wikifeet.com/Gonzalo_Garcia_Vivanco +https://men.wikifeet.com/Hasan_Piker +https://men.wikifeet.com/Henry_Cavill +https://men.wikifeet.com/Hugh_Jackman +https://men.wikifeet.com/Hugh_Laurie +https://men.wikifeet.com/Ian_Bohen +https://men.wikifeet.com/Ianis_Guerrero +https://men.wikifeet.com/J%C3%BCrgen_Klopp +https://men.wikifeet.com/JR_Bourne +https://men.wikifeet.com/Jaime_Camil +https://men.wikifeet.com/Jake_Gyllenhaal +https://men.wikifeet.com/James_Franco +https://men.wikifeet.com/Jared_Leto +https://men.wikifeet.com/Jason_David_Frank +https://men.wikifeet.com/Jason_Momoa +https://men.wikifeet.com/Jason_Statham +https://men.wikifeet.com/Jeffrey_Dean_Morgan +https://men.wikifeet.com/Jim_Caviezel +https://men.wikifeet.com/Joe_Manganiello +https://men.wikifeet.com/Joe_Rogan +https://men.wikifeet.com/John_Leguizamo +https://men.wikifeet.com/Jon_Hamm +https://men.wikifeet.com/Jonathan_Kite +https://men.wikifeet.com/Juan_Betancourt +https://men.wikifeet.com/Juan_Pablo_Medina +https://men.wikifeet.com/Justin_Theroux +https://men.wikifeet.com/Karl_Urban +https://men.wikifeet.com/Liam_Hemsworth +https://men.wikifeet.com/Liev_Schreiber +https://men.wikifeet.com/Linus_Sebastian +https://men.wikifeet.com/Lionel_Messi +https://men.wikifeet.com/Marco_Bocci +https://men.wikifeet.com/Mario_Cimarro +https://men.wikifeet.com/Mark_Deklin +https://men.wikifeet.com/Matt_Damon +https://men.wikifeet.com/Matt_Ryan(2) +https://men.wikifeet.com/Michael_Fassbender +https://men.wikifeet.com/Michael_Mando +https://men.wikifeet.com/Miguel_%C3%81ngel_Silvestre +https://men.wikifeet.com/Miguel_Rodarte +https://men.wikifeet.com/Mishka_Shubaly +https://men.wikifeet.com/Mohammed_Salah +https://men.wikifeet.com/Neymar +https://men.wikifeet.com/Nick_Zano +https://men.wikifeet.com/Nikolaj_Coster-Waldau +https://men.wikifeet.com/Oliver_Jackson-Cohen +https://men.wikifeet.com/Omar_Chaparro +https://men.wikifeet.com/Oscar_Isaac +https://men.wikifeet.com/Osvaldo_Benavides +https://men.wikifeet.com/Pablo_Montero +https://men.wikifeet.com/Pablo_Schreiber +https://men.wikifeet.com/Patrick_Beach +https://men.wikifeet.com/Patrick_J__Adams +https://men.wikifeet.com/Pep_Guardiola +https://men.wikifeet.com/Rahul_Kohli +https://men.wikifeet.com/Ranveer_Singh +https://men.wikifeet.com/Rhett_McLaughlin +https://men.wikifeet.com/Rhys_Coiro +https://men.wikifeet.com/Ricardo_Franco +https://men.wikifeet.com/Rick_Gonzalez +https://men.wikifeet.com/Ricky_Larkin +https://men.wikifeet.com/Ricky_Martin +https://men.wikifeet.com/Rodrigo_Casc%C3%B3n +https://men.wikifeet.com/Russell_Brand +https://men.wikifeet.com/Rusty_Joiner +https://men.wikifeet.com/Ryan_Gosling +https://men.wikifeet.com/Ryan_Hoffman(2) +https://men.wikifeet.com/Ryan_Reynolds +https://men.wikifeet.com/Sean_Patrick_Flanery +https://men.wikifeet.com/Sergio_Ramos +https://men.wikifeet.com/Sharlto_Copley +https://men.wikifeet.com/Shia_LaBeouf +https://men.wikifeet.com/Simon_Baker +https://men.wikifeet.com/Tenoch_Huerta +https://men.wikifeet.com/Tiziano_Ferro +https://men.wikifeet.com/Tom_Ellis +https://men.wikifeet.com/Tom_Hardy +https://men.wikifeet.com/Travis_Stork +https://men.wikifeet.com/Turabi_%C3%87amkiran +https://men.wikifeet.com/Tyler_Hoechlin +https://men.wikifeet.com/William_Osman +https://men.wikifeet.com/Zac_Efron +https://men.wikifeet.com/Zachary_Levi +https://mobile.twitter.com/SexArcade/media +https://mobile.twitter.com/dopanin/media +https://mobile.twitter.com/khyleri/media +https://rule34.paheal.net/post/list/Adray_Lasbard/1 +https://rule34.paheal.net/post/list/Aizenhower/1 +https://rule34.paheal.net/post/list/All_Saints_Street/1 +https://rule34.paheal.net/post/list/Asuma_Sarutobi/1 +https://rule34.paheal.net/post/list/Ben_10%2C000/1 +https://rule34.paheal.net/post/list/Brimstone/1 +https://rule34.paheal.net/post/list/Byron/1 +https://rule34.paheal.net/post/list/Captain_Haddock/1 +https://rule34.paheal.net/post/list/Clay_Calloway/1 +https://rule34.paheal.net/post/list/Darkest_Dungeon/1 +https://rule34.paheal.net/post/list/Darth_Maul/1 +https://rule34.paheal.net/post/list/David_King/1 +https://rule34.paheal.net/post/list/DayDreamerJim/1 +https://rule34.paheal.net/post/list/Derek_Hale/1 +https://rule34.paheal.net/post/list/Draven/1 +https://rule34.paheal.net/post/list/Dream_Daddy/1 +https://rule34.paheal.net/post/list/Eddie_Brock/1 +https://rule34.paheal.net/post/list/Headingsouthart/1 +https://rule34.paheal.net/post/list/Isshin_Kurosaki/1 +https://rule34.paheal.net/post/list/Jimmy_Crystal/1 +https://rule34.paheal.net/post/list/Joel_Miller/1 +https://rule34.paheal.net/post/list/John_Constantine/1 +https://rule34.paheal.net/post/list/Jonathan_Reid/1 +https://rule34.paheal.net/post/list/KGBigelow/1 +https://rule34.paheal.net/post/list/Kano/1 +https://rule34.paheal.net/post/list/Lobo/1 +https://rule34.paheal.net/post/list/Lt%5Ed_John_Llama/1 +https://rule34.paheal.net/post/list/Midnighter/1 +https://rule34.paheal.net/post/list/Peter_Hale/1 +https://rule34.paheal.net/post/list/Reaper/1 +https://rule34.paheal.net/post/list/Simon_Riley +https://rule34.paheal.net/post/list/Simon_Riley/1 +https://rule34.paheal.net/post/list/Skeletor/1 +https://rule34.paheal.net/post/list/Stabbington_Brothers/1 +https://rule34.paheal.net/post/list/Sylas/1 +https://rule34.paheal.net/post/list/The_Bad_Guys/1 +https://rule34.paheal.net/post/list/Uvogin/1 +https://rule34.paheal.net/post/list/Vaas_Montenegro/1 +https://rule34.paheal.net/post/list/Vampyr/1 +https://rule34.paheal.net/post/list/archie/1 +https://rule34.paheal.net/post/list/balthromaw/1 +https://rule34.paheal.net/post/list/bigby_wolf/1 +https://rule34.paheal.net/post/list/free/1 +https://rule34.paheal.net/post/list/furryrevolution/1 +https://rule34.paheal.net/post/list/hellboy/1 +https://rule34.paheal.net/post/list/kupopo/1 +https://rule34.paheal.net/post/list/matt/1 +https://rule34.paheal.net/post/list/sabretooth/1 +https://rule34.paheal.net/post/list/schizoid/1 +https://rule34.paheal.net/post/list/scott_howl/1 +https://rule34.paheal.net/post/list/solid_snake/1 +https://rule34.paheal.net/post/list/thor/1 +https://rule34.paheal.net/post/list/tuhmayto/1 +https://rule34.paheal.net/post/list/venom/1 +https://rule34.paheal.net/post/list/wolverine/1 +https://rule34.xxx/index.php?page=post&s=list&tags=smith_%28ardp13%29 +https://rule34.xxx/index.php?page=post&s=list&tags=tuhmayto +https://scuttlebuttin.tumblr.com +https://starfleetspectre.tumblr.com +https://thedirtierdraws.tumblr.com +https://twitter.com/01801800a/media +https://twitter.com/0414chained/media +https://twitter.com/060satt/media +https://twitter.com/0h_lenny/media +https://twitter.com/1022curses/media +https://twitter.com/109ddong/media +https://twitter.com/10wartz/media +https://twitter.com/19Gecko/media +https://twitter.com/1kogito1/media +https://twitter.com/2thickscoops/media +https://twitter.com/34AM_/media +https://twitter.com/3819asfd0/media +https://twitter.com/3GoblinsInACoat/media +https://twitter.com/3_333y/media +https://twitter.com/3dPendejo/media +https://twitter.com/3innord/media +https://twitter.com/4nt_0n3/media +https://twitter.com/5i2ish/media +https://twitter.com/66flP12jdVDngss/media +https://twitter.com/79njay/media +https://twitter.com/85Jsh/media +https://twitter.com/9KLIPSE/media +https://twitter.com/ARTboba/media +https://twitter.com/ARun_six/media +https://twitter.com/AbsolumArt/media +https://twitter.com/AdamDragonn/media +https://twitter.com/AdamGraphite/media +https://twitter.com/AdamTGorham/media +https://twitter.com/Addictionadd2/media +https://twitter.com/Adios55582544/media +https://twitter.com/AeronDusk/media +https://twitter.com/AetherOtter/media +https://twitter.com/AidenLydiaSFW/media +https://twitter.com/AkeNsfw/media +https://twitter.com/AlexineSkiba/media +https://twitter.com/AliGotBack/media +https://twitter.com/Alien_GJ/media +https://twitter.com/Aliiwa/media +https://twitter.com/Alu379/media +https://twitter.com/AmeMomamo/media +https://twitter.com/AmonSyd/media +https://twitter.com/AnOrcWithHooves/media +https://twitter.com/Anchi_Angelina/media +https://twitter.com/Andrea_Chiampo/media +https://twitter.com/Angel_lazzu/media +https://twitter.com/AngeloFalls/media +https://twitter.com/Ankkhell/media +https://twitter.com/Anon14251/media +https://twitter.com/ApraxValith/media +https://twitter.com/ArdentKa/media +https://twitter.com/ArtByFab/media +https://twitter.com/ArtMovd/media +https://twitter.com/ArtYows/media +https://twitter.com/Art_of_Lovelies/media +https://twitter.com/ArtofAsmodis/media +https://twitter.com/AshenDawger/media +https://twitter.com/Azzitgearhead/media +https://twitter.com/BAR7l3U8bNHpiEt/media +https://twitter.com/BARAMATTart/media +https://twitter.com/BARAyot/media +https://twitter.com/BK_mita/media +https://twitter.com/BLAlexanderArt/media +https://twitter.com/Bactover/media +https://twitter.com/Bad_Bovine/media +https://twitter.com/Bak60653570/media +https://twitter.com/BakkuNSFW/media +https://twitter.com/BananaJeff1/media +https://twitter.com/Banana_da_boi/media +https://twitter.com/Banksy5057/media +https://twitter.com/BaraBoy__/media +https://twitter.com/Baramonsters18/media +https://twitter.com/Bayushi6/media +https://twitter.com/BearSketch/media +https://twitter.com/BeastSauc3/media +https://twitter.com/BeastSoulArt/media +https://twitter.com/BeatrizRebolloM/media +https://twitter.com/Beau_555/media +https://twitter.com/BeefflavorChips/media +https://twitter.com/Beetleboink/media +https://twitter.com/BeinosukeE/media +https://twitter.com/BenoitXie/media +https://twitter.com/BigBadYote/media +https://twitter.com/BigSunSfm/media +https://twitter.com/Billmund/media +https://twitter.com/BiteDiamond/media +https://twitter.com/BlackClownOwO/media +https://twitter.com/Blatterbury_s/media +https://twitter.com/BleydhDu/media +https://twitter.com/BlitzTurner/media +https://twitter.com/Blu_esh/media +https://twitter.com/BlueMoonBroski/media +https://twitter.com/BoJensenXXX/media +https://twitter.com/BodiesDesired/media +https://twitter.com/BonfireDemon/media +https://twitter.com/Boramriel/media +https://twitter.com/BorkThunder/media +https://twitter.com/Brucedraws/media +https://twitter.com/BrukaJones/media +https://twitter.com/BubbaGummYeen/media +https://twitter.com/BurntBitters/media +https://twitter.com/Burrserk/media +https://twitter.com/ButyrumB/media +https://twitter.com/CB_PhilChambers/media +https://twitter.com/CHEFPK3/media +https://twitter.com/C_andreartz/media +https://twitter.com/CandyTablet/media +https://twitter.com/CarlosfeetXX/media +https://twitter.com/CastleChaythe/media +https://twitter.com/CationAlfa/media +https://twitter.com/Catto_AD/media +https://twitter.com/Cbotme/media +https://twitter.com/CeleryMan6/media +https://twitter.com/ChainlinkCharm/media +https://twitter.com/ChanFleshpng/media +https://twitter.com/ChaosTeeth/media +https://twitter.com/CharlyBirb/media +https://twitter.com/Chirenbo/media +https://twitter.com/ChonkyJohn/media +https://twitter.com/Chotterii/media +https://twitter.com/ChrinosArt/media +https://twitter.com/ChrisJInFiction/media +https://twitter.com/Chris_SDD/media +https://twitter.com/Chriscosplay91/media +https://twitter.com/ChubbyBeast/media +https://twitter.com/ChuchuGelee/media +https://twitter.com/CiYishu/media +https://twitter.com/Citrine_Lion/media +https://twitter.com/CobbyNsfw/media +https://twitter.com/CockGoblin6669/media +https://twitter.com/CodisNumber/media +https://twitter.com/Colart606/media +https://twitter.com/Connivingrat1/media +https://twitter.com/CoranStone/media +https://twitter.com/Cougar_Boss/media +https://twitter.com/CreatureXIII/media +https://twitter.com/Crescent_YeenAD/media +https://twitter.com/Crispyy_art/media +https://twitter.com/CristianSamXXX/media +https://twitter.com/CurajaCaster/media +https://twitter.com/CyWolf49/media +https://twitter.com/Cyarikar/media +https://twitter.com/D666___/media +https://twitter.com/DAOpenpen/media +https://twitter.com/DKSideDiscovery/media +https://twitter.com/DOGISWHO/media +https://twitter.com/DREAMPlPE/media +https://twitter.com/Da_Ddy22/media +https://twitter.com/Dads4skin/media +https://twitter.com/DaftPatriot/media +https://twitter.com/Dahc40707850/media +https://twitter.com/DailySylas/media +https://twitter.com/DanComicLeister/media +https://twitter.com/DaniWarhead/media +https://twitter.com/DaniloAntoniuc1/media +https://twitter.com/Danmora_c/media +https://twitter.com/DarkandGoofy/media +https://twitter.com/DarkyNaig/media +https://twitter.com/Dat_Del_luna/media +https://twitter.com/DavidTalaski/media +https://twitter.com/Daymoon_100/media +https://twitter.com/DeadDragonP_AD/media +https://twitter.com/DeadbeatIncubus/media +https://twitter.com/DeathofselfOFCL/media +https://twitter.com/Deer_Head_Xiris/media +https://twitter.com/DeliveryYchs/media +https://twitter.com/DemiDevilQueen/media +https://twitter.com/DemonRatty_7/media +https://twitter.com/Den_Ai_D/media +https://twitter.com/DibblesArt/media +https://twitter.com/DiffusedLizard/media +https://twitter.com/Disni88/media +https://twitter.com/DizzyAndFeral/media +https://twitter.com/DomQwek/media +https://twitter.com/DomRedSins/media +https://twitter.com/DomWissel/media +https://twitter.com/Don_Conej0/media +https://twitter.com/DonutHolschtein/media +https://twitter.com/DoveGraveyard/media +https://twitter.com/Dragon_Asis/media +https://twitter.com/Dragondrawerfur/media +https://twitter.com/DrawReshi/media +https://twitter.com/Drawing_Jimmy/media +https://twitter.com/Drawller/media +https://twitter.com/DrawsEnrique/media +https://twitter.com/DreamingS0LDIER/media +https://twitter.com/DrunkenNoodler/media +https://twitter.com/DuchyRyan/media +https://twitter.com/DukeStamina/media +https://twitter.com/Dumaker/media +https://twitter.com/DunbanS/media +https://twitter.com/DustinWeaver12/media +https://twitter.com/EKMSOLDIER/media +https://twitter.com/ELK64_official/media +https://twitter.com/EdjitArts/media +https://twitter.com/EgabbacC/media +https://twitter.com/EgoThEgo/media +https://twitter.com/Ekzonzz/media +https://twitter.com/Enydimon/media +https://twitter.com/ErshebetD/media +https://twitter.com/EtceteraArt/media +https://twitter.com/Evans_Endeavors/media +https://twitter.com/FDJ_1997/media +https://twitter.com/FH_NSFW/media +https://twitter.com/FRDEART/media +https://twitter.com/FShanyar/media +https://twitter.com/FabioLi79423444/media +https://twitter.com/FagbearRob/media +https://twitter.com/FanOfThefurr/media +https://twitter.com/FanSL_Art/media +https://twitter.com/Firebreath110/media +https://twitter.com/Firen_Dan/media +https://twitter.com/FizbyDuck/media +https://twitter.com/Flamingokid13/media +https://twitter.com/FletcherSheperd/media +https://twitter.com/Forgewalfhammer/media +https://twitter.com/Fossildaddy/media +https://twitter.com/FrankHumphrey/media +https://twitter.com/FrauMizantrop/media +https://twitter.com/Freya_draws1/media +https://twitter.com/Frilled_wann/media +https://twitter.com/FullPurp/media +https://twitter.com/Fumimimimidory/media +https://twitter.com/Fungirussy/media +https://twitter.com/G0rlassar/media +https://twitter.com/GOKUJOUNOMAGURO/media +https://twitter.com/GUIHUAAAAA/media +https://twitter.com/Gabes_den/media +https://twitter.com/GaleTgrShrk/media +https://twitter.com/Gavelly/media +https://twitter.com/Gay_Zombiee/media +https://twitter.com/GeckoBara/media +https://twitter.com/GenerIButtNaked/media +https://twitter.com/Gestermek/media +https://twitter.com/Gh_himainu/media +https://twitter.com/GinaCookies/media +https://twitter.com/GinkgoSan/media +https://twitter.com/Gio_utti/media +https://twitter.com/GiulioMacaiOne/media +https://twitter.com/GlaucoSilvaArt/media +https://twitter.com/GnoyMosad/media +https://twitter.com/GoToBed_Buck/media +https://twitter.com/Golem_Butt/media +https://twitter.com/GomTang_P/media +https://twitter.com/GoranParlov/media +https://twitter.com/GothDeepie/media +https://twitter.com/Gr_Goden/media +https://twitter.com/GrahamGroans/media +https://twitter.com/GramanhFolcwald/media +https://twitter.com/Grandeur023/media +https://twitter.com/GreasWaste667/media +https://twitter.com/Greg_Senpai/media +https://twitter.com/GrufficSculpt/media +https://twitter.com/GrumpyLoaf/media +https://twitter.com/Gryphonburger/media +https://twitter.com/GyroDragonDraws/media +https://twitter.com/HEXAMANTA/media +https://twitter.com/HHOG_/media +https://twitter.com/HORIKWAWATARU/media +https://twitter.com/HOlo_Eden/media +https://twitter.com/Hadsbae/media +https://twitter.com/Hanamura_boyo/media +https://twitter.com/HanumTaza/media +https://twitter.com/HassChagaev/media +https://twitter.com/HeadingSouthart/media +https://twitter.com/Heizou112/media +https://twitter.com/Helices3D/media +https://twitter.com/HelloAnonMOF/media +https://twitter.com/Helltyde/media +https://twitter.com/HenrryXv/media +https://twitter.com/HexedCoin/media +https://twitter.com/Hichamhabchi/media +https://twitter.com/HirokunART/media +https://twitter.com/HissCovet/media +https://twitter.com/HoechlinCentral/media +https://twitter.com/HoracioFranco/media +https://twitter.com/HotSatans/media +https://twitter.com/HoudaBelgharbi/media +https://twitter.com/Huger_Smot/media +https://twitter.com/HungTwinks/media +https://twitter.com/HunkyScales/media +https://twitter.com/ILoveFSushi/media +https://twitter.com/IMPwitter/media +https://twitter.com/IalreadySaidYes/media +https://twitter.com/Iam0rang3/media +https://twitter.com/IanBohen/media +https://twitter.com/IanFayArt/media +https://twitter.com/Ibraw_draw/media +https://twitter.com/IdebaldoM/media +https://twitter.com/IdoraaD/media +https://twitter.com/Igloinor/media +https://twitter.com/IllIlllIlllIlIl/media +https://twitter.com/IllustKas/media +https://twitter.com/Im_Hasarath/media +https://twitter.com/ImatoArt/media +https://twitter.com/InCaseArt/media +https://twitter.com/InfraHaz/media +https://twitter.com/Infurnationale/media +https://twitter.com/Inklingss/media +https://twitter.com/IrAatRswt/media +https://twitter.com/Itadori_syu/media +https://twitter.com/Its_ColdPizzArt/media +https://twitter.com/Its_a_ZombieHK/media +https://twitter.com/Itymnro/media +https://twitter.com/IvanBorukl/media +https://twitter.com/JLawrence_Art/media +https://twitter.com/JUHiHUJi/media +https://twitter.com/JackalJumpy/media +https://twitter.com/Jaggiedraws/media +https://twitter.com/Jarvvitch/media +https://twitter.com/Jen_Tuyet/media +https://twitter.com/JensClaessens/media +https://twitter.com/Jezz_mons_NSFW/media +https://twitter.com/JimsDaydreams/media +https://twitter.com/Joelbearb/media +https://twitter.com/Johnarthur0/media +https://twitter.com/JojoPenguin_Art/media +https://twitter.com/JoninhaArt/media +https://twitter.com/JorgeJimenezArt/media +https://twitter.com/JubilationsArt/media +https://twitter.com/JugumPuppet/media +https://twitter.com/JvanRuiz/media +https://twitter.com/K0BIT0WANI/media +https://twitter.com/KENKUDO24/media +https://twitter.com/KX________/media +https://twitter.com/K_JukesNSFW/media +https://twitter.com/Kamyuelo/media +https://twitter.com/KapkanTops/media +https://twitter.com/KarlTrewhelaArt/media +https://twitter.com/Karlkop/media +https://twitter.com/Kaspar54195316/media +https://twitter.com/KatagawaB/media +https://twitter.com/KathuHarb/media +https://twitter.com/Katsu_Kirishi/media +https://twitter.com/KaySD999/media +https://twitter.com/Kazzeart/media +https://twitter.com/Kilioka/media +https://twitter.com/KillianRoo/media +https://twitter.com/KingBarazoku/media +https://twitter.com/KingFatKat/media +https://twitter.com/Kingarthur_I/media +https://twitter.com/KitsuneDisaster/media +https://twitter.com/KlongiArts/media +https://twitter.com/KoboldOrion/media +https://twitter.com/Koji_Benrik/media +https://twitter.com/Koji_Henrik/media +https://twitter.com/KokaKorart/media +https://twitter.com/KokuKokuBoo/media +https://twitter.com/Kora_jo/media +https://twitter.com/Kourney14/media +https://twitter.com/Kqreal/media +https://twitter.com/Kr0cc/media +https://twitter.com/Kraionis/media +https://twitter.com/Kraiton13/media +https://twitter.com/KrispyBurr/media +https://twitter.com/Kukumomoart/media +https://twitter.com/Kumo7_/media +https://twitter.com/KupoKlein/media +https://twitter.com/L0AFofBR3AD/media +https://twitter.com/L0AFofS1N/media +https://twitter.com/L0SSKIM/media +https://twitter.com/LOWCOSTCOSPLAY/media +https://twitter.com/LUKEWARMFLUKES/media +https://twitter.com/LUW_Budd/media +https://twitter.com/LaoLiShaZhuCai/media +https://twitter.com/Laproxi/media +https://twitter.com/Laserbangbang/media +https://twitter.com/LeafLion_/media +https://twitter.com/LeagueofBara/media +https://twitter.com/LehyScraps/media +https://twitter.com/LennysanArt/media +https://twitter.com/LeobaneCosplay/media +https://twitter.com/LevSusp/media +https://twitter.com/LevaSoj/media +https://twitter.com/LeviticusRott/media +https://twitter.com/Lewd_Arion/media +https://twitter.com/Lintufriikki/media +https://twitter.com/Lintufunky/media +https://twitter.com/Lion21Black/media +https://twitter.com/LitoPerezito/media +https://twitter.com/LittleDevil_Art/media +https://twitter.com/Liuoie2/media +https://twitter.com/Loboke_m/media +https://twitter.com/LoganKowalsky/media +https://twitter.com/LoganPaul/media +https://twitter.com/LunarSatyr/media +https://twitter.com/Lundinstrom_AD/media +https://twitter.com/LusterDrgn2/media +https://twitter.com/LycosaMongrel/media +https://twitter.com/LyttaV/media +https://twitter.com/MB_artblog/media +https://twitter.com/MChecC/media +https://twitter.com/MDBurkle/media +https://twitter.com/MEANBOSSart/media +https://twitter.com/MIAnewarcher/media +https://twitter.com/MRullag/media +https://twitter.com/MUNAKATA_N/media +https://twitter.com/MacheNSFW/media +https://twitter.com/MadDog_VII/media +https://twitter.com/MagreusCulpa/media +https://twitter.com/MajorMelon1/media +https://twitter.com/Mangoso_/media +https://twitter.com/Manlymomo/media +https://twitter.com/Marini_Comics/media +https://twitter.com/MarlonCores/media +https://twitter.com/Marndraws/media +https://twitter.com/MastaMiMilla/media +https://twitter.com/Matcha_ryu/media +https://twitter.com/MatsuraONI/media +https://twitter.com/MaurcioRuschel1/media +https://twitter.com/MaveX_Art/media +https://twitter.com/MaxGrecke/media +https://twitter.com/Max_Draws_Stuff/media +https://twitter.com/MaxiMelchiore/media +https://twitter.com/McMorthern/media +https://twitter.com/MelethielM/media +https://twitter.com/Melskopt/media +https://twitter.com/Melvu_Drago/media +https://twitter.com/MicDixArt/media +https://twitter.com/MiddyMidMid/media +https://twitter.com/MidnightUfficio/media +https://twitter.com/Mikae_NSFW/media +https://twitter.com/MilkyTatiana/media +https://twitter.com/Minotaur_Man/media +https://twitter.com/MishkaShubaly/media +https://twitter.com/MisplacedSIX/media +https://twitter.com/MisterEagleman/media +https://twitter.com/MisterJagger_/media +https://twitter.com/MizuShibaPL/media +https://twitter.com/MocucuMo/media +https://twitter.com/Mon3treVici/media +https://twitter.com/MonsterHoggArt/media +https://twitter.com/Moosetubator/media +https://twitter.com/MrDadlander/media +https://twitter.com/MrMattLister/media +https://twitter.com/Mr_Sharky02/media +https://twitter.com/MultiEleonora96/media +https://twitter.com/Muscle_dogXXX/media +https://twitter.com/MuskFlask/media +https://twitter.com/Muto20002/media +https://twitter.com/NN_EE_ZZ/media +https://twitter.com/NSFW_CHRSDD/media +https://twitter.com/NU_NUDO_DO/media +https://twitter.com/NakariiaLe/media +https://twitter.com/Nanadagger/media +https://twitter.com/Nano_Colors/media +https://twitter.com/Nanothehedgehog/media +https://twitter.com/NascheTheDoggo/media +https://twitter.com/NastyBurritos/media +https://twitter.com/NastyMyrkky/media +https://twitter.com/Naughty_Lizard/media +https://twitter.com/NickieCharles/media +https://twitter.com/NikonaShapka/media +https://twitter.com/Niku30_/media +https://twitter.com/NmCrimen/media +https://twitter.com/No_SWIFT/media +https://twitter.com/Nolanium/media +https://twitter.com/Nongnakk/media +https://twitter.com/Not_A_Furry_Tho/media +https://twitter.com/Notajerkreally/media +https://twitter.com/NsaifFW/media +https://twitter.com/NsfwKroc/media +https://twitter.com/NuclearGers/media +https://twitter.com/NuevoManhattan/media +https://twitter.com/NullGhostArt/media +https://twitter.com/NytNyte/media +https://twitter.com/Nyuudles/media +https://twitter.com/O_reowoof/media +https://twitter.com/Obbi_mation/media +https://twitter.com/Oboroge_chan/media +https://twitter.com/OctopusHey/media +https://twitter.com/Octopuskun2/media +https://twitter.com/OhHey_Bray/media +https://twitter.com/OlegBulakh_Art/media +https://twitter.com/OnePotatoATime/media +https://twitter.com/OpheerArt/media +https://twitter.com/OrangeLionDuke/media +https://twitter.com/OrbitsOff/media +https://twitter.com/Orkbutch/media +https://twitter.com/Orvaen/media +https://twitter.com/OsmiSan/media +https://twitter.com/Otternito/media +https://twitter.com/OverCyan/media +https://twitter.com/P0SPORO/media +https://twitter.com/P1NKMIC/media +https://twitter.com/PDave_Rainbows/media +https://twitter.com/POISONP1NK/media +https://twitter.com/PUNKsTERNE/media +https://twitter.com/Pacelic1/media +https://twitter.com/PadzyanArties/media +https://twitter.com/PalPrime1/media +https://twitter.com/Palchamon/media +https://twitter.com/PanelPerDay/media +https://twitter.com/Patient6ix/media +https://twitter.com/PattJewanarom/media +https://twitter.com/PattoArts/media +https://twitter.com/PeepoParadise/media +https://twitter.com/PencilMoose/media +https://twitter.com/Pesto_Rat/media +https://twitter.com/PeterHLMI/media +https://twitter.com/PetraCirce/media +https://twitter.com/PharaohAzuma/media +https://twitter.com/PhilipposoleV2/media +https://twitter.com/PinkGirlPen/media +https://twitter.com/PiotrJablonski_/media +https://twitter.com/PipedudeP/media +https://twitter.com/Play_Michaelous/media +https://twitter.com/Plookys/media +https://twitter.com/Poppin_Zan/media +https://twitter.com/PornPossum69/media +https://twitter.com/Pote82722945/media +https://twitter.com/PowerLesSsong/media +https://twitter.com/Pronzcrater/media +https://twitter.com/Protonano9/media +https://twitter.com/Psychic_Driving/media +https://twitter.com/PunishedCorr/media +https://twitter.com/PuppetSins/media +https://twitter.com/PuppyNolan/media +https://twitter.com/PupsOtherStuff/media +https://twitter.com/PupsPuppet/media +https://twitter.com/Pythosart/media +https://twitter.com/R30B0m0/media +https://twitter.com/RCamerion/media +https://twitter.com/RED_gart/media +https://twitter.com/RYagawa/media +https://twitter.com/RaazCat/media +https://twitter.com/Raki0v0/media +https://twitter.com/RatttBoiii/media +https://twitter.com/RazWulf/media +https://twitter.com/Razzpery/media +https://twitter.com/Reagan_Hawke/media +https://twitter.com/Reddokkaebe/media +https://twitter.com/RepzzMonster/media +https://twitter.com/RevRevington/media +https://twitter.com/Ricken_art/media +https://twitter.com/RicomolaDraws/media +https://twitter.com/RigmerD/media +https://twitter.com/RileyAvocado/media +https://twitter.com/Rin237/media +https://twitter.com/RingerNSFW/media +https://twitter.com/Riquidesenho/media +https://twitter.com/Rnarccus/media +https://twitter.com/Ro17Ho/media +https://twitter.com/RoSphix/media +https://twitter.com/Roamingthrough1/media +https://twitter.com/Robodraws/media +https://twitter.com/RodrigoDraws/media +https://twitter.com/Roku6enashi/media +https://twitter.com/Rolens_ping/media +https://twitter.com/RonDanChan/media +https://twitter.com/RonanToulhoat_/media +https://twitter.com/RookNsfw/media +https://twitter.com/Rote_Haare_blya/media +https://twitter.com/RoyGardner_XXX/media +https://twitter.com/RumLockerArt/media +https://twitter.com/RyryRoyalee/media +https://twitter.com/SIRArtwork/media +https://twitter.com/SN4KES_/media +https://twitter.com/SNKRIK/media +https://twitter.com/SO4_x_x/media +https://twitter.com/SO4_xx/media +https://twitter.com/S_Anima_/media +https://twitter.com/SadanVague/media +https://twitter.com/Saht_el_lil/media +https://twitter.com/Saltypoundcake/media +https://twitter.com/Same22Shark/media +https://twitter.com/SandAsTrevor/media +https://twitter.com/Sarkyfancypants/media +https://twitter.com/Sarquiat/media +https://twitter.com/SavageSmallwood/media +https://twitter.com/Sayuri527art/media +https://twitter.com/ScantyVitus/media +https://twitter.com/Scarlena4/media +https://twitter.com/ScouterSketches/media +https://twitter.com/Searos35/media +https://twitter.com/SeatoHao/media +https://twitter.com/SecretStash711/media +https://twitter.com/SeitanicBeef/media +https://twitter.com/Selkiro/media +https://twitter.com/SemainsArgevan/media +https://twitter.com/SergAcuna/media +https://twitter.com/Sergevna10/media +https://twitter.com/SevSpam/media +https://twitter.com/SevereniNaughty/media +https://twitter.com/Sexxymundaa/media +https://twitter.com/Sgt_NutTwister/media +https://twitter.com/Shadowwow_YC/media +https://twitter.com/ShaniceTJN/media +https://twitter.com/Sharkiedude/media +https://twitter.com/Shay40420543/media +https://twitter.com/Shibadon_Co/media +https://twitter.com/ShinOnizaru/media +https://twitter.com/ShivalreeIsDead/media +https://twitter.com/ShkretArt/media +https://twitter.com/Sho_Guru/media +https://twitter.com/ShrewHub/media +https://twitter.com/ShtarFish/media +https://twitter.com/Shugdon/media +https://twitter.com/ShypurpleS113/media +https://twitter.com/Si_Mo0n_/media +https://twitter.com/SigmoidSlurpee/media +https://twitter.com/SilencioGGA/media +https://twitter.com/Simons_bath/media +https://twitter.com/Sinz0ne/media +https://twitter.com/SirGrimmington/media +https://twitter.com/SirRakkuen/media +https://twitter.com/SkyHanuelBae/media +https://twitter.com/SlasherSample/media +https://twitter.com/SleepyPM6/media +https://twitter.com/SmagmaComics/media +https://twitter.com/Smagma_/media +https://twitter.com/SmallsRabbit/media +https://twitter.com/SmartyDragon1/media +https://twitter.com/Smau_x__/media +https://twitter.com/SmikeArt/media +https://twitter.com/SmithSWHC/media +https://twitter.com/Smkr_bulldong/media +https://twitter.com/SmuKtart/media +https://twitter.com/SmutsSmith/media +https://twitter.com/SnarkySardine/media +https://twitter.com/Snartles/media +https://twitter.com/SneakySardine/media +https://twitter.com/SoWhatBlowMe/media +https://twitter.com/SobekDraws/media +https://twitter.com/SoloEmi69/media +https://twitter.com/SoyNutts/media +https://twitter.com/SpiceSkeleton/media +https://twitter.com/SpiderzeroSimon/media +https://twitter.com/SpiritsSimple/media +https://twitter.com/SpiroHugo/media +https://twitter.com/Spooks_AD/media +https://twitter.com/Squid_noodlez/media +https://twitter.com/SquiddrzA/media +https://twitter.com/Sr_Draftgon/media +https://twitter.com/Sr_Wanza/media +https://twitter.com/StanGArtAD/media +https://twitter.com/SteamyFiend/media +https://twitter.com/SteveeArt/media +https://twitter.com/SticklysKinkdom/media +https://twitter.com/StuckInaPit/media +https://twitter.com/StuffByLiam/media +https://twitter.com/StupidTemplar/media +https://twitter.com/SubuserDale/media +https://twitter.com/SuckNis/media +https://twitter.com/Supay98/media +https://twitter.com/Superxexmachine/media +https://twitter.com/Supple_see/media +https://twitter.com/SuyoBara/media +https://twitter.com/SweetCherub_art/media +https://twitter.com/Sydebernz/media +https://twitter.com/Syllaxdraws/media +https://twitter.com/SysLocal/media +https://twitter.com/T0roii/media +https://twitter.com/TB_Choi12/media +https://twitter.com/TFiddlerArt/media +https://twitter.com/Takaxvfruizu1/media +https://twitter.com/TamVmaT/media +https://twitter.com/TatanV7/media +https://twitter.com/Tevit15/media +https://twitter.com/ThairesPaint/media +https://twitter.com/TheBlueTempest/media +https://twitter.com/TheChaseConley/media +https://twitter.com/TheGarnetDawn/media +https://twitter.com/TheHotterDancer/media +https://twitter.com/TheKinkBear/media +https://twitter.com/TheMonsterman/media +https://twitter.com/TheNeonFox/media +https://twitter.com/ThePluto_NSFW/media +https://twitter.com/TheScalyOne/media +https://twitter.com/TheWolfyBuns/media +https://twitter.com/The_WARDRAWS/media +https://twitter.com/Theeuknsoldier/media +https://twitter.com/Theochan21L/media +https://twitter.com/ThiagoLenhador/media +https://twitter.com/ThisUserIsAngry/media +https://twitter.com/This_Lukk/media +https://twitter.com/ThunderWolfDen/media +https://twitter.com/Thymilph/media +https://twitter.com/ToastyFuzzBuns/media +https://twitter.com/TobbyC2/media +https://twitter.com/TofuliciousArt/media +https://twitter.com/TofuliciousXal/media +https://twitter.com/Tojoafterdark/media +https://twitter.com/Tomotiso2k/media +https://twitter.com/TonyParkerArt/media +https://twitter.com/ToonesToons/media +https://twitter.com/Tooth611/media +https://twitter.com/ToraTGY/media +https://twitter.com/Toro_Artz/media +https://twitter.com/TrashTank/media +https://twitter.com/TravisCharest/media +https://twitter.com/TrebIack/media +https://twitter.com/Treblack14/media +https://twitter.com/TuggSraebyriah/media +https://twitter.com/TwilightPalms/media +https://twitter.com/TwistHound/media +https://twitter.com/TwistTamed/media +https://twitter.com/TysonVortex/media +https://twitter.com/UminasiMisosiru/media +https://twitter.com/Unrealien1/media +https://twitter.com/Urbanmonster413/media +https://twitter.com/Urlututu/media +https://twitter.com/Ursadgoat/media +https://twitter.com/Ursso_/media +https://twitter.com/UsingIncognito/media +https://twitter.com/UsurpThem/media +https://twitter.com/Utakoloid/media +https://twitter.com/UvaConPasas/media +https://twitter.com/VHKANSFWEER/media +https://twitter.com/VVulfBARA/media +https://twitter.com/Valdevia_Art/media +https://twitter.com/Vamp_Arts/media +https://twitter.com/Vanshoundd/media +https://twitter.com/Vapedrone/media +https://twitter.com/VeeBahrah/media +https://twitter.com/Velgaty/media +https://twitter.com/Ventes_nsfw/media +https://twitter.com/Veradia_/media +https://twitter.com/VertexLine/media +https://twitter.com/Vic_draw_betah/media +https://twitter.com/Vimeddiee/media +https://twitter.com/Vinceart2/media +https://twitter.com/VincentVinsight/media +https://twitter.com/Vinstacc/media +https://twitter.com/Virgil_630/media +https://twitter.com/VliirsBurger/media +https://twitter.com/VoidleskyK/media +https://twitter.com/VorusuArts2/media +https://twitter.com/Vulpro_Fox/media +https://twitter.com/WOODunArt/media +https://twitter.com/WarmageRagnar/media +https://twitter.com/WeMethyl/media +https://twitter.com/WhyHelbram/media +https://twitter.com/Wildlhz/media +https://twitter.com/WillEternal_/media +https://twitter.com/WiporMont/media +https://twitter.com/WolfyTheWitch/media +https://twitter.com/Wow9Bro/media +https://twitter.com/WuffinArts/media +https://twitter.com/X3077029130/media +https://twitter.com/XLLavagninoArt/media +https://twitter.com/XalsHiddenLab/media +https://twitter.com/XenoGuardian/media +https://twitter.com/Xerendario/media +https://twitter.com/Ximiandingshi/media +https://twitter.com/Y4K100Y4K/media +https://twitter.com/Yamzokk/media +https://twitter.com/YangTuokawayi/media +https://twitter.com/Yayan_0837/media +https://twitter.com/Yetigo_art/media +https://twitter.com/Yetigo_art_2/media +https://twitter.com/Yifeng_LZ/media +https://twitter.com/Yoink_0/media +https://twitter.com/YourDaddyKano/media +https://twitter.com/YourFiendKevin/media +https://twitter.com/YozoraC1/media +https://twitter.com/YuriSavagexxx/media +https://twitter.com/Yuuko891/media +https://twitter.com/YvesBalak/media +https://twitter.com/Z4Benne/media +https://twitter.com/ZIXiong_/media +https://twitter.com/ZUNDERRAT/media +https://twitter.com/ZZHENLIU/media +https://twitter.com/ZayacWonderland/media +https://twitter.com/Zephyri/media +https://twitter.com/ZestyDoesThings/media +https://twitter.com/ZiggyZagz/media +https://twitter.com/Zinthings/media +https://twitter.com/ZipperHyena/media +https://twitter.com/Zoisek1/media +https://twitter.com/_Cat_N1p_/media +https://twitter.com/_KelvinAsh_/media +https://twitter.com/_MonsterMashed/media +https://twitter.com/_Phineart/media +https://twitter.com/___hierbabuena/media +https://twitter.com/__flet/media +https://twitter.com/__kahito__/media +https://twitter.com/_beidak_/media +https://twitter.com/_daifei/media +https://twitter.com/_dirtyiron_/media +https://twitter.com/_friendlypigeon/media +https://twitter.com/_friskypigeon/media +https://twitter.com/_jazzd/media +https://twitter.com/_ohholy/media +https://twitter.com/_pocketss/media +https://twitter.com/_toraboi/media +https://twitter.com/_yawmie_/media +https://twitter.com/aKRd0QhfGKI3N8T/media +https://twitter.com/a_Sumerian0112/media +https://twitter.com/abadsmol/media +https://twitter.com/abysstot/media +https://twitter.com/acidwuff/media +https://twitter.com/adiosarts/media +https://twitter.com/adsk4/media +https://twitter.com/adultjunkdrawer/media +https://twitter.com/aervylart/media +https://twitter.com/afterdarkcoin/media +https://twitter.com/afterorder/media +https://twitter.com/aftg4rd/media +https://twitter.com/akachionmain/media +https://twitter.com/akavendeta/media +https://twitter.com/aktmnk_/media +https://twitter.com/albinohector/media +https://twitter.com/alekreyes666/media +https://twitter.com/alfeskimoo/media +https://twitter.com/all_F808Z/media +https://twitter.com/allybergundy/media +https://twitter.com/alolan_boy/media +https://twitter.com/amcelelgort10/media +https://twitter.com/amiaomaomao/media +https://twitter.com/amo9612/media +https://twitter.com/andrefil360/media +https://twitter.com/anesquaredd/media +https://twitter.com/anotherbluhusky/media +https://twitter.com/ans_draws/media +https://twitter.com/anthyutena/media +https://twitter.com/ao81_/media +https://twitter.com/aomarisa_t/media +https://twitter.com/apostlxiii/media +https://twitter.com/arabetesudo0/media +https://twitter.com/archy306/media +https://twitter.com/aries03220/media +https://twitter.com/arinherdis25205/media +https://twitter.com/art_by_crazytom/media +https://twitter.com/art_uza/media +https://twitter.com/artofmmignola/media +https://twitter.com/arts_of_indiego/media +https://twitter.com/arukorc/media +https://twitter.com/arumidoge/media +https://twitter.com/asd4486_/media +https://twitter.com/asu_kam/media +https://twitter.com/at__zes/media +https://twitter.com/atcesolcyc/media +https://twitter.com/attckh/media +https://twitter.com/aurumnexus/media +https://twitter.com/avantaberrant/media +https://twitter.com/awkwardchiguy/media +https://twitter.com/azgardi/media +https://twitter.com/bSun30425111/media +https://twitter.com/ba1i2/media +https://twitter.com/baalbuddy/media +https://twitter.com/badkozi/media +https://twitter.com/badstranj/media +https://twitter.com/baiyushou/media +https://twitter.com/bakingorc/media +https://twitter.com/bamashengze/media +https://twitter.com/banewade/media +https://twitter.com/bardotstrash/media +https://twitter.com/bark_rubber/media +https://twitter.com/battle_demon/media +https://twitter.com/bbgj_/media +https://twitter.com/bbgyz44/media +https://twitter.com/bbsketches/media +https://twitter.com/beanyzilla/media +https://twitter.com/bearded_dragonn/media +https://twitter.com/beaugilliam/media +https://twitter.com/bedsidewater/media +https://twitter.com/belovedtx/media +https://twitter.com/berububs/media +https://twitter.com/big_squid_man/media +https://twitter.com/bigrowdydemon/media +https://twitter.com/bigwatchboiz/media +https://twitter.com/bimbonics/media +https://twitter.com/blackcatlandr/media +https://twitter.com/blue_octopus12/media +https://twitter.com/bluedemonman/media +https://twitter.com/bluegiragi/media +https://twitter.com/bnanabirch/media +https://twitter.com/bobby_arts/media +https://twitter.com/boburto/media +https://twitter.com/boneworms/media +https://twitter.com/bonjourdraws/media +https://twitter.com/bonk_town/media +https://twitter.com/boog_how/media +https://twitter.com/boomstick_0/media +https://twitter.com/booublik/media +https://twitter.com/bornofshade/media +https://twitter.com/bota86mochi/media +https://twitter.com/bouseded/media +https://twitter.com/box_splat/media +https://twitter.com/boytoydog/media +https://twitter.com/breadboxdraws/media +https://twitter.com/breaking_spine/media +https://twitter.com/breederpup/media +https://twitter.com/browndrawingbur/media +https://twitter.com/bruskaroo/media +https://twitter.com/buffyloop/media +https://twitter.com/burankoprn/media +https://twitter.com/buttcheekwizard/media +https://twitter.com/buyingtimecomic/media +https://twitter.com/c00kiebby/media +https://twitter.com/cado_tk32/media +https://twitter.com/cadroper/media +https://twitter.com/cainyourkids/media +https://twitter.com/calaziike/media +https://twitter.com/callmefonzu/media +https://twitter.com/camo93S/media +https://twitter.com/caneijur/media +https://twitter.com/captainkorso/media +https://twitter.com/catcher0919/media +https://twitter.com/catsnbriefs/media +https://twitter.com/catsudon_/media +https://twitter.com/cckatoo/media +https://twitter.com/ceinordraws/media +https://twitter.com/cerberus_arts/media +https://twitter.com/cerberuskeeper_/media +https://twitter.com/cerosin_bis/media +https://twitter.com/ch1du/media +https://twitter.com/champagnedoggy/media +https://twitter.com/chens_art/media +https://twitter.com/chenskink/media +https://twitter.com/cherryspliced/media +https://twitter.com/chestpelt/media +https://twitter.com/chimamonbun/media +https://twitter.com/chocola87578043/media +https://twitter.com/chronobauble/media +https://twitter.com/chung0u0/media +https://twitter.com/churchofpossum/media +https://twitter.com/chuvabak/media +https://twitter.com/clamp5656/media +https://twitter.com/cloudytune/media +https://twitter.com/clx147258/media +https://twitter.com/cod_leech/media +https://twitter.com/colbysFantasy/media +https://twitter.com/colleen_sculpts/media +https://twitter.com/cratty_wan/media +https://twitter.com/crownsreverie/media +https://twitter.com/cryptid_jhin/media +https://twitter.com/cuddlyveedles/media +https://twitter.com/cuminpari/media +https://twitter.com/cummytomato/media +https://twitter.com/currrsy/media +https://twitter.com/custapple_/media +https://twitter.com/cyanroll/media +https://twitter.com/daekiyuArt/media +https://twitter.com/daisukidungeon/media +https://twitter.com/dalis_zo/media +https://twitter.com/damnengine/media +https://twitter.com/damodraws_/media +https://twitter.com/danielwarrenart/media +https://twitter.com/dankmos/media +https://twitter.com/dantesrealm_/media +https://twitter.com/darkalcherum/media +https://twitter.com/darkbearcave/media +https://twitter.com/darkgemrawr/media +https://twitter.com/davidrubin/media +https://twitter.com/deadvenge/media +https://twitter.com/deanygonealt/media +https://twitter.com/debuatnight/media +https://twitter.com/dendryte_axxon/media +https://twitter.com/derm_art89/media +https://twitter.com/devilfagcrybaby/media +https://twitter.com/dickgate/media +https://twitter.com/diktdown/media +https://twitter.com/dillonsnookart/media +https://twitter.com/dimaiv_nov/media +https://twitter.com/dirt_men/media +https://twitter.com/dirtymuttboy/media +https://twitter.com/dizdoodz/media +https://twitter.com/dkqthf/media +https://twitter.com/dlyBSCEombQGqud/media +https://twitter.com/docphag/media +https://twitter.com/dogandclover/media +https://twitter.com/doggymavAD/media +https://twitter.com/donatzu/media +https://twitter.com/doodlrenzo/media +https://twitter.com/dopanin/media +https://twitter.com/doubleleaf/media +https://twitter.com/doubleleaf_nsfw/media +https://twitter.com/dragonf00d/media +https://twitter.com/dragonn_nsfw/media +https://twitter.com/drawmepapi/media +https://twitter.com/drdfllb/media +https://twitter.com/drewfsfeet/media +https://twitter.com/drkavcheg/media +https://twitter.com/droppindraws/media +https://twitter.com/drroopie/media +https://twitter.com/duck_deans/media +https://twitter.com/dukes_nukes/media +https://twitter.com/dumpsssss/media +https://twitter.com/dune5and/media +https://twitter.com/duskidraws/media +https://twitter.com/dyn19dg/media +https://twitter.com/eat_hymn/media +https://twitter.com/ecleto_artworks/media +https://twitter.com/edneqivo/media +https://twitter.com/eenurgl/media +https://twitter.com/effueffu/media +https://twitter.com/eggipus/media +https://twitter.com/el_booki/media +https://twitter.com/el_jorgeeee/media +https://twitter.com/elboydetuiter/media +https://twitter.com/elchicosinpan/media +https://twitter.com/eliartmkh/media +https://twitter.com/elkleggs/media +https://twitter.com/emmepetrucci/media +https://twitter.com/epseelutely/media +https://twitter.com/epxxxlutely/media +https://twitter.com/erebonbon/media +https://twitter.com/erocondo/media +https://twitter.com/eruprior/media +https://twitter.com/esaariart/media +https://twitter.com/eslam_aboshady/media +https://twitter.com/eudoriof/media +https://twitter.com/evinist11241/media +https://twitter.com/extra_vertebrae/media +https://twitter.com/exxxemi/media +https://twitter.com/f_con/media +https://twitter.com/f_intothevoid/media +https://twitter.com/f_una/media +https://twitter.com/fabssdaf/media +https://twitter.com/fidi_nsfw/media +https://twitter.com/fishingmanMAX/media +https://twitter.com/fitze_l/media +https://twitter.com/fizzworks/media +https://twitter.com/flesh4momo/media +https://twitter.com/floparts/media +https://twitter.com/flyinlionart/media +https://twitter.com/foazycozy/media +https://twitter.com/foxfawl/media +https://twitter.com/foxglovefaun/media +https://twitter.com/francishsie/media +https://twitter.com/friendly_unit93/media +https://twitter.com/fullycollapsed1/media +https://twitter.com/furaitsu/media +https://twitter.com/furrllow/media +https://twitter.com/furryrevolution/media +https://twitter.com/gadodell_/media +https://twitter.com/gamma_DH/media +https://twitter.com/gamusharakishin/media +https://twitter.com/gamutfeathers/media +https://twitter.com/garbancobean/media +https://twitter.com/gato_iberico/media +https://twitter.com/gaytorfucker/media +https://twitter.com/gear_soap/media +https://twitter.com/genericboxhead/media +https://twitter.com/gewska/media +https://twitter.com/ggan_ggandi/media +https://twitter.com/gh0stfood/media +https://twitter.com/ghuraok/media +https://twitter.com/gimigam2/media +https://twitter.com/glafifo/media +https://twitter.com/glass0milk/media +https://twitter.com/glass0milkAD/media +https://twitter.com/glensaru/media +https://twitter.com/glitterdeadboy/media +https://twitter.com/go_maccha/media +https://twitter.com/godsrot/media +https://twitter.com/goldeldarka/media +https://twitter.com/gonzostarxxx/media +https://twitter.com/gorilatatuado/media +https://twitter.com/goth_spitter/media +https://twitter.com/govy9807/media +https://twitter.com/grapeyguts/media +https://twitter.com/graysheartart/media +https://twitter.com/greatvenomsnake/media +https://twitter.com/grismedio/media +https://twitter.com/growlygruntz/media +https://twitter.com/grozat_art/media +https://twitter.com/grrrrrryan/media +https://twitter.com/gruhhhu/media +https://twitter.com/grunchpop/media +https://twitter.com/gully_golden/media +https://twitter.com/gunpowder_0/media +https://twitter.com/gus1288/media +https://twitter.com/gutmouth/media +https://twitter.com/h0dori/media +https://twitter.com/h1areyhunh1/media +https://twitter.com/h3nloart/media +https://twitter.com/haideebobs/media +https://twitter.com/halakuya/media +https://twitter.com/hanbyeo0526/media +https://twitter.com/hassbroart/media +https://twitter.com/hearth_taro/media +https://twitter.com/helenseidolon/media +https://twitter.com/hellowon31/media +https://twitter.com/hereforhimbos/media +https://twitter.com/heromule/media +https://twitter.com/heromuleAD/media +https://twitter.com/heyou130/media +https://twitter.com/heysawboners/media +https://twitter.com/hezrocomics/media +https://twitter.com/hi__host/media +https://twitter.com/hima0jin/media +https://twitter.com/hiroki_bzdsk/media +https://twitter.com/hoesiel/media +https://twitter.com/hokawa2u/media +https://twitter.com/holmesdmode/media +https://twitter.com/holovernes/media +https://twitter.com/honeyginsen/media +https://twitter.com/hongga17/media +https://twitter.com/hosodamamoru/media +https://twitter.com/hostile1968/media +https://twitter.com/hotchaX/media +https://twitter.com/hotnspicydoo/media +https://twitter.com/hotsatyr/media +https://twitter.com/hoyaolaf/media +https://twitter.com/hoybara/media +https://twitter.com/hudifeiren/media +https://twitter.com/humaneater1/media +https://twitter.com/huntang513/media +https://twitter.com/hurricane_smutt/media +https://twitter.com/hydenari/media +https://twitter.com/hyenamancer/media +https://twitter.com/hyungry2/media +https://twitter.com/ibarra_bara/media +https://twitter.com/iceghost_art/media +https://twitter.com/icezero09/media +https://twitter.com/ichhabernurdich/media +https://twitter.com/idealbraintonic/media +https://twitter.com/ifyunoyuno/media +https://twitter.com/igrock/media +https://twitter.com/ijm86/media +https://twitter.com/illustGuess/media +https://twitter.com/im_liab/media +https://twitter.com/improperdoodles/media +https://twitter.com/imrandymeeks/media +https://twitter.com/ina29ana/media +https://twitter.com/infestedcake/media +https://twitter.com/infezmite/media +https://twitter.com/inkgnition/media +https://twitter.com/iseniwings/media +https://twitter.com/itaparu99/media +https://twitter.com/itskoob/media +https://twitter.com/ittorasii/media +https://twitter.com/ixt_ab/media +https://twitter.com/jacaxen/media +https://twitter.com/jackalewd/media +https://twitter.com/jacketbear/media +https://twitter.com/jaggerposting/media +https://twitter.com/jakelongitudo/media +https://twitter.com/jakepaul/media +https://twitter.com/januariat108/media +https://twitter.com/jasdavi/media +https://twitter.com/jaspertiricka/media +https://twitter.com/jaspurrlock/media +https://twitter.com/jaxcian/media +https://twitter.com/jayla_comics/media +https://twitter.com/jaymamonj/media +https://twitter.com/jazlyte/media +https://twitter.com/jazzwolf/media +https://twitter.com/je4r0/media +https://twitter.com/jenpieart/media +https://twitter.com/jessebrart/media +https://twitter.com/jestingheart/media +https://twitter.com/jezz_mons_art/media +https://twitter.com/ji3356333/media +https://twitter.com/jiic0s/media +https://twitter.com/jimmyjimsjim/media +https://twitter.com/jinhallz/media +https://twitter.com/jiyeyongsheng/media +https://twitter.com/jizzwolf/media +https://twitter.com/joTuesday19/media +https://twitter.com/jockbeest/media +https://twitter.com/joelyface_/media +https://twitter.com/joerodjacks/media +https://twitter.com/jonarart/media +https://twitter.com/jonathanvair/media +https://twitter.com/joncairns/media +https://twitter.com/jopfe0815/media +https://twitter.com/juaneferreyra/media +https://twitter.com/julianthemug/media +https://twitter.com/julio_leote/media +https://twitter.com/juliyatoxi/media +https://twitter.com/juna_tah/media +https://twitter.com/jxthics/media +https://twitter.com/k41bvtsv/media +https://twitter.com/ka55kett/media +https://twitter.com/kacinsfw/media +https://twitter.com/kagaho04/media +https://twitter.com/kaidzsu/media +https://twitter.com/kalamariboy/media +https://twitter.com/kaleogradilone/media +https://twitter.com/kantocryz/media +https://twitter.com/kashikahaya/media +https://twitter.com/katich_pigeon/media +https://twitter.com/katto8452/media +https://twitter.com/kattoloaf/media +https://twitter.com/kazu4500/media +https://twitter.com/kcokaine_/media +https://twitter.com/keemznsfw/media +https://twitter.com/keisukeyoneyama/media +https://twitter.com/keltbh/media +https://twitter.com/kemoistani/media +https://twitter.com/kentartwork/media +https://twitter.com/keysandcrosses/media +https://twitter.com/kharsagii/media +https://twitter.com/kheng0122/media +https://twitter.com/khyleri/media +https://twitter.com/kia_shie/media +https://twitter.com/kiana_hamm/media +https://twitter.com/kiba2412/media +https://twitter.com/kienbiu/media +https://twitter.com/kikuyarou/media +https://twitter.com/kimjunggidirect/media +https://twitter.com/kingsteeth/media +https://twitter.com/kitastrophee/media +https://twitter.com/knifesystem/media +https://twitter.com/knockoffgoblin/media +https://twitter.com/kobadit/media +https://twitter.com/koboolesck/media +https://twitter.com/kobsuaymuk/media +https://twitter.com/kolvackh/media +https://twitter.com/kon_likes_corn/media +https://twitter.com/konohanaya/media +https://twitter.com/kotalketz/media +https://twitter.com/koteriink/media +https://twitter.com/koushishikou11/media +https://twitter.com/kriokrio22/media +https://twitter.com/kronostrat/media +https://twitter.com/kse332_official/media +https://twitter.com/ksejl_art/media +https://twitter.com/kuji0419/media +https://twitter.com/kukonart/media +https://twitter.com/kumammoto/media +https://twitter.com/kunkun586586/media +https://twitter.com/kuroikiri_/media +https://twitter.com/kuromine_hiraya/media +https://twitter.com/kurotetsu1379/media +https://twitter.com/kuulongarl/media +https://twitter.com/kxllHydra/media +https://twitter.com/laKingMoxxie/media +https://twitter.com/la_bordeliere/media +https://twitter.com/lajornyaccount/media +https://twitter.com/laserpaints/media +https://twitter.com/lemusuniverse/media +https://twitter.com/lewd_tuna/media +https://twitter.com/lewdhank/media +https://twitter.com/lewislarosa/media +https://twitter.com/likaou_/media +https://twitter.com/lil_ruiner/media +https://twitter.com/limorion_art/media +https://twitter.com/lindebergart/media +https://twitter.com/little_brako/media +https://twitter.com/littleblackalas/media +https://twitter.com/littledozerbaby/media +https://twitter.com/liyamou/media +https://twitter.com/lorsenal/media +https://twitter.com/lovesucknipples/media +https://twitter.com/lowlifesymptoms/media +https://twitter.com/luboyaqqz/media +https://twitter.com/lukepilgrimxxx/media +https://twitter.com/lumise05/media +https://twitter.com/luoluokun517/media +https://twitter.com/lupin_art/media +https://twitter.com/lurelinart/media +https://twitter.com/lurelinnsfw/media +https://twitter.com/luridlavender/media +https://twitter.com/lustthou/media +https://twitter.com/luz_nuy/media +https://twitter.com/madaramebk/media +https://twitter.com/mag_cora_imparo/media +https://twitter.com/maja42106905/media +https://twitter.com/mako_vice/media +https://twitter.com/manaludls_/media +https://twitter.com/manytackle/media +https://twitter.com/marcyean/media +https://twitter.com/marino_404/media +https://twitter.com/marius_tygo/media +https://twitter.com/marsoids/media +https://twitter.com/marsoomata_AD/media +https://twitter.com/massiveface/media +https://twitter.com/matiasbergara/media +https://twitter.com/maurorrodrigues/media +https://twitter.com/mawarisaka/media +https://twitter.com/mccreaman/media +https://twitter.com/mcmadmissile/media +https://twitter.com/michaelkatchan/media +https://twitter.com/michopanq/media +https://twitter.com/mickearts/media +https://twitter.com/mickssecretlair/media +https://twitter.com/miharushoka/media +https://twitter.com/mik_d0/media +https://twitter.com/mikefranchina_/media +https://twitter.com/mikeleegraham/media +https://twitter.com/mikimontllo/media +https://twitter.com/milk_guts/media +https://twitter.com/milosoba1/media +https://twitter.com/mim_such/media +https://twitter.com/min_yum/media +https://twitter.com/mindmechanica/media +https://twitter.com/mlarty_art/media +https://twitter.com/mo_nu_047/media +https://twitter.com/mochimochi_rkgk/media +https://twitter.com/mohich_/media +https://twitter.com/mojomojo_0/media +https://twitter.com/mondi_xxx/media +https://twitter.com/monkey__marc/media +https://twitter.com/mossacannibalis/media +https://twitter.com/mozgistired/media +https://twitter.com/mr_kasuy/media +https://twitter.com/mrbubbieshouse/media +https://twitter.com/mrkeypoo/media +https://twitter.com/mroj_180523/media +https://twitter.com/mskah_t/media +https://twitter.com/muchiyukichan/media +https://twitter.com/mue_nsfw/media +https://twitter.com/mugibaras/media +https://twitter.com/muhomora/media +https://twitter.com/murimurri670/media +https://twitter.com/mxmmgrm/media +https://twitter.com/mxxn_archive/media +https://twitter.com/myarmpitfetish_/media +https://twitter.com/mynemwynx/media +https://twitter.com/mystikfoxdraws/media +https://twitter.com/myxomatonen/media +https://twitter.com/naconaul/media +https://twitter.com/nanoff94/media +https://twitter.com/naonaaoo_/media +https://twitter.com/nastybadcatman/media +https://twitter.com/natalie_corsair/media +https://twitter.com/nauminnnn/media +https://twitter.com/naxynaxx/media +https://twitter.com/ne0_navi/media +https://twitter.com/necrocto/media +https://twitter.com/negnegger/media +https://twitter.com/nein69yoshiyuki/media +https://twitter.com/neon_octoling/media +https://twitter.com/nesskain/media +https://twitter.com/netcrow98/media +https://twitter.com/nevarros/media +https://twitter.com/newark_a1/media +https://twitter.com/ni_draw/media +https://twitter.com/nioseptem/media +https://twitter.com/nomifuki/media +https://twitter.com/noobboy_02/media +https://twitter.com/nopinzo/media +https://twitter.com/noribros/media +https://twitter.com/not_good_things/media +https://twitter.com/notacaramujo/media +https://twitter.com/nsfw_cj/media +https://twitter.com/nsfwkrnd/media +https://twitter.com/nug_gies/media +https://twitter.com/nukednick/media +https://twitter.com/nullQllun/media +https://twitter.com/nye_igneous/media +https://twitter.com/nywlub/media +https://twitter.com/o03045695/media +https://twitter.com/o6o6oroc9/media +https://twitter.com/oCUiThu3mCcQfMm/media +https://twitter.com/o_natsuo88/media +https://twitter.com/oelaue2/media +https://twitter.com/og_nikica/media +https://twitter.com/ohkuart/media +https://twitter.com/okinawanogori/media +https://twitter.com/oldshep168/media +https://twitter.com/omarchaparro/media +https://twitter.com/omardogan1976/media +https://twitter.com/omegaween/media +https://twitter.com/omwtsd/media +https://twitter.com/omyuriceart/media +https://twitter.com/onlyrizzieri/media +https://twitter.com/ooshiodaiki/media +https://twitter.com/oozingnutguts/media +https://twitter.com/orf_nite/media +https://twitter.com/osetesportraits/media +https://twitter.com/osteoborus/media +https://twitter.com/otter_fl/media +https://twitter.com/otterlance/media +https://twitter.com/ottermajor/media +https://twitter.com/ovosou_fanfriot/media +https://twitter.com/oyatu55k/media +https://twitter.com/ozak_art/media +https://twitter.com/ozuron/media +https://twitter.com/p0ingo/media +https://twitter.com/paexie/media +https://twitter.com/pal_pigeon/media +https://twitter.com/paldraws/media +https://twitter.com/pancakesballz/media +https://twitter.com/paniwaterss/media +https://twitter.com/paparatsy_/media +https://twitter.com/papyuuno/media +https://twitter.com/parowkiwciescie/media +https://twitter.com/patrick_ganas/media +https://twitter.com/pcink_/media +https://twitter.com/pedrojuanito007/media +https://twitter.com/pelzibat/media +https://twitter.com/pencilbrusch/media +https://twitter.com/perkadet/media +https://twitter.com/phosbara/media +https://twitter.com/piikeisandaa/media +https://twitter.com/piratecashoo/media +https://twitter.com/pitchcanker/media +https://twitter.com/pitsobs/media +https://twitter.com/pixelpeninja/media +https://twitter.com/plucholy/media +https://twitter.com/pnchbowl/media +https://twitter.com/pokemotional/media +https://twitter.com/ponyfren/media +https://twitter.com/portal_opst/media +https://twitter.com/posduroo/media +https://twitter.com/postalzebra/media +https://twitter.com/pppppppppq/media +https://twitter.com/ppssan057/media +https://twitter.com/principeconejoo/media +https://twitter.com/pukaoart/media +https://twitter.com/punkintended/media +https://twitter.com/punktoso/media +https://twitter.com/puppyf4gg/media +https://twitter.com/pure_command/media +https://twitter.com/purelygross/media +https://twitter.com/puri_porn/media +https://twitter.com/purplebirdman/media +https://twitter.com/purrcelot/media +https://twitter.com/puyogho/media +https://twitter.com/pyawoo/media +https://twitter.com/pzfwe3plpsvttke/media +https://twitter.com/qai_san/media +https://twitter.com/qcsilvis73/media +https://twitter.com/qpqppqppp/media +https://twitter.com/qpwo_ei/media +https://twitter.com/quihnn/media +https://twitter.com/raymond1581/media +https://twitter.com/raytig12/media +https://twitter.com/rednoonsun_art/media +https://twitter.com/refrigerabo/media +https://twitter.com/relina_ru/media +https://twitter.com/renatoramos_ink/media +https://twitter.com/rennerei/media +https://twitter.com/retrohurricane/media +https://twitter.com/revfucker/media +https://twitter.com/rho_art/media +https://twitter.com/rhyset_/media +https://twitter.com/ricebug2/media +https://twitter.com/rickleone/media +https://twitter.com/ridinrapids/media +https://twitter.com/rinlinart/media +https://twitter.com/rinotuna/media +https://twitter.com/rivaeri_/media +https://twitter.com/rnoorkq/media +https://twitter.com/rntentn/media +https://twitter.com/roachp0t/media +https://twitter.com/robbercopper/media +https://twitter.com/robbiestrevino/media +https://twitter.com/roko_fearon/media +https://twitter.com/rollingStoneX6/media +https://twitter.com/ron_koza/media +https://twitter.com/roomiesideup/media +https://twitter.com/rretaenam/media +https://twitter.com/rsotart/media +https://twitter.com/ruairicoleman/media +https://twitter.com/ruisselait/media +https://twitter.com/rumpletumple1/media +https://twitter.com/rustic_alt/media +https://twitter.com/rusticfurnace/media +https://twitter.com/ryanlecount/media +https://twitter.com/rybiok/media +https://twitter.com/saagelius/media +https://twitter.com/sadness3verde3n/media +https://twitter.com/sae_q9/media +https://twitter.com/saintlycharles/media +https://twitter.com/salty_chinchin/media +https://twitter.com/saltyseptic/media +https://twitter.com/saolin1234/media +https://twitter.com/sardinecrackers/media +https://twitter.com/saucyiumgoblin/media +https://twitter.com/saury114514/media +https://twitter.com/schizoid_art/media +https://twitter.com/scullvi/media +https://twitter.com/sergiart5_/media +https://twitter.com/serialmilq/media +https://twitter.com/sevvanto/media +https://twitter.com/sexerhaver/media +https://twitter.com/sexpecshotx/media +https://twitter.com/sframboob/media +https://twitter.com/sgkg108/media +https://twitter.com/shebie_jeebies/media +https://twitter.com/shingworks/media +https://twitter.com/shino_tsu_ku/media +https://twitter.com/shmeckerel/media +https://twitter.com/shnjkkr/media +https://twitter.com/shupakabraa/media +https://twitter.com/shydad420/media +https://twitter.com/sideburnsnstuff/media +https://twitter.com/simshenkos/media +https://twitter.com/sinibunnn/media +https://twitter.com/sinsin08051/media +https://twitter.com/sinto_j/media +https://twitter.com/sixfoot_ant/media +https://twitter.com/skayous/media +https://twitter.com/skelesass/media +https://twitter.com/sketching_fox/media +https://twitter.com/skxviii/media +https://twitter.com/skylerchui/media +https://twitter.com/skymeatball/media +https://twitter.com/sleepychuX/media +https://twitter.com/slimy_tablet/media +https://twitter.com/sloppjockey/media +https://twitter.com/slygamma/media +https://twitter.com/smartthrob/media +https://twitter.com/smokerichiart/media +https://twitter.com/sn_menji/media +https://twitter.com/snailshoes/media +https://twitter.com/so_chave/media +https://twitter.com/so_stupidchun/media +https://twitter.com/sociopotato1/media +https://twitter.com/sodiumgoblin/media +https://twitter.com/solaranalog/media +https://twitter.com/solisolsoli/media +https://twitter.com/solyaev/media +https://twitter.com/soonsky_kumu/media +https://twitter.com/sortiecomic/media +https://twitter.com/soysauce_ASS/media +https://twitter.com/spamagotchi/media +https://twitter.com/speedyhades28/media +https://twitter.com/spicymikel/media +https://twitter.com/spicypinkrat/media +https://twitter.com/spideykeex/media +https://twitter.com/spironsfw/media +https://twitter.com/splatbones/media +https://twitter.com/sssida3/media +https://twitter.com/st4rsbucks/media +https://twitter.com/stefanpinto/media +https://twitter.com/stellarstag/media +https://twitter.com/stiinken/media +https://twitter.com/stinkymun/media +https://twitter.com/stormibara2/media +https://twitter.com/strawbit_ch/media +https://twitter.com/studio_indiego/media +https://twitter.com/suamaru0808/media +https://twitter.com/sudsyspecter/media +https://twitter.com/sugardandii/media +https://twitter.com/sugarypaws/media +https://twitter.com/sukharrr/media +https://twitter.com/sunnnliwx/media +https://twitter.com/svvshi/media +https://twitter.com/swanginthangz/media +https://twitter.com/sweatysabel/media +https://twitter.com/sweetlychii/media +https://twitter.com/t_dohade/media +https://twitter.com/tacticalvamp/media +https://twitter.com/takahiro_si/media +https://twitter.com/tamagoart/media +https://twitter.com/tanoda565/media +https://twitter.com/tapeworrrm/media +https://twitter.com/tasketee/media +https://twitter.com/tavrosdraws/media +https://twitter.com/tderek99/media +https://twitter.com/ten_g89/media +https://twitter.com/tench_art/media +https://twitter.com/tendermiasma/media +https://twitter.com/terujirou1014/media +https://twitter.com/tetesin_/media +https://twitter.com/tetrahomoerotic/media +https://twitter.com/thatlonelycrow/media +https://twitter.com/the_shaydh/media +https://twitter.com/thebluebear27/media +https://twitter.com/thefuzzyaya/media +https://twitter.com/thegays8n/media +https://twitter.com/thehitotian/media +https://twitter.com/thelinuxEXP/media +https://twitter.com/theobromic_/media +https://twitter.com/thepornbody/media +https://twitter.com/theswordwizard/media +https://twitter.com/third_cookie/media +https://twitter.com/thirstyexcal/media +https://twitter.com/thisisbenoliver/media +https://twitter.com/throatpussy/media +https://twitter.com/thunderstrke/media +https://twitter.com/tigrugo/media +https://twitter.com/tinyfratboy/media +https://twitter.com/tirtyturtle/media +https://twitter.com/tittybat/media +https://twitter.com/tokendoodles/media +https://twitter.com/toktoktokuni/media +https://twitter.com/tomaroosky/media +https://twitter.com/tonta1231/media +https://twitter.com/tonymoore/media +https://twitter.com/tooboshoo/media +https://twitter.com/toomanyboners/media +https://twitter.com/tralalabara/media +https://twitter.com/trenchiikoat/media +https://twitter.com/triceramonster/media +https://twitter.com/tritscrits/media +https://twitter.com/tsupunya_art/media +https://twitter.com/ttttt945/media +https://twitter.com/tubbbiey/media +https://twitter.com/tuhmayto/media +https://twitter.com/tulmap/media +https://twitter.com/tunneIsnakes/media +https://twitter.com/turnipoddity/media +https://twitter.com/tuskyrayan/media +https://twitter.com/twistydr0p/media +https://twitter.com/tylerhoechlin/media +https://twitter.com/tzarvolver/media +https://twitter.com/ubzerd/media +https://twitter.com/ufficiosulretro/media +https://twitter.com/uiokv_829/media +https://twitter.com/umikochannart/media +https://twitter.com/unsafe_paperbag/media +https://twitter.com/urbanbarbarian/media +https://twitter.com/uretnik/media +https://twitter.com/v1centes/media +https://twitter.com/vamos_mk/media +https://twitter.com/vasarru/media +https://twitter.com/vaseragasnut/media +https://twitter.com/veejaybees/media +https://twitter.com/velnna/media +https://twitter.com/velrizoth/media +https://twitter.com/ventiskull/media +https://twitter.com/vetiver_n/media +https://twitter.com/vinceteaa/media +https://twitter.com/vitamin_bara/media +https://twitter.com/vladlegostaev/media +https://twitter.com/vodcablood/media +https://twitter.com/vor_bokor/media +https://twitter.com/vordhusband/media +https://twitter.com/voviat/media +https://twitter.com/vylnora/media +https://twitter.com/waiwai_mura/media +https://twitter.com/walkandbare38/media +https://twitter.com/waribasi2zennme/media +https://twitter.com/warrior_male/media +https://twitter.com/wassli_/media +https://twitter.com/waympo/media +https://twitter.com/wdp66281167/media +https://twitter.com/weomth/media +https://twitter.com/whoatess/media +https://twitter.com/wincalblanke/media +https://twitter.com/witchmeetsevil/media +https://twitter.com/wolfaninensfw/media +https://twitter.com/wolfman69420/media +https://twitter.com/wolfscade/media +https://twitter.com/wolfshirtart/media +https://twitter.com/wolfsvile/media +https://twitter.com/woodsjpeg/media +https://twitter.com/wormlonde/media +https://twitter.com/wudangx/media +https://twitter.com/wuedti/media +https://twitter.com/x6udpngx/media +https://twitter.com/xelgot/media +https://twitter.com/xiphos__/media +https://twitter.com/xkumah_/media +https://twitter.com/y2jenn/media +https://twitter.com/yamasmut/media +https://twitter.com/yank_a_ton/media +https://twitter.com/yanoapART/media +https://twitter.com/yeiko_art/media +https://twitter.com/yenyenyen19/media +https://twitter.com/yolkqu/media +https://twitter.com/yvecz_/media +https://twitter.com/zcikart/media +https://twitter.com/zelly_land/media +https://twitter.com/zeppekida/media +https://twitter.com/zeppysk1ppy/media +https://twitter.com/zex_art/media +https://twitter.com/zhangkuu/media +https://twitter.com/ziyedtoumi/media +https://twitter.com/zombiebooty1/media +https://twitter.com/zuzofait/media +#https://www.deviantart.com/babadeeboobheehee123 +#https://www.deviantart.com/boburto +#https://www.deviantart.com/chaosorb69 +#https://www.deviantart.com/colleenpecklarson +#https://www.deviantart.com/fighting-wolf-fist +#https://www.deviantart.com/invisiblebellamy +#https://www.deviantart.com/kgbigelow +#https://www.deviantart.com/mavros-thanatos +#https://www.deviantart.com/mohtah +#https://www.deviantart.com/ngart7 +#https://www.deviantart.com/renny08 +#https://www.deviantart.com/ricken-art +#https://www.deviantart.com/ryanottley +#https://www.deviantart.com/spacefriend-krunk +#https://www.deviantart.com/urban-barbarian +#https://www.deviantart.com/wanderingkoyote +#https://www.deviantart.com/zaffyrr +#https://www.deviantart.com/zillabean +https://www.fanbox.cc/@gengorohtagame +https://www.furaffinity.net/favorites/adam +https://www.furaffinity.net/favorites/tuhmayto +https://www.furaffinity.net/gallery/cseed +https://www.furaffinity.net/gallery/francesco +https://www.furaffinity.net/gallery/lustthou +https://www.furaffinity.net/gallery/ryuta-h +https://www.furaffinity.net/user/Mystikfox61 +https://www.furaffinity.net/user/adam +https://www.furaffinity.net/user/arcticlion +https://www.furaffinity.net/user/badcoyote +https://www.furaffinity.net/user/beralin +https://www.furaffinity.net/user/canynekhai +https://www.furaffinity.net/user/concupisco +https://www.furaffinity.net/user/desfrog +https://www.furaffinity.net/user/fabercastel +https://www.furaffinity.net/user/feralise +https://www.furaffinity.net/user/forgewalfhammer +https://www.furaffinity.net/user/francesco +https://www.furaffinity.net/user/hinarmiler +https://www.furaffinity.net/user/hun +https://www.furaffinity.net/user/hurri-smuttstuff +https://www.furaffinity.net/user/hurricane128 +https://www.furaffinity.net/user/jackaloo +https://www.furaffinity.net/user/johnneal911 +https://www.furaffinity.net/user/kakushimi +https://www.furaffinity.net/user/lurelin +https://www.furaffinity.net/user/maldu +https://www.furaffinity.net/user/nightterror +https://www.furaffinity.net/user/orf +https://www.furaffinity.net/user/patto +https://www.furaffinity.net/user/protheorem +https://www.furaffinity.net/user/quetzal85 +https://www.furaffinity.net/user/raymond158 +https://www.furaffinity.net/user/redrusker +https://www.furaffinity.net/user/rotehaare +https://www.furaffinity.net/user/saltysardine +https://www.furaffinity.net/user/salvation +https://www.furaffinity.net/user/shawd +https://www.furaffinity.net/user/sinealas +https://www.furaffinity.net/user/sinsquared +https://www.furaffinity.net/user/snarkysardine +https://www.furaffinity.net/user/spedumon +https://www.furaffinity.net/user/speechless +https://www.furaffinity.net/user/stoopix +https://www.furaffinity.net/user/stupidtemplar +https://www.furaffinity.net/user/thegianthamster +https://www.furaffinity.net/user/trashtank +https://www.furaffinity.net/user/tuhmayto +https://www.furaffinity.net/user/tuskforce +https://www.furaffinity.net/user/verb0ten +https://www.furaffinity.net/user/voidlesky +https://www.furaffinity.net/user/xnirox +https://www.furaffinity.net/user/yashy +https://www.furaffinity.net/user/zepthehyerian +https://www.furaffinity.net/user/zourik +https://www.instagram.com/InfraHaz +https://www.instagram.com/callumcq +https://www.instagram.com/carlobrunolongo +https://www.instagram.com/chefupk +https://www.instagram.com/diego.costa +https://www.instagram.com/edwardquinn +https://www.instagram.com/hassbroart +https://www.instagram.com/husky__madrid +https://www.instagram.com/joncairns +https://www.instagram.com/karlkopinski +https://www.instagram.com/kuya_kasuy +https://www.instagram.com/luisbardot +https://www.instagram.com/marcoboccireal +https://www.instagram.com/mishkashubaly +https://www.instagram.com/mister_jagger +https://www.instagram.com/omarchaparro +https://www.instagram.com/originaljbone +https://www.instagram.com/paulrosolie +https://www.instagram.com/roxie.vizcarra +https://www.instagram.com/rubendsneves +https://www.instagram.com/sergioramos +https://www.instagram.com/spacefriend_z +https://www.instagram.com/thegallowboob +https://www.instagram.com/tylerhoechlin +https://www.instagram.com/ufficiosulretro +https://www.pinterest.com/johnneal911 +https://www.pixiv.net/en/artworks/52784092 +https://www.pixiv.net/en/users/1517932 +https://www.pixiv.net/en/users/15253168 +https://www.pixiv.net/en/users/18130137 +https://www.pixiv.net/en/users/2810208 +https://www.pixiv.net/en/users/2917538 +https://www.pixiv.net/en/users/3668749 +https://www.pixiv.net/en/users/76646240 +https://www.reddit.com/user/AscendingLewds +https://www.reddit.com/user/Chad_theNiceGuy +https://www.reddit.com/user/NameOk4230 +https://www.reddit.com/user/brocollirob +https://www.reddit.com/user/cjolet +https://www.redgifs.com/users/bigsun +https://www.redgifs.com/users/galianbeast +https://www.redgifs.com/users/incaseart +https://www.tumblr.com/angkis +https://www.tumblr.com/bonjourdraws +https://www.tumblr.com/iamgrandpamax +https://www.tumblr.com/miathewolfanddarkthings +https://www.tumblr.com/scuttlebuttin +https://twitter.com/Dobek_k/media +https://twitter.com/CorelleVairel/media +https://twitter.com/pyro_cri/media +https://twitter.com/YUNJUN777/media +https://twitter.com/Keybinlarose/media +https://twitter.com/taki_bert/media +https://twitter.com/CraneUnculled/media +https://twitter.com/PhaustoK/media +https://twitter.com/Polarblackbear0/media +https://twitter.com/taogebear/media +https://twitter.com/karm4tic/media +https://twitter.com/toxikkwaist_/media +https://twitter.com/ballballwolf/media +https://twitter.com/yokunaiplay/media +https://twitter.com/Ramon_N90/media +https://twitter.com/ghangaji_/media +https://twitter.com/NoteszB/media +https://www.instagram.com/sergioramos +https://twitter.com/MorskArt/media +https://twitter.com/mpchto/media +https://twitter.com/Steelforgecanis/media +https://twitter.com/Matt_Mason_ASS/media +https://twitter.com/TheDamnThinGuy/media +https://twitter.com/JJemmin/media +https://www.instagram.com/decomposedtaco +https://twitter.com/michfoolery/media +https://twitter.com/GalanNSFW/media +https://twitter.com/LavenderToaster/media +https://twitter.com/41raco/media +https://twitter.com/Herakless_w/media +https://twitter.com/JaysonNeed/media +https://www.instagram.com/patrickcosta__ +https://twitter.com/h0lysarthole/media +https://twitter.com/CallMeGaith/media +https://twitter.com/VarcoHelix/media +https://www.instagram.com/thomastheboxer +https://twitter.com/MILKVISlON/media +https://www.instagram.com/hassbroart +https://twitter.com/ZiRannn/media +https://twitter.com/_0picky/media +https://twitter.com/MatthewBitts/media +https://twitter.com/Killjo_q/media +https://twitter.com/cuando_819545/media +https://twitter.com/WARDRAWS_Art/media +https://twitter.com/TsunamiO7/media +https://twitter.com/BlatterburyNSFW/media +https://twitter.com/nuttkraken/media +https://twitter.com/eupharrow/media +https://twitter.com/Haxsmack_art/media +https://twitter.com/nikonikonikolai/media +https://twitter.com/VHKAneweer/media +https://twitter.com/madcap_ian/media +https://twitter.com/Sneolk1/media +https://twitter.com/KorichiVal/media +https://twitter.com/AhnikSaur/media +https://twitter.com/DangpaArt/media +https://twitter.com/coco_634op/media +https://twitter.com/deaddoginc/media +https://twitter.com/Maggotnizer/media +https://twitter.com/Shyravenn/media +https://twitter.com/Cxcxxcxxxx/media +https://twitter.com/SpicyRaccoonGuy/media +https://twitter.com/rippedsaurian/media +https://twitter.com/NotRFW/media +https://twitter.com/SinSquaredArt/media +https://twitter.com/fishismDick/media +https://twitter.com/toumator18/media +https://twitter.com/kemonamon/media +https://twitter.com/Zammuwu/media +https://twitter.com/utmbug/media +https://twitter.com/grossy_v/media +https://twitter.com/alt_kou/media +https://twitter.com/Fuge_Oni666/media +https://twitter.com/SigmaxArt/media +https://twitter.com/FlickDraws/media +https://twitter.com/BiscoitoReche17/media +https://twitter.com/GAGE0116/media +https://twitter.com/kinhallz/media +https://twitter.com/teenage_fanclub/media +https://www.instagram.com/stories/jaircosta19/3302907976439892902/ +https://twitter.com/SatoGakuNSFW/media +https://twitter.com/IncubearX3/media +https://twitter.com/TYArashiArt/media +https://twitter.com/NegisGraphics/media +https://twitter.com/LinquineArt/media +https://twitter.com/MXWREKS/media +https://twitter.com/Cuckoo_chan/media +https://men.wikifeet.com/Dan_Reynolds +https://twitter.com/mew_mosh/media +https://twitter.com/BullDad_Deimos/media +https://twitter.com/Comanie_/media +https://twitter.com/wadaji_art_AD/media +https://twitter.com/K_Guazu/media +https://twitter.com/MakenziePolkas/media +https://www.instagram.com/rivaeri_/ +https://twitter.com/nashtea_art/media +https://twitter.com/ChurrosoNsfw/media +https://twitter.com/Nippleplayer_MI/media +https://twitter.com/scariermate/media +https://twitter.com/B64arts/media +https://twitter.com/GHSheee/media +https://twitter.com/TIGER_EST/media +https://twitter.com/ArtofNickRobles/media +https://twitter.com/Shan_Yao_Jun/media +https://twitter.com/shinoda_pk/media +https://twitter.com/dandoo28/media +https://twitter.com/ForestBite/media +https://twitter.com/pinponpanBara/media +https://twitter.com/LuvrNip/media +https://twitter.com/TAK0YAKI_SENPAI/media +https://twitter.com/nsfwkaru/media +https://twitter.com/SundayCat3/media +https://twitter.com/sabs_art/media +https://twitter.com/MorelEdgar_/media +https://twitter.com/Riegai1/media diff --git a/download_hs/default.nix b/download_hs/default.nix new file mode 100644 index 0000000..793bc77 --- /dev/null +++ b/download_hs/default.nix @@ -0,0 +1,12 @@ +let pkgs = import { }; +in pkgs.haskellPackages.developPackage { + root = ./.; + modifier = drv: + pkgs.haskell.lib.addBuildTools drv (with pkgs.haskellPackages; [ + cabal-install + ghcid + haskell-language-server + fourmolu + regex + ]); +} diff --git a/download_hs/dist-newstyle/cache/compiler b/download_hs/dist-newstyle/cache/compiler new file mode 100644 index 0000000..38b84f7 Binary files /dev/null and b/download_hs/dist-newstyle/cache/compiler differ diff --git a/download_hs/dist-newstyle/cache/config b/download_hs/dist-newstyle/cache/config new file mode 100644 index 0000000..b4adcbb Binary files /dev/null and b/download_hs/dist-newstyle/cache/config differ diff --git a/download_hs/dist-newstyle/cache/elaborated-plan b/download_hs/dist-newstyle/cache/elaborated-plan new file mode 100644 index 0000000..429b45a Binary files /dev/null and b/download_hs/dist-newstyle/cache/elaborated-plan differ diff --git a/download_hs/dist-newstyle/cache/improved-plan b/download_hs/dist-newstyle/cache/improved-plan new file mode 100644 index 0000000..38ffd03 Binary files /dev/null and b/download_hs/dist-newstyle/cache/improved-plan differ diff --git a/download_hs/dist-newstyle/cache/plan.json b/download_hs/dist-newstyle/cache/plan.json new file mode 100644 index 0000000..9a9606c --- /dev/null +++ b/download_hs/dist-newstyle/cache/plan.json @@ -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":[]}]} \ No newline at end of file diff --git a/download_hs/dist-newstyle/cache/solver-plan b/download_hs/dist-newstyle/cache/solver-plan new file mode 100644 index 0000000..6e9811c Binary files /dev/null and b/download_hs/dist-newstyle/cache/solver-plan differ diff --git a/download_hs/dist-newstyle/cache/source-hashes b/download_hs/dist-newstyle/cache/source-hashes new file mode 100644 index 0000000..41b57c9 Binary files /dev/null and b/download_hs/dist-newstyle/cache/source-hashes differ diff --git a/download_hs/dist-newstyle/cache/up-to-date b/download_hs/dist-newstyle/cache/up-to-date new file mode 100644 index 0000000..65a9708 Binary files /dev/null and b/download_hs/dist-newstyle/cache/up-to-date differ diff --git a/download_hs/download-hs.cabal b/download_hs/download-hs.cabal new file mode 100644 index 0000000..322b8a8 --- /dev/null +++ b/download_hs/download-hs.cabal @@ -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 diff --git a/gdl/gdl_log_report b/gdl/gdl_log_report new file mode 100755 index 0000000..b49a8a4 --- /dev/null +++ b/gdl/gdl_log_report @@ -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 diff --git a/gdl/gdl_log_report.sh b/gdl/gdl_log_report.sh new file mode 100755 index 0000000..67aab9e --- /dev/null +++ b/gdl/gdl_log_report.sh @@ -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 diff --git a/gdl/gdl_mv b/gdl/gdl_mv new file mode 100755 index 0000000..0b014b3 --- /dev/null +++ b/gdl/gdl_mv @@ -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 diff --git a/gdl/gdl_mv.sh b/gdl/gdl_mv.sh new file mode 100755 index 0000000..057d642 --- /dev/null +++ b/gdl/gdl_mv.sh @@ -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 diff --git a/gdl/track_files.fish b/gdl/track_files.fish new file mode 100644 index 0000000..172393a --- /dev/null +++ b/gdl/track_files.fish @@ -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 diff --git a/metadata_changes.log b/metadata_changes.log new file mode 100644 index 0000000..d4f5847 --- /dev/null +++ b/metadata_changes.log @@ -0,0 +1,1112 @@ +File: /home/jawz/Pictures/Photos/Camera/2010/11/1229960_10201046223550315_394938389_n.jpg + Old Date: No date metadata + New Date: 2355:03:15 39:49:38 + +File: /home/jawz/Pictures/Photos/Camera/2010/11/20101101153809.m2ts + Old Date: No date metadata + New Date: 2010:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2010/11/1229960_10201046223550315_394938389_n.jpg + Old Date: No date metadata + New Date: 2355:03:15 39:49:38 + +File: /home/jawz/Pictures/Photos/Camera/2010/11/20101101153809.m2ts + Old Date: No date metadata + New Date: 2010:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2011/03/P3060026.mp4 + Old Date: No date metadata + New Date: 2011:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2011/03/P3060028.mp4 + Old Date: No date metadata + New Date: 2011:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2011/03/P3060029.mp4 + Old Date: No date metadata + New Date: 2011:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2012/02/D.jpg + Old Date: No date metadata + New Date: 2012:02:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2012/08/DSC00629.gif + Old Date: No date metadata + New Date: 2012:08:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2012/08/DSC00630.gif + Old Date: No date metadata + New Date: 2012:08:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2012/11/706341_309217029184265_2079072739_o_309217029184265.jpg + Old Date: No date metadata + New Date: 2918:42:65 20:79:07 + +File: /home/jawz/Pictures/Photos/Camera/2013/03/2013-03-06 02_11_31-Danilo Reyes.png + Old Date: No date metadata + New Date: 2013:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_16_05-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_16_21-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_16_22-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_16_23-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_32-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_34-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_35-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_37-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_38-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_40-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_41-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/SWScan00114.bmp + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/SWScan00115.bmp + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/06/20130629_193543.mp4 + Old Date: No date metadata + New Date: 2013:06:29 19:35:43 + +File: /home/jawz/Pictures/Photos/Camera/2013/06/3095776-jl_23-2-lobo.jpg + Old Date: No date metadata + New Date: 2013:06:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/07/20130719_191504-edited.jpg + Old Date: No date metadata + New Date: 2013:07:19 19:15:04 + +File: /home/jawz/Pictures/Photos/Camera/2013/07/20130719_191504.jpg + Old Date: No date metadata + New Date: 2013:07:19 19:15:04 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829115333330.jpg + Old Date: 2014:11:10 17:39:38 + New Date: 2013:08:29 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829152103397.jpg + Old Date: 2014:11:10 17:37:41 + New Date: 2013:08:29 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829152118408.jpg + Old Date: 2014:11:10 17:37:27 + New Date: 2013:08:29 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829152118674.jpg + Old Date: 2014:11:10 17:37:14 + New Date: 2013:08:29 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829152119073.jpg + Old Date: 2014:11:10 17:36:56 + New Date: 2013:08:29 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829184927102.jpg + Old Date: 2014:11:10 17:36:25 + New Date: 2013:08:29 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130828_194914-edited.jpg + Old Date: No date metadata + New Date: 2013:08:28 19:49:14 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130828_194914.jpg + Old Date: No date metadata + New Date: 2013:08:28 19:49:14 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130828_194932-edited.jpg + Old Date: No date metadata + New Date: 2013:08:28 19:49:32 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130828_194932.jpg + Old Date: No date metadata + New Date: 2013:08:28 19:49:32 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130829_142851-edited.jpg + Old Date: No date metadata + New Date: 2013:08:29 14:28:51 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130829_142851.jpg + Old Date: No date metadata + New Date: 2013:08:29 14:28:51 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130829_144258-edited.jpg + Old Date: No date metadata + New Date: 2013:08:29 14:42:58 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130829_144258.jpg + Old Date: No date metadata + New Date: 2013:08:29 14:42:58 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PHOTO_20130830_223718-edited.jpg + Old Date: No date metadata + New Date: 2013:08:30 22:37:18 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PHOTO_20130830_223718.jpg + Old Date: No date metadata + New Date: 2013:08:30 22:37:18 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/1093937_10151761028959476_1924436615_o.jpg + Old Date: No date metadata + New Date: 2895:94:76 19:24:43 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/1375012_10151881825884476_1441754616_n.jpg + Old Date: No date metadata + New Date: 2588:44:76 14:41:75 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/image (2).jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/image (3).jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/image .jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/image.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/PHOTO_20130901_005330-edited.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:53:30 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/PHOTO_20130901_005330.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:53:30 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/PHOTO_20130901_005405-edited.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:54:05 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/PHOTO_20130901_005405.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:54:05 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/VID_20130919_142819.mp4 + Old Date: No date metadata + New Date: 2013:09:19 14:28:19 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/VID_20130927_002610.mp4 + Old Date: No date metadata + New Date: 2013:09:27 00:26:10 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/CameraZOOM-20130829144204293.jpg + Old Date: 2014:11:10 17:39:07 + New Date: 2013:08:29 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/CameraZOOM-20130928241225429.jpg + Old Date: 2014:11:10 17:35:08 + New Date: 2013:09:28 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/Danilo_Reyes_udk_environment-edited.jpg + Old Date: No date metadata + New Date: 2013:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/Danilo_Reyes_udk_environment.jpg + Old Date: No date metadata + New Date: 2013:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/IMG_20131104_155721-ACTION-edited.jpg + Old Date: No date metadata + New Date: 2013:11:04 15:57:21 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/IMG_20131104_155721-ACTION.jpg + Old Date: No date metadata + New Date: 2013:11:04 15:57:21 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/1523160_10152201610856834_1392747401_o.jpg + Old Date: No date metadata + New Date: 1085:68:34 13:92:74 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/20131209_082931-SNOW.gif + Old Date: No date metadata + New Date: 2013:12:09 08:29:31 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/2013-MOVIE.m4v + Old Date: No date metadata + New Date: 2013:12:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/857147_10152201610791834_1523902683_o.jpg + Old Date: No date metadata + New Date: 1079:18:34 15:23:90 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/IMG_20131220_080058-SNOW.gif + Old Date: No date metadata + New Date: 2013:12:20 08:00:58 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00001-edited.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00001.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00019-edited.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00019.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00020-edited.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00020.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00021-edited.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00021.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00022-edited.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00022.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00023-edited.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00023.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00035-edited.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01_00035.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01 17_09_35-Crunchyroll - Watch Beyond (1).jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01 17_09_35-Crunchyroll - Watch Beyond .jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01 17_10_02-Crunchyroll - Watch Beyond (1).jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-01 17_10_02-Crunchyroll - Watch Beyond .jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-03_00068-edited.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/2014-01-03_00068.jpg + Old Date: No date metadata + New Date: 2014:01:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/01/IMG_20140110_140354-MOTION.gif + Old Date: No date metadata + New Date: 2014:01:10 14:03:54 + +File: /home/jawz/Pictures/Photos/Camera/2014/02/IMG_20140208_165608-MOTION.gif + Old Date: No date metadata + New Date: 2014:02:08 16:56:08 + +File: /home/jawz/Pictures/Photos/Camera/2014/02/VID_20140224_152734.mp4 + Old Date: No date metadata + New Date: 2014:02:24 15:27:34 + +File: /home/jawz/Pictures/Photos/Camera/2014/02/walkingquest-2014-02-26-17-25-18-78-MOTION.gif + Old Date: No date metadata + New Date: 2014:02:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/03/_20140304_145101-edited.jpg + Old Date: No date metadata + New Date: 2014:03:04 14:51:01 + +File: /home/jawz/Pictures/Photos/Camera/2014/03/_20140304_145101.JPG + Old Date: No date metadata + New Date: 2014:03:04 14:51:01 + +File: /home/jawz/Pictures/Photos/Camera/2014/04/2014-04-18 02_01_27-Greenshot-MOTION.gif + Old Date: No date metadata + New Date: 2014:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/04/VID_20140427_071112.mp4 + Old Date: No date metadata + New Date: 2014:04:27 07:11:12 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_181722-edited.jpg + Old Date: No date metadata + New Date: 2014:05:01 18:17:22 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_181722.jpg + Old Date: No date metadata + New Date: 2014:05:01 18:17:22 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_203605-edited.jpg + Old Date: No date metadata + New Date: 2014:05:01 20:36:05 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_203605.jpg + Old Date: No date metadata + New Date: 2014:05:01 20:36:05 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_203610-edited.jpg + Old Date: No date metadata + New Date: 2014:05:01 20:36:10 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_203610.jpg + Old Date: No date metadata + New Date: 2014:05:01 20:36:10 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_203620-edited.jpg + Old Date: No date metadata + New Date: 2014:05:01 20:36:20 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_203620.jpg + Old Date: No date metadata + New Date: 2014:05:01 20:36:20 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_203628-edited.jpg + Old Date: No date metadata + New Date: 2014:05:01 20:36:28 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140501_203628.jpg + Old Date: No date metadata + New Date: 2014:05:01 20:36:28 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_151425-edited.jpg + Old Date: No date metadata + New Date: 2014:05:05 15:14:25 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_151425.jpg + Old Date: No date metadata + New Date: 2014:05:05 15:14:25 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_151458-edited.jpg + Old Date: No date metadata + New Date: 2014:05:05 15:14:58 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_151458.jpg + Old Date: No date metadata + New Date: 2014:05:05 15:14:58 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_151844-edited.jpg + Old Date: No date metadata + New Date: 2014:05:05 15:18:44 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_151844.jpg + Old Date: No date metadata + New Date: 2014:05:05 15:18:44 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_152022-edited.jpg + Old Date: No date metadata + New Date: 2014:05:05 15:20:22 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_152022.jpg + Old Date: No date metadata + New Date: 2014:05:05 15:20:22 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_174429-edited.jpg + Old Date: No date metadata + New Date: 2014:05:05 17:44:29 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140505_174429.jpg + Old Date: No date metadata + New Date: 2014:05:05 17:44:29 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140509_084421-edited.jpg + Old Date: No date metadata + New Date: 2014:05:09 08:44:21 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140509_084421.jpg + Old Date: No date metadata + New Date: 2014:05:09 08:44:21 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140509_084425-edited.jpg + Old Date: No date metadata + New Date: 2014:05:09 08:44:25 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/IMG_20140509_084425.jpg + Old Date: No date metadata + New Date: 2014:05:09 08:44:25 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/Screenshot_2014-05-10-01-58-57.png + Old Date: No date metadata + New Date: 2014:05:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/VID_20140501_211750.mp4 + Old Date: No date metadata + New Date: 2014:05:01 21:17:50 + +File: /home/jawz/Pictures/Photos/Camera/2014/05/VID_20140515_125227.mp4 + Old Date: No date metadata + New Date: 2014:05:15 12:52:27 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011058311-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011058311.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011058311-MOTION.gif + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011058520-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011058520.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011058764-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011058764.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011058977-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011058977.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011059230-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011059230.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011059435-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011059435.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011059700-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011059700.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011059966-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011059966.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011100229-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011100229.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011100431-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011100431.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011100634-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011100634.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011100835-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011100835.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011101097-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011101097.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011101305-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011101305.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011101564-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011101564.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011101766-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011101766.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102030-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102030.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102234-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102234.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102498-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102498.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102701-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102701.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102964-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011102964.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011103169-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011103169.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011103430-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011103430.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011103634-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011103634.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011103896-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011103896.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011104101-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011104101.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011104367-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011104367.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011104568-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011104568.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011104832-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011104832.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105036-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105036.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105300-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105300.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105502-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105502.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105763-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105763.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105968-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011105968.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011106230-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011106230.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011106435-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011106435.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011106698-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011106698.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011106904-edited.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/CameraZOOM-20140630011106904.jpg + Old Date: No date metadata + New Date: 2014:06:30 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/IMG_20140602_181813-MOTION.gif + Old Date: No date metadata + New Date: 2014:06:02 18:18:13 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/IMG_20140622_222350-MOTION.gif + Old Date: No date metadata + New Date: 2014:06:22 22:23:50 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/Screenshot_2014-06-14-02-11-43.png + Old Date: No date metadata + New Date: 2014:06:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/Screenshot_2014-06-23-04-31-16.png + Old Date: No date metadata + New Date: 2014:06:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/VID_20140609_231318.mp4 + Old Date: No date metadata + New Date: 2014:06:09 23:13:18 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/VID_20140609_231359.mp4 + Old Date: No date metadata + New Date: 2014:06:09 23:13:59 + +File: /home/jawz/Pictures/Photos/Camera/2014/06/VID_20140630_011131.mp4 + Old Date: No date metadata + New Date: 2014:06:30 01:11:31 + +File: /home/jawz/Pictures/Photos/Camera/2014/07/IMG_20140701_022159-MOTION.gif + Old Date: No date metadata + New Date: 2014:07:01 02:21:59 + +File: /home/jawz/Pictures/Photos/Camera/2010/11/1229960_10201046223550315_394938389_n.jpg + Old Date: No date metadata + New Date: 2010:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2010/11/20101101153809.m2ts + Old Date: No date metadata + New Date: 2010:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2011/03/P3060026.mp4 + Old Date: No date metadata + New Date: 2011:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2011/03/P3060028.mp4 + Old Date: No date metadata + New Date: 2011:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2011/03/P3060029.mp4 + Old Date: No date metadata + New Date: 2011:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2010/11/1229960_10201046223550315_394938389_n.jpg + Old Date: No date metadata + New Date: 2010:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2010/11/20101101153809.m2ts + Old Date: No date metadata + New Date: 2010:11:01 15:38:09 + +File: /home/jawz/Pictures/Photos/Camera/2011/03/P3060026.mp4 + Old Date: No date metadata + New Date: 2011:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2011/03/P3060028.mp4 + Old Date: No date metadata + New Date: 2011:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2011/03/P3060029.mp4 + Old Date: No date metadata + New Date: 2011:03:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2012/02/D.jpg + Old Date: No date metadata + New Date: 2012:02:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2012/08/DSC00629.gif + Old Date: No date metadata + New Date: 2012:08:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2012/08/DSC00630.gif + Old Date: No date metadata + New Date: 2012:08:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2012/11/706341_309217029184265_2079072739_o_309217029184265.jpg + Old Date: No date metadata + New Date: 2012:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/03/2013-03-06 02_11_31-Danilo Reyes.png + Old Date: No date metadata + New Date: 2013:03:06 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_16_05-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_16_21-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_16_22-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_16_23-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_32-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_34-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_35-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_37-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_38-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_40-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/2013-04-10 09_17_41-Greenshot.png + Old Date: No date metadata + New Date: 2013:04:10 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/SWScan00114.bmp + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/04/SWScan00115.bmp + Old Date: No date metadata + New Date: 2013:04:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/06/20130629_193543.mp4 + Old Date: No date metadata + New Date: 2013:06:29 19:35:43 + +File: /home/jawz/Pictures/Photos/Camera/2013/06/3095776-jl_23-2-lobo.jpg + Old Date: No date metadata + New Date: 2013:06:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/07/20130719_191504-edited.jpg + Old Date: No date metadata + New Date: 2013:07:19 19:15:04 + +File: /home/jawz/Pictures/Photos/Camera/2013/07/20130719_191504.jpg + Old Date: No date metadata + New Date: 2013:07:19 19:15:04 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829115333330.jpg + Old Date: 2014:11:10 17:39:38 + New Date: 2013:08:29 11:53:33 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829152103397.jpg + Old Date: 2014:11:10 17:37:41 + New Date: 2013:08:29 15:21:03 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829152118408.jpg + Old Date: 2014:11:10 17:37:27 + New Date: 2013:08:29 15:21:18 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829152118674.jpg + Old Date: 2014:11:10 17:37:14 + New Date: 2013:08:29 15:21:18 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829152119073.jpg + Old Date: 2014:11:10 17:36:56 + New Date: 2013:08:29 15:21:19 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/CameraZOOM-20130829184927102.jpg + Old Date: 2014:11:10 17:36:25 + New Date: 2013:08:29 18:49:27 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130828_194914-edited.jpg + Old Date: No date metadata + New Date: 2013:08:28 19:49:14 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130828_194914.jpg + Old Date: No date metadata + New Date: 2013:08:28 19:49:14 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130828_194932-edited.jpg + Old Date: No date metadata + New Date: 2013:08:28 19:49:32 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130828_194932.jpg + Old Date: No date metadata + New Date: 2013:08:28 19:49:32 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130829_142851-edited.jpg + Old Date: No date metadata + New Date: 2013:08:29 14:28:51 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130829_142851.jpg + Old Date: No date metadata + New Date: 2013:08:29 14:28:51 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130829_144258-edited.jpg + Old Date: No date metadata + New Date: 2013:08:29 14:42:58 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PANO_20130829_144258.jpg + Old Date: No date metadata + New Date: 2013:08:29 14:42:58 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PHOTO_20130830_223718-edited.jpg + Old Date: No date metadata + New Date: 2013:08:30 22:37:18 + +File: /home/jawz/Pictures/Photos/Camera/2013/08/PHOTO_20130830_223718.jpg + Old Date: No date metadata + New Date: 2013:08:30 22:37:18 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/1093937_10151761028959476_1924436615_o.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/1375012_10151881825884476_1441754616_n.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/image (2).jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/image (3).jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/image .jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/image.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/PHOTO_20130901_005330-edited.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:53:30 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/PHOTO_20130901_005330.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:53:30 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/PHOTO_20130901_005405-edited.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:54:05 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/PHOTO_20130901_005405.jpg + Old Date: No date metadata + New Date: 2013:09:01 00:54:05 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/VID_20130919_142819.mp4 + Old Date: No date metadata + New Date: 2013:09:19 14:28:19 + +File: /home/jawz/Pictures/Photos/Camera/2013/09/VID_20130927_002610.mp4 + Old Date: No date metadata + New Date: 2013:09:27 00:26:10 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/CameraZOOM-20130829144204293.jpg + Old Date: 2014:11:10 17:39:07 + New Date: 2013:08:29 14:42:04 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/Danilo_Reyes_udk_environment-edited.jpg + Old Date: No date metadata + New Date: 2013:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/Danilo_Reyes_udk_environment.jpg + Old Date: No date metadata + New Date: 2013:11:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/IMG_20131104_155721-ACTION-edited.jpg + Old Date: No date metadata + New Date: 2013:11:04 15:57:21 + +File: /home/jawz/Pictures/Photos/Camera/2013/11/IMG_20131104_155721-ACTION.jpg + Old Date: No date metadata + New Date: 2013:11:04 15:57:21 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/1523160_10152201610856834_1392747401_o.jpg + Old Date: No date metadata + New Date: 2013:12:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/20131209_082931-SNOW.gif + Old Date: No date metadata + New Date: 2013:12:09 08:29:31 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/2013-MOVIE.m4v + Old Date: No date metadata + New Date: 2013:12:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/857147_10152201610791834_1523902683_o.jpg + Old Date: No date metadata + New Date: 2013:12:01 00:00:00 + +File: /home/jawz/Pictures/Photos/Camera/2013/12/IMG_20131220_080058-SNOW.gif + Old Date: No date metadata + New Date: 2013:12:20 08:00:58 + diff --git a/photos-metadata.sh b/photos-metadata.sh new file mode 100755 index 0000000..4917ba1 --- /dev/null +++ b/photos-metadata.sh @@ -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