úterý 6. srpna 2024

Obnova souborů pomocí nástroje photorec (testdisk)

Na připojeném oddílu /home ve složce uživatele jsem omylem smazal soubory. Vím, že jde jen o pár skriptů a dalších blobostí, ale ten skript byl instalační a připravoval jsem ho dlouho. Chci ho obnovit, ale nástroj photorec z repozitáře programu testdisk asi obnovuje (na oddíl s rootem) snad všechny soubory! No nevím to jistě, skripty jsem tam nenašel. Každopádně během obnovování do složky /restore jsem musel mazat ty nepotřebný soubory, ze složky restore, protože jsem mělo obavu, aby mi při tom nedošlo místo na disku.

sudo apt install testdisk

sudo mkdir /restore

cd restore

/restore$ sudo photorec /dev/sda5

POZOR! MAŽE REKURZIVNĚ MNOHO SOUBORŮ A BEZ MILOSTI!

/restore$ sudo find /vzdy/zadej/absolutni/cestu/nebo/si/odpalis/system/jako/ja/a/nikdy/nemaz/soubory/systemu/ja -type f \( -name "*.elf" -o -name "*.jpg" -o -name "*.svg" -o -name "*.gif" -o -name "*.png" -o -name "*.bmp" -o -name "*.ico" -o -name "*.mp3" -o -name "*.wav" -o -name "*.m4p" -o -name "*.mp4" -o -name "*.avi" -o -name "*.mov" -o -name "*.java" -o -name "*.zip" -o -name "*.gz" -o -name "*.sqlite" -o -name "*.c" -o -name "*.h" -o -name "*.f" -o -name "*.exe" -o -name "*.dll" -o -name "*.exe" -o -name "*.ini" -o -name "*.wps" -o -name "*.xls" -o -name "*.xml" -o -name "*.db" -o -name "*.jar" -o -name "*.a" -o -name "*.jsonlz4" -o -name "*_dll" -o -name "*.plist" -o -name "*.tex"  -o -name "*.deb" -o -name "*.mat" -o -name "*.tz" -o -name "*.bz2" -o -name "*.php" -o -name "*.class" -o -name "*_exe" -o -name "*.go" \) -exec rm {} \;

Jak se to stalo, že jsem smazal soubory?

místo

sudo rm file*

jsem napsal

sudo rm file *

Tím se systém pokusil smazat soubor file a navíc ještě všechny soubory!

Najít soubory *.sh změněné nebo vytvořené včera nebo předevčírem

find /path/to/directory -type f -name "*.sh" \( -mtime -2 -o -mtime -1 \)

A přesunout je do složky /restore/sh

find /path/to/directory -type f -name "*.sh" \( -mtime -2 -o -mtime -1 \)

Já smazal obrázkoivé soubory jako ikony z /usr/share a /usr/include, ale chatGPT mi zadal skript na obnovu z referenčního systému. Jen je třeba ten referenční systém aktualizovat na stejnou verzi

f

Python: Sjednocení tří seznamů do jednoho seznamu

Toto jsem zjistil, když jsem pracoval na programu pro analýzu zvukové nahrávky a snížení šumu.

Příkaz return lower_group + middle_group + upper_group v Pythonu provádí sjednocení (konkatenaci) tří seznamů (lower_group, middle_group a upper_group) do jednoho seznamu. Tento příkaz vytváří nový seznam, který obsahuje prvky všech tří seznamů v pořadí, v jakém byly konkatenovány.

Jak to funguje

Představme si, že máme tři seznamy:

 lower_group = [1, 2, 3]

 middle_group = [4, 5, 6]

 upper_group = [7, 8, 9]

 Pokud použijeme příkaz lower_group + middle_group + upper_group, dostaneme:

 combined_group = lower_group + middle_group + upper_group  

 print(combined_group) # Výstup: [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

Detaily

  • Seznamy (listy): V Pythonu jsou seznamy reprezentovány hranatými závorkami []. Jsou to mutable (měnitelné) datové struktury, což znamená, že jejich obsah může být měněn po vytvoření.
  • Konkatenace seznamů: Operátor + spojený s seznamy v Pythonu provádí jejich konkatenaci. To znamená, že nový seznam bude obsahovat všechny prvky z původních seznamů v pořadí, v jakém byly přidány.

Proč to funguje

V kontextu funkce recursive_analysis je konkatenace těchto seznamů způsob, jakým funkce vrací sjednocené výsledky všech tří skupin hlasitosti (lower, middle, upper) zpět do jednoho seznamu, který pak může být dále analyzován nebo vrácen jako výsledek funkce.

Praktický příklad

Zde je jednoduchý příklad, jak by to mohlo vypadat:

 def combine_groups(lower_group, middle_group, upper_group):
    return lower_group + middle_group + upper_group

lower_group = [1, 2, 3]
middle_group = [4, 5, 6]
upper_group = [7, 8, 9]

combined_group = combine_groups(lower_group, middle_group, upper_group)
print(combined_group)  # Výstup: [1, 2, 3, 4, 5, 6, 7, 8, 9]

Tuple vs. List

  • List: Mutable, používají se hranaté závorky [].
  • Tuple: Immutable (neměnitelné), používají se kulaté závorky ().

V tomto případě se jedná o seznamy (listy), protože jsou mutable a často se používají pro datové struktury, které je potřeba měnit nebo iterativně zpracovávat. Tuple by se použily, pokud byste chtěli mít neměnitelné datové struktury, které se po vytvoření nemění.

 

pondělí 5. srpna 2024

Syntaxe na tvorbu písně Sunny Day

This information is taken from discord

APP


 
When creating your song, there is a chance you will come across an issue that will frustrate you, and cost you tons of credits to fix, or potentially never fix. Next thing you know you are 3k credits or more into a song and you are pissed off. Ready to start blowing up the discord. Don't worry my friend. I have discovered the cause of this problem, and if you follow these guidelines, you will never have this issue again, unless you specifically create a situation that causes it.
 
So what are the likely culprits for this problem?
 
• Song Structure
• Large syllable count differences between parts of song
• Spaces, between lines, tags, and at the end of lines that are not needed in a typical song structure in suno (4 lines space 4 lines space 4 lines space structure)
 

    Song Structure

For the purposes of this workflow I will be using my current song structure. It looks like below. This can be made shorter, interlude can be moved, a break and a bridge are typically where i have them specifically, but you can change if you want.
 
•### Intro : ( Descriptors ... text s popisem místo tagů je zde... )
Text písně
 
•### Verse 1: ( Descriptors)
Text písně
 
•### Pre-Chorus: ( Descriptors )
Text písně
 
•### Chorus 1: ( Descriptors )  
Text refrénu
 
•### Verse 2: ( Descriptors )
Text písně

•### Pre-Chorus: ( Descriptors )
Text refrénu
 
•### Chorus 2: ( Descriptors )
Text refrénu
 
•### Instrumental Break: ( Descriptors )
 
•### Interlude: ( Descriptors )
 
•### Bridge: ( Descriptors)  
 
•### Chorus 3: ( Descriptors )  
 
•### Outro: ( Descriptors )
 
•### Final Flourish:  
 
There are many reasons why i think this structure, and how its specifically written is the most superior to me.
 
• It has 0 Meta Tags, as is commonplace currently, ie [This]
 
• My testing has shown 3 tags back to back in sequential order is the Max, before you will start experiencing problems. When you already spend tags on the song structure itself, it leaves little freedom for controlling other things, like vocals.
 
• Depending on structure the ai can attach an entire verse to a tag structure, and when it comes up later it will jump back to when it was used previously. This has happened to me using similar tag in 2 verses, and having the same word in each verse.
 
• The dhash ( # ) typically tells codes, machines, ai, to ignore something. However when using multiple theres different meaning. In Chatgpt and other AI three Dhash means really large text, like a title, and this thus seperates it from everything else.
 
• Descriptors do work. However be brief, and ask for things it understands easily. If you ask for a theremin, expect no success in 3.5.
 

    Large syllable count differences

For this,  I will show you a few examples.
 
•  (Refer to comment 1 below) Notice here it specifically repeats the previous verse at 1:50 because the bridge has a large syllable count difference from the rest of the song.
 
•  (Refer to comment 2 below) However you will notice here, with enough time you can make it work without any extends.
 
• This syllable count difference looks like this. Notice the jump, and also the poor structure. 19 17 15 19 compared to previously.
 
• https://ibb.co/yfxd7Rf
 
• As such, you want a similar syllable count structure throughout the song. If you differ from your structure, expect several attempts, or extends to fix.
 

    Spaces and spacing

• Spacing can cause problems. This is more apparent when using meta tags. If using meta tags, keep each tag on a seperate line with no spaces between them or the verse / chorus / ect you are applying them to.
 
• If you copy your lyrics from a word editor of some kind, check for excessive extra spacing at the end of lines, especially song structure headings, like verses and chorus'.
 
• If you use my song structure, you shouldn't have any issues with this, unless you excessively add meta tags to it. 

 

neděle 28. července 2024

Skript na zpomalení videa (copyright Radek Šimánek)

Jsem autorem tohoto programu, který generuje zpomalené videa do složky Output, do jednotlivých adresářů. Unikátnost spočívá v tom, že je ve výsledném videu jsou zachovány tóny ve zvuku. V každém adresáři budou soubory podle faktoru zpomalení. Klíčové pro mě bylo vytvořit ramdisk. Díky tomu se dočasné soubory nekopírují na fyzický disk. Program lze spustit na linuxu, testováno na python3.

Licence je nekomerční - za poplatek 200 Kč si můžete program zkopírovat do svého PC za účelem zřízení kopie pouze pro vás své použití. Psal jsem to 6 hodin. V případě zájmu o zaplacení licenčního poplatku mi napište komentář a pošlu vám číslo svého účtu.


# Autor: Radek Šimánek, 28.7.2024
# REQUIRES: moviepy a pydub
# librosa měla problém s kompatibilitou, takže jsem použil pydub
import os
from moviepy.editor import VideoFileClip, vfx, AudioFileClip
from pydub import AudioSegment

ramdisk_size = 50 # unit MB

# Cesty ke složkám
home_dir = os.path.expanduser("~")
default_path = "Videa/Kytarové rytmy - strumming patterns"
input_dir = os.path.join(home_dir, default_path)

os.system('clear')
print("Zadejte heslo sudo, pro vytvoření ramdisku.")
os.system('sudo echo " "')
user_choice = input("Chcete použít aktuální složku (.) nebo přednastavenou složku? Zadejte '.' pro aktuální složku nebo 'default' pro přednastavenou složku: ")
if user_choice == '.':
input_dir = os.path.abspath('.')

# Faktory zpomalení
slowdowns = [5, 6, 8, 10]

# Vytvoření výstupních složek dynamicky na základě faktorů zpomalení
output_dirs = [os.path.join(input_dir, f"Output/{factor}") for factor in slowdowns]
for dir in output_dirs:
os.makedirs(dir, exist_ok=True)

# Funkce pro změnu pitch audia bez změny rychlosti
def audio_pitchup_ffmpeg(input_audio_path, output_audio_path, factor):
command = f'ffmpeg -i "{input_audio_path}" -filter_complex "rubberband=pitch={factor}" "{output_audio_path}"'
os.system(command)

# Vytvoření RAM disku
ramdisk_path = os.path.join(input_dir, "ramdisk")
log_file = os.path.join(input_dir, "ramdisk.log")
if not os.path.exists(ramdisk_path):
os.makedirs(ramdisk_path)
with open(log_file, "w") as log:
os.system(f'sudo mount -t tmpfs -o size={ramdisk_size}M tmpfs "{ramdisk_path}"')
os.system(f'df "{ramdisk_path}" > "{log_file}"')

with open(log_file, "r") as log:
log_content = log.read()

if ramdisk_path in log_content:
print(f"RAM disk is correctly mounted.")
else:
print(f"RAM disk is not found")
 
# Zpomalení videí a korekce tónu
for video_file in os.listdir(input_dir):
video_path = os.path.join(input_dir, video_file)
if os.path.isfile(video_path) and video_file.endswith(".mp4"): # Upravte podle formátu vašich videí
for i, factor in enumerate(slowdowns):
output_path = os.path.join(output_dirs[i], video_file)
video_clip = VideoFileClip(video_path)
# Extrakce a úprava audio stopy
temp_audio_path = os.path.join(ramdisk_path, "temp_audio.wav")
video_clip.audio.write_audiofile(temp_audio_path, codec='pcm_s16le')
new_audio_path = os.path.join(ramdisk_path, "new_temp_audio.wav")
audio_pitchup_ffmpeg(temp_audio_path, new_audio_path, factor)
new_audio_clip = AudioFileClip(new_audio_path)
# Vytvoření nového video klipu s upravenou audio stopou
# Musí se dočasně uložit do souboru:
edited_clip = video_clip.set_audio(new_audio_clip)
temp_video_name = 'temp-final-video.m4a'
edited_clip.write_videofile(
os.path.join(ramdisk_path, temp_video_name),
codec="libx264",
audio_codec="aac",
temp_audiofile=os.path.join(ramdisk_path,'temp-audio-1.m4a'),
remove_temp=True,
threads=4,
preset='ultrafast'
)
video_clip.close()
new_audio_clip.close()
edited_clip = VideoFileClip(os.path.join(ramdisk_path, temp_video_name))


edited_clip = edited_clip.fx(vfx.speedx, 1.0 / factor)
edited_clip.set_duration(edited_clip.duration)
a = edited_clip.audio.duration
v = edited_clip.duration

print(f"Processing {video_file} with slowdown factor {factor}. Saving to {output_path}")
edited_clip.write_videofile(
output_path,
codec="libx264",
audio_codec="aac",
temp_audiofile=os.path.join(ramdisk_path,'temp-audio-2.m4a'),
remove_temp=True,
threads=4,
preset='ultrafast'
)
edited_clip.close()
# Odstranění dočasných souborů z ramdisku
if os.path.exists(temp_audio_path):
os.remove(temp_audio_path)
if os.path.exists(new_audio_path):
os.remove(new_audio_path)
if os.path.exists(os.path.join(ramdisk_path, temp_video_name)):
os.remove(os.path.join(ramdisk_path, temp_video_name))
print("Job done.")
print("sudo unmount ramdisk")
os.system(f'sudo umount "{ramdisk_path}"')


Můj IQ test - mensa

 Co s tímto? To jsem musel hádat! Je to obyčejná exkluzivní disjunkce prvního a druhého obrázku do třetího po řádkách. 1.) Vezmi první ...

Štítky

.profile adm administrace Adobe Aho-Corasick AI akcelerace alfa transparence analýza AND any aplikace apt ar archiv asociativní pole atomicity audacity audio autentifikace awk balíčkovací systém bash beacon beacon_hint benchmark Bézierovy křivky bezpečnost biblehub BJT blogger boolean Braessův paradox brainstorming BRE buffer buffering bufferované čtení Cache-Conrol Cloudflare code Collector Cut-off ColorManager colorpicker common compare config cookies CPU CPU pipe crop css CSS3 curl current code cut čas data loss data lost data transfer reliability datasheet datetime.strptime deb deb-systemd-helper debian debián depricated development dict dioda diody disonance doprava dpkg dpkg -S dpkg-deb drivers EBO efekt Emitter Cut-off Current eps ETag exclude exec Expires extrakce jediného extrakce názvu balíčku souboru extrakce obrázků extrakce souboru .deb fflock fflush ffmpeg FIFO file read file write file_get_contents file_get_contents/file_put_contents file_put_contents filter find first_install.sh flock Fly-back dioda font-face fonty fóra formant-preserving morphing fotorezistor fread functions funkce fwrite gate gate drive GDVfs gedit gedit-common geolokace getdata Ghostscript GIO glib gnome gnome settings GNU Privacy Guard gnupg gpg gradient-background grafika grep grep -v groupadd grub grub update gs gsettings gtk gtk.css gtk+ hebrejština history hlavičky HS html html 5 https hudba hunspell charakterizace chatGPT chroot chyba ICES IGBT Image img sizes img srcset impedance implementace imshow inference inkscape inrush current install IQ jalový výkon javascript javescript jednocení seznamů js jsonData kapacita součástek koeficient zesílení komponenty xFce komunikace se serverem koncept konfigurace kontejner korekce barev Krita KSF kvantifikátor Last-Modified lazy caching led LEFT JOIN librosa ligatury light-locker lightdm linux list log maják manuál map mapování maskování maskování hlasu maskování služby masky matplotlib Max-Age measure memory měření meta MFCC MFCC koeficienty mint Mint 21.3 Mint xFce míry modules moralizace morphologie MOSFET mount moviepy mysql náběhový proud napěťová ochrana nastavení šablony návod nel Network Error Logging NLP normalizace šedi po resize not Notifications NTFS nth-child oblasti oblékání ochrana okruhy přátel OpenVINO IR formát oprava oprava balíčku optočlen org.gnome.desktop.screensaver org.gnome.nm-applet ořezové masky OSHB otázky otázky_jazyky otázky_moralismu_řešení overlay ovladače panely parsování path pdf personifikace photorec php php 4 php 5 php 6 php 7 php 8 phpbb phpBB3 PipeWire pitch plus PN přechody pnp pole Policykit postscript práva profilování program prune průraz přeinstalování přepěťová ochrana přepolování příkazy připojení k síti připojení k wifi pseudokódd pstoedit PulseAudio PWM regulátory pydub python python3 pytorch ramdisk RBE RDSon read reaktance rectifier regex regulace vstupního napětí reinstall relyability remount replace restore reverzní geolokace RIGHT JOIN rm robotický hlas role rozvržení disků pro OS linux a data databází řešení samba scan scroll sdílení sdílení souborů Sec-Fetch-Dest Sec-Fetch-Mode Sec-Fetch-Site Sec-Fetch-User Secure Shell sed Set Cookie show-manual-login show-remote-login shunt schemas schémata schottka signal morphing skript skupiny sledovanost sloupce slučování seznamů služby small song sort soubory soundfile spínané zdroje spínání splines split spojování správa diskových zařízení SQL ssh stabilizace napětí stahování stíny stream string strojové učení stropové učení supplicant svg syntax systemctl systemd-logind T5 tabulka tabulky Tangentové úsečky tar témata tepelná ztráta terminologie test text-shadow themes thermal runaway time timestamp tkinter tr transformace transistor transition transpose tranzistor tranzistory ttf tuple tvorba otázek TVS typografie ubuntu účiník udiskd udisks unconfined underrun unity-greeter update usermod uživatelé va charakteristika vala věda vektorová grafika Vgs video vocoder Vth výkon vynechání adresářů vývoj while wpa wpa_supplicant wrapovací funkce x xandr xapp-watt xargs -I xed xed-common xfdesktop xml xmp XOR Xorg Xorg Thumbnails xrandr závislosti zdánlivý výkon zdroj zenerka zenerovo napětí zip zip archiv zkratky zpomalení zpracování textu zrychlení zvuk Žalmy