Google Blog ČR informuje, že mobilní aplikaci Gemini a NotebookLM lze používat už také v Česku.
Byla vydána nová major verze 8 duálně licencovaného open source frameworku JUCE (Wikipedie, GitHub) pro vývoj multiplatformních audio aplikací.
Od 18. června bude možné předobjednat notebook DC-ROMA RISC-V LAPTOP II od společnosti DeepComputing s osmijádrovým 64-bit RISC-V AI CPU a s předinstalovaným Ubuntu.
Byla vydána verze 1.79.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání na GitHubu. Vyzkoušet Rust lze například na stránce Rust by Example.
Byly zveřejněny výsledky průzkumu (infografika) mezi uživateli FreeBSD.
Na konferenci DevConf.CZ 2024 je na stánku Furi Labs prezentován linuxový telefon FuriPhone FLX1. Jeho cena 499 dolarů.
Bylo vydáno Eclipse IDE 2024-06 aneb Eclipse 4.32. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Proton, tj. fork Wine integrovaný v Steam Play a umožňující v Linuxu přímo ze Steamu hrát hry určené pouze pro Windows, byl vydán ve verzi 9.0-2 (𝕏). Přehled novinek se seznamem nově podporovaných her na GitHubu. Aktuální přehled her pro Windows běžících díky Protonu také na Linuxu na stránkách ProtonDB.
Po roce od vydání verze 15.5 bylo vydáno openSUSE Leap 15.6. Přehled novinek v nejnovější verzi této linuxové distribuce v oznámení o vydání a v poznámkách k vydání.
Byla vydána nová verze 256 správce systému a služeb systemd (GitHub). Nově mimo jiné s run0 jako alternativou k sudo.
Tak jsem splodil další stahovací skripty, tentokrát to jsou iskladka.cz, ulozisko.sk a subory.sk.
Protože je to převážně výsledek copy&paste z předchozích skriptů a protože už se mi chce spát, tak se k tomu nebudu rozepisovat. Jenom poznámka, ulozisko.sk funguje jenom z ČR nebo SR.
#!/bin/bash if [ $# -eq 0 ];then cat <<EndHelp Usage: $0 URL ... EndHelp else tmpdir="$( mktemp -d )" while [ $# -gt 0 ];do url1="$1" shift output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url1" )" url2="$( dirname "$url1" )/$( echo "$output1" | perl -e ' undef $/; $a=<STDIN>; if ((($url)=($a=~m,<iframe[^>]+src="(iCopy/index.php[^"]+)",is)) and (($path,$param)=($url=~m,^(.*)\?file=(.*)$,i))) { $param=unpack("H*",$param); $param=~s/(..)/%$1/g; print sprintf("%s?file=%s",$path,$param); }; ' )" output2="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" --load-cookies="$tmpdir/cookies" --referer "$url1" "$url2" )" data3="$( echo "$output2" | perl -e ' undef $/; $a=<STDIN>; ($link)=($a=~m,var\s+downloadCounterLink\s*=\s*[\x27"]([^\x27"]+)[\x27"]\s*;,is); ($counter)=($a=~m,var\s+downloadCounter\s*=\s*(\d+)\s*;,is); if (($url)=($a=~m,^\s+document\.getelementbyid\("downloadstatus"\)\.innerhtml\s*=\s*"\s*<iframe[^>]+src=\x27(http.*/icopy/downloadbalancer[^\x27]+)\x27,im)) { $url=~s,"\+downloadCounterLink\+",$link,is; } $link=~tr/+/ /; $link=~s/%(..)/chr(hex($1))/ge; print sprintf("%s\\%s\\%s",$counter,$link,$url); ' )" url3="${data3##*\\}" delay="${data3%%\\*}" file="${data3%\\*}" file="${file#*\\}" echo "URL: $url3" echo "FILE: $file" if [ -e "$file" ];then echo "SKIP: the file $file exists" else if [ -n "$delay" ];then for i in `seq $delay -1 1`;do echo -en "waiting $delay seconds [ $i ] \r";sleep 1;done;echo;fi if [ -n "$url3" ];then wget -O "$file" -c --load-cookies="$tmpdir/cookies" --referer="$url2" "$url3" else echo "ERROR: no url to download" exit 1 fi fi done rm -rf "$tmpdir" fi
#!/bin/bash console=0 if [ $# -eq 0 ];then cat <<EndHelp Usage: $0 URL ... EndHelp else tmpdir="$( mktemp -d )" while [ $# -gt 0 ];do case "$1" in "-c") console=1 ;; "-x") console=0 ;; * ) url1="$1" shift output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url1" )" data="$( echo "$output1" | perl -e ' undef $/; $a=<STDIN>; ($delay)=($a=~m,^\bcislo\s*=\s*(\d+)\s*;,im); ($form)=($a=~m,(<form[^>]+name=captchaform[^>]*>.*?</form>),is); ($img)=($form=~m,<img[^>]+src="(/captcha3/captcha\.php\?id=[^"]+)"[^>]*>,is); ($url)=($form=~m,<form[^>]+action="([^"]+)",is); print sprintf("%s\\%s\\%s",$delay,$img,$url); ' )" echo "$data" baseurl="${url1%/download/*}" url2="$baseurl${data##*\\}" captchaimg="${data#*\\}" captchaimg="$baseurl${captchaimg%\\*}" wait="${data%%\\*}" echo "URL: $url2" echo "captcha: $captchaimg" echo "wait: $wait" waitstart="$( date +"%s" )" if [ -n "$url2" ] && [ -n "$captchaimg" ];then wget $rate -U "$agent" -nv -O "$tmpdir"/cap.jpg --load-cookies="$tmpdir"/cookies --save-cookies="$tmpdir"/cookies --keep-session-cookies "$captchaimg" if [ -n "$DISPLAY" ];then gqview "$tmpdir"/cap.jpg >/dev/null 2>&1 & pid="$!" ; fi code="" if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then while [ -z "$code" ];do code="$( Xdialog --no-cancel --title 'Megaupload downloader' --screen-center --stdout --inputbox 'Enter the CAPTCHA code' 10 40 )" ; if [ $? -eq 1 ];then code="-";fi;done else while [ -z "$code" ];do read -p 'Code ["-" for stop]: ' code;done fi if [ -n "$DISPLAY" ];then kill "$pid" ; fi if [ "$code" != "-" ];then if [ -n "$wait" ]; then realwait="$(( $( date +"%s" ) - ( $waitstart + $wait ) ))" if [ $( date +"%s" ) -le $(( $waitstart + $wait )) ] ; then while [ $( date +"%s" ) -le $(( $waitstart + $wait )) ];do echo -en "waiting $wait seconds [ $(( $waitstart + $wait - $( date +"%s" ) )) ] \r";sleep 1; done ; echo ; fi fi postdata="submitted=1&str=$code" wget --load-cookies="$tmpdir/cookies" --post-data="$postdata" --referer="$url1" "$url2" fi fi ;; esac done rm -rf "$tmpdir" fi
#!/bin/bash proxiesfile="$HOME/.download-proxies" if ! [ -e "$proxiesfile" ];then echo "Please, create file $proxiesfile" exit fi allproxylist="$( awk -F '|' '{print $2;}' "$proxiesfile" | tr '\n' ' ' )" sshtunnels="$( awk -F '|' '$1~/^.+$/{print " " $1,$2;}' "$proxiesfile" )" sshtunservers="$( awk -F '|' '$1~/^.+$/{print $1;}' "$proxiesfile" | tr '\n' ' ' )" console=0 if [ $# -gt 0 ];then i=$# while [ $i -gt 0 ];do case "$1" in -a) if [ $# -gt 1 ];then id="$[$2+1]" proxylist="$proxylist $( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | sed -n "${id}p" )" i=$[$i-1] shift 2 else echo "value please" exit fi ;; -d) if [ $# -gt 1 ];then id="$[$2+1]" if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi proxylist="$( echo "$proxylist" | tr -s '[[:space:]]' '\n' | sed "${id}d" )" i=$[$i-1] shift 2 else echo "value please" exit fi ;; -r) if [ $# -gt 1 ];then rate="--limit-rate=$2" i=$[$i-1] shift 2 else echo "value please" exit fi ;; -p) if [ $# -gt 1 ];then proxylist="$2" shift 2 i=$[$i-1] else echo "value please" exit fi ;; -c) console=1 shift ;; -x) console=0 shift ;; *) v="$1" shift 1 set "$@" "$v" ;; esac i=$[$i-1] done if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi tmpdir="$( mktemp -d )" echo "TMPDIR: $tmpdir" while [ $# -gt 0 ];do echo "Downloading URL $1" for proxy in $proxylist ;do if [ "$proxy" = "NONE" ];then unset http_proxy else export http_proxy="$proxy" fi echo "HTTP PROXY: $http_proxy" url1="$1" output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url1" )" data="$( echo "$output1" | perl -e ' undef $/; $a=<STDIN>; ($form)=($a=~m,(<form[^>]+name\s*=\s*"formular"[^>]*>.*?</form>),is); ($delay)=($form=~m,function\s+set\s*\(\s*\)\s*\{\s*cas_\d+\s*=\s*(\d+)\s*;\s*\},is); ($img)=($form=~m,<img[^>]+src="(/obrazky/obrazky\.php\?[^"]+)"[^>]*>,is); ($url)=($form=~m,<form[^>]+action\s*=\s*"([^"]+)",is); while (($hidden)=($form=~m,(<input[^>]+type\s*=\s*"hidden"[^>]*>),is)) { $form=~s,(<input[^>]+type\s*=\s*"hidden"[^>]*>),,is; ($name)=($hidden=~m,name\s*=\s*"([^"]+)",is); ($val)=($hidden=~m,value\s*=\s*"([^"]+)",is); $file=$val if ($name eq "name"); $val=unpack("H*",$val); $val=~s/(..)/%$1/g; push @hidden,sprintf("%s=%s",$name,$val); } print sprintf("%s\n%s\n%s\n%s\n%s",$delay,$img,$url,join("&",@hidden),$file); ' )" baseurl="http://www.ulozisko.sk" wait="$( echo "$data" | sed -n -e '1p;' )" captchaimg="$( echo "$data" | sed -n -e '2p;' )" url2="$( echo "$data" | sed -n -e '3p;' )" postdata="$( echo "$data" | sed -n -e '4p;' )" filename="$( echo "$data" | sed -n -e '5p;' )" echo "URL: $baseurl$url2" echo "captcha: $baseurl$captchaimg" echo "wait: $wait" waitstart="$( date +"%s" )" if [ -n "$url2" ] && [ -n "$captchaimg" ];then url2="$baseurl$url2" captchaimg="$baseurl$captchaimg" wget $rate -U "$agent" -nv -O "$tmpdir"/cap.png --load-cookies="$tmpdir"/cookies --save-cookies="$tmpdir"/cookies --keep-session-cookies "$captchaimg" if [ -n "$DISPLAY" ];then gqview "$tmpdir"/cap.png >/dev/null 2>&1 & pid="$!" ; fi code="" if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then while [ -z "$code" ];do code="$( Xdialog --no-cancel --title 'Ulozisko.Sk downloader' --screen-center --stdout --inputbox 'Enter the CAPTCHA code' 10 40 )" ; if [ $? -eq 1 ];then code="-";fi;done else while [ -z "$code" ];do read -p 'Code ["-" for stop]: ' code;done fi if [ -n "$DISPLAY" ];then kill "$pid" ; fi if [ "$code" != "-" ];then if [ -n "$wait" ]; then realwait="$(( $( date +"%s" ) - ( $waitstart + $wait ) ))" if [ $( date +"%s" ) -le $(( $waitstart + $wait )) ] ; then while [ $( date +"%s" ) -le $(( $waitstart + $wait )) ];do echo -en "waiting $wait seconds [ $(( $waitstart + $wait - $( date +"%s" ) )) ] \r";sleep 1; done ; echo ; fi fi postdata="$postdata&antispam=$code" wget -c --load-cookies="$tmpdir/cookies" --post-data="$postdata" --referer="$url1" "$url2" fi fi done shift done rm -rf "$tmpdir" else cat <<EndOfInfo ssh tunnels: $sshtunnels proxy list: $( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | nl -v0 -w4 -s' -- ' ) $sshtunservers Usage: $0 [ -a proxynum ] [ -d proxynum ] [ -r rate-limit ] [ -p proxyurl ] [ { -c | -x } ] URL ... -a proxynum add proxy at line proxynum -d proxynum delete proxy at line proxynum in ACTUAL proxy list -r rate-limit limit wget download rate -p proxyurl insert proxy specified by proxyurl -c use console to enter captcha code -x use X dialog to enter captcha code (this is default) URL URL to download EndOfInfo fi
Tiskni Sdílej:
dobra prace, jen bych z toho udelal jeden skript, kterej by to detekoval podle URL
jojo, uz jsme o tom u jednoho blogu premyslel, ze bych to trosku sjednotil do jednoho skriptu, udelal funkce a detekoval URL. Ale nevim, jestli by to nebylo zbytecne prace. Uz i takhle by se to dalo hodne optimalizovat. Ale nechci u toho travit vsechen cas, uz takhle to sezere nejakej ten cas zjistovani, ze ktery stranky na kterou stranku, ktery udaje vytahnout a pak pripadny upravy, kdyz neco zmeni. Takze nevim, mozna kdyz se budu nudit, ze z toho jeden skript udelam (je zase pravda, ze by se pak neopakoval kod na zobrazeni capcha a zadani hesla a pod). No, uvidime ...