4chan Save

Save the 4chan thread

// ==UserScript==
// @name         4chan Save
// @namespace    http://github.com/hangjeff
// @version      2025-03-07_17h14m
// @description  Save the 4chan thread
// @author       hangjeff
// @match        https://boards.4chan.org/*
// @exclude      https://boards.4chan.org/search*
// @require      https://code.jquery.com/jquery-3.7.1.slim.min.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    $('.thread').each(function(){
        let Komica_Thread_Url = window.location.href;
        if(!Komica_Thread_Url.includes('thread')){
            Komica_Thread_Url = Komica_Thread_Url.substring(0, Komica_Thread_Url.lastIndexOf('/') + 1);
            if(!($(this).find('.postContainer').find('.replylink').first().attr('href') === undefined)  ){
               Komica_Thread_Url = Komica_Thread_Url + $(this).find('.postContainer').find('.replylink').first().attr('href');
                //alert(Komica_Thread_Url);
            }
            else{
                // Komica_Thread_Url = Komica_Thread_Url + $(this).find('.threadpost').find('.category a:last').attr('href');
                console.log('404 Thread Not Found!');
            }
        }
        // alert( Komica_Thread_Url);
        $(this).find('.postInfo').first().after(ArchiveIs_Create(Komica_Thread_Url, 'Thread'));
        $(this).find('.postInfo').first().after(GhostArchive_Create(Komica_Thread_Url, 'Thread'));

        if($(this).find('.fileThumb').length){
            let Komica_File_Url = 'https:' + $(this).find('.fileThumb').attr('href');

            if($(this).find('.fileThumb').attr('href').includes('.webm') || $(this).find('.fileThumb').attr('href').includes('.mp4')){
                $(this).find('.fileText').first().append(WebArchive_Create(Komica_File_Url, 'Video'));
            }
            else{
                // $(this).find('.fileText').first().append(WebArchive_Create(Komica_File_Url, 'Image'));
                $(this).find('.fileText').first().append(ArchiveIs_Create(Komica_File_Url, 'Image'));
            }
        }

    })

   reply_Class_Read();
   $(document).ready(function() {
       $(document).on('click', '.-expand-thread', function() {
           setTimeout(function(){
               reply_Class_Read();
               console.log('Done!');
           }, 1000);
       });
   });

   function reply_Class_Read(){
       $('.reply').each(function(){
           if($(this).find('.fileThumb').length){
               if(!$(this).find('form').length){
                   let Komica_File_Url = 'https:' + $(this).find('.fileThumb').attr('href');
                   if($(this).find('.fileThumb').attr('href').includes('.webm') || $(this).find('.fileThumb').attr('href').includes('.mp4')){
                       $(this).find('.fileThumb').append(WebArchive_Create(Komica_File_Url, 'Video'));
                   }
                   else{
                       // $(this).find('.fileText').append(WebArchive_Create(Komica_File_Url, 'Image'));
                       $(this).find('.fileText').append(ArchiveIs_Create(Komica_File_Url, 'Image'));
                   }
               }
           }
       })
   }
   
    function WebArchive_Create(myUrl, myTarget){
       let form = $('<form>', {
        name: 'wwmform_save',
        action: 'https://web.archive.org/save',
        method: 'POST',
                    target: '_blank'
    }).css('display', 'inline-block');

        form.append(
        $('<input>', {
                id: 'url',
                type: 'hidden',
                name: 'url',
                value: myUrl
            })
    );

        form.append(
        $('<input>', {
                type: 'submit',
                value: 'Save ' + myTarget + ' to Web archive',
            })
    );
        return form;
    }

    function ArchiveIs_Create(myUrl, myTarget){
       let form = $('<form>', {
        id: 'submiturl',
        action: 'https://archive.ph/submit/',
        method: 'GET',
                    target: '_blank'
    }).css('display', 'inline-block');

        form.append(
        $('<input>', {
                id: 'url',
                type: 'hidden',
                name: 'url',
                value: myUrl
            })
    );

        form.append(
        $('<input>', {
                type: 'submit',
                value: 'Save ' + myTarget + ' to archive.is',
                tabindex: '1'
            })
    );
        return form;
    }

    function GhostArchive_Create(myUrl, myTarget){
      let form = $('<form>', {
        id: 'submiturl',
        action: 'https://ghostarchive.org/archive2',
        method: 'POST',
                    target: '_blank'
    }).css('display', 'inline-block');

      form.append(
        $('<input>', {
                id: 'url',
                type: 'hidden',
                name: 'archive',
                value: myUrl
            })
    );

      form.append(
        $('<input>', {
                type: 'submit',
                value: 'Save ' + myTarget + ' to ghostarchive.org',
                tabindex: '1'
            })
    );

      return form;
    }

})();