• Как получить хэш файла через webdav3 библиотеку?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    AWEme, спасибо, но у меня не заработало. Пока работает в такой парадигме, но хочется не скачивать, а помещать в буффер:

    # Функция для вычисления хэша файла
    def calculate_hash(readable_buffer): 
        hash_md5 = hashlib.md5()
        for chunk in iter(lambda: readable_buffer.read(4096), b''):
            hash_md5.update(chunk)
        return hash_md5.hexdigest()
    
    
    # Список файлов на сетевом диске
    
    for file in media_files:
        filename = os.path.basename(file)
        print (filename)
        remote_path = f"{filename}" 
        local_path = file              
        
        try:
            # Проверяем, существует ли файл на WebDAV
            if filename not in webdav_client.list():
                # Correctly format remote and local paths
    
                webdav_client.upload_sync(remote_path = remote_path, local_path = local_path)
                print(f"File uploaded: {filename}")
                
            else:
                print(f"File already exists: {filename}")
    
                #hash_local = calculate_hash(local_path)
                with open(local_path, 'rb') as f:
                    hash_local = calculate_hash(f)
                    print(f"Local file hash: {hash_local}")
                webdav_client.download_sync(remote_path=remote_path, local_path=filename)
                # Получаем путь к домашней директории пользователя
                home_dir = os.path.expanduser('~')
    
                # Формируем полный путь к файлу
                file_path = os.path.join(home_dir, filename)
    
                # Проверяем, существует ли файл
                if os.path.exists(file_path):
                    print(f"Имя файла: {filename}")
                else:
                    print(f"Файл {filename} не найден в локальной папке пользователя.")
                with open(file_path, 'rb') as f:
                    hash_remote = calculate_hash(f)
                    print(f"Remote file hash: {hash_remote}")
                    
    
    
                
        except Exception as e:
            print(f"Error uploading file: {e}")
            continue
    Написано
  • Как получить хэш файла через webdav3 библиотеку?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    AWEme,
    # Подключаемся к WebDAV диску
    webdav_client = Client({
        'webdav_hostname': webdav_url,
        'webdav_login': webdav_username,
        'webdav_password': webdav_password
    })
    def calculate_hash(file_path):
    
        hash_md5 = hashlib.md5()
        with open(file_path, 'rb') as f:
            for chunk in iter(lambda: f.read(4096), b''):
                hash_md5.update(chunk)
        return hash_md5.hexdigest()
    
    hash_remote = calculate_hash(webdav_url + '/' + filename)


    Error uploading file: [Errno 22] Invalid argument: 'https://webdav.cloud.mail.ru/IMG_6447_1.JPG'
    Написано
  • Как получить хэш файла через webdav3 библиотеку?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    Алан Гибизов, Концептуально, не очень понимаю как через WebDAV это сделать? Хэш локального файла я сделала. А с WebDAV не понимаю, почему
    hash_remote = calculate_hash(webdav_client.info(filename))
    не работает.
    Написано
  • Как создать правильно API запрос на Python?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    Ваш вариант оказался рабочим в моей итерации.

    params = {
                "text": 'russia',
                "day": 1,
                "month": 1,
                "offset": 1,
            }
    
            param_str = urlencode(params)
            # формируем полную ссылку
            api_url = f'https://api.api-ninjas.com/v1/historicalevents?{param_str}'
            #print(api_url)
            response = requests.get(api_url, headers={'X-Api-Key': }


    ответ возвращается таким образом:
    [{"year": "1860", "month": "01", "day": "01", "event": "The first Polish stamp is issued, replacing the Russian stamps previously in use."}, {"year": "1998", "month": "01", "day": "01", "event": "Following a currency reform, Russia begins to circulate new rubles to stem inflation and promote confidence."}, {"year": "2015", "month": "01", "day": "01", "event": "The Eurasian Economic Union comes into effect, creating a political and economic union between Russia, Belarus, Armenia, Kazakhstan and Kyrgyzstan."}]


    Как вытащить только event в массив event = [] ?

    event = [The first Polish stamp is issued, replacing the Russian stamps previously in use. Following a currency reform, Russia begins to circulate new rubles to stem inflation and promote confidence. The Eurasian Economic Union comes into effect, creating a political and economic union between Russia, Belarus, Armenia, Kazakhstan and Kyrgyzstan.]


    Спасибо
    Написано
  • Как создать правильно API запрос на Python?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    спасибо. но не помогло ...
    Написано
  • Как создать правильно API запрос на Python?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    Алексей Уколов,
    api_url = 'https://api.api-ninjas.com/v1/historicalevents?text={}&day={}&month={}'.format(text&day&month)
    такой вариант ?
    Написано
  • Как исправить ошибку в python скрипте Яндекс API?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    {"fact":{"pressure_mm":761,"condition":"clear","temp":24,"wind_dir":"n","pressure_pa":1014,"humidity":54,"polar":false,"daytime":"d","season":"summer","obs_time":1686819600,"feels_like":24,"icon":"skc_d","wind_gust":6.7999999999999998,"wind_speed":2,"temp_water":20},"forecast":{"sunset":"22:16","moon_text":"moon-code-6","parts":[{"pressure_mm":760,"pressure_pa":1013,"part_name":"evening","temp_avg":23,"wind_dir":"n","humidity":35,"prec_prob":0,"prec_period":240,"condition":"clear","daytime":"d","polar":false,"wind_gust":6.2999999999999998,"icon":"skc_d","feels_like":21,"temp_min":19,"wind_speed":2.2999999999999998,"prec_mm":0,"temp_max":25,"temp_water":21},{"pressure_mm":759,"pressure_pa":1011,"part_name":"night","temp_avg":9,"wind_dir":"sw","humidity":77,"prec_prob":0,"prec_period":480,"condition":"clear","daytime":"n","polar":false,"wind_gust":2.3999999999999999,"icon":"skc_n","feels_like":7,"temp_min":7,"wind_speed":1,"prec_mm":0,"temp_max":13,"temp_water":20}],"moon_code":6,"date_ts":1686776400,"date":"2023-06-15","week":24,"sunrise":"03:28"},"info":{"url":"https:\/\/yandex.ru\/pogoda\/98620?lat=59.99233&lon=32.03388","lat":59.992330000000003,"lon":32.033880000000003},"now":1686822516,"now_dt":"2023-06-15T09:48:36.641592Z"}
  • Пропадает частично сеть на windows 11, почему?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    fpir, это WSL. Я пока не додумалась, как заставить WSL просить адрес с роутера
  • Пропадает частично сеть на windows 11, почему?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    fpir, спасибо. А можно все маршруты обнулить?
  • Пропадает частично сеть на windows 11, почему?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    Zerg89,
    route print
    ===========================================================================
    Interface List
    13...4c 7c 3f c2 9c 68 ......Intel(R) Ethernet Connection (12) I219-V
    1...........................Software Loopback Interface 1
    17...00 00 00 00 00 00 00 e0 Microsoft Teredo Tunneling Adapter
    22...00 15 5d 84 11 27 ......Hyper-V Virtual Ethernet Adapter
    ===========================================================================

    IPv4 Route Table
    ===========================================================================
    Active Routes:
    Network Destination Netmask Gateway Interface Metric
    0.0.0.0 0.0.0.0 10.0.1.1 10.0.1.20 281
    10.0.1.0 255.255.255.0 On-link 10.0.1.20 281
    10.0.1.20 255.255.255.255 On-link 10.0.1.20 281
    10.0.1.255 255.255.255.255 On-link 10.0.1.20 281
    127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
    127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
    127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
    172.24.112.0 255.255.240.0 On-link 172.24.112.1 5256
    172.24.112.1 255.255.255.255 On-link 172.24.112.1 5256
    172.24.127.255 255.255.255.255 On-link 172.24.112.1 5256
    224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
    224.0.0.0 240.0.0.0 On-link 10.0.1.20 281
    224.0.0.0 240.0.0.0 On-link 172.24.112.1 5256
    255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
    255.255.255.255 255.255.255.255 On-link 10.0.1.20 281
    255.255.255.255 255.255.255.255 On-link 172.24.112.1 5256
    ===========================================================================
    Persistent Routes:
    Network Address Netmask Gateway Address Metric
    0.0.0.0 0.0.0.0 10.0.1.1 Default
    ===========================================================================

    IPv6 Route Table
    ===========================================================================
    Active Routes:
    If Metric Network Destination Gateway
    17 331 ::/0 On-link
    1 331 ::1/128 On-link
    17 331 2001::/32 On-link
    17 331 2001:0:284a:364:100a:1149:a39b:db14/128
    On-link
    22 5256 fe80::/64 On-link
    17 331 fe80::/64 On-link
    17 331 fe80::100a:1149:a39b:db14/128
    On-link
    22 5256 fe80::6682:1ef5:9532:3555/128
    On-link
    1 331 ff00::/8 On-link
    22 5256 ff00::/8 On-link
    17 331 ff00::/8 On-link
    ===========================================================================
    Persistent Routes:
    None

    ipv4 задан статично. Откуда ipv6 берется в маршрутах - ума не приложу
  • Пропадает частично сеть на windows 11, почему?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    hint000, спасибо, но я подключаюсь к windows 11 через RDP других устройств. Кроме того, отваливаются web доступы к приложениям сторонним, не только RPD. На windows 11 я не видела таких параметров, это же W Server на приложении изображении?
    Повторно не получается подключиться ни к какому приложению, пинг пропадает. Повторюсь, компьютер продолжает работать и доступ к сети у него есть, спокойно можно серфить интернет и тд. Но, всё, что имеет web морды и RPD отваливается.
  • Как подключаться через RDP в Windows 11, используя учетную запись MS?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    Каким образом, если я в нее зайти не могу? Могу под другой учетной записью зайти
  • Как подключаться через RDP в Windows 11, используя учетную запись MS?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    Не получается …
    Может, в RDP пользователях надо что-то добавить?
  • Как передать значение переменной за пределы bash скрипта?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    MaxKozlov, я этот кусок не перепишу на PS

    function prepare(){
    for value in "${@}"
    do
    find "$@" -not -iname "*!qB" -o -not -iname "*!ut"  | sort -r | while read file; do RENAME=$(dirname "$file")/$(echo $(basename "$file") | sed -f "$Template" ); 
    if [[ "$file" != "$RENAME" ]]; 
    	then 
    		mv -fv "$file" "$RENAME" && sleep 0.1s || exit_stop 0
    	
    	
    fi
    Massive_file=`echo ${file[@]} ${RENAME[@]} | tr ' ' '\n' | sort | uniq -u`
    done
    done
    
    
    if [[ "$file" == "$RENAME" ]] &&  [[ "$Massive_file" == "" ]];
    	then 
    		find_file "${@}"
    	
    fi
    
    }
    function find_file(){
    for value in "${@}"
    do
    x="$IFS";IFS=$'\n';for File in $(find "$@" -regex "$ExVideo" -o -regex "$ExMusic" | sort -u  ); 
    do
      IFS="$x"
      if [[ -n "${File[@]}" ]]; 
        then get_names "${File[@]}" 
      fi
    done
    done
    
    }
    function rename(){
    for value in "${@}"
    do
    if [[ -n "$@" ]];
    	then 
    	NEWNAME=$( echo "${@}" | sed -f "$Template" ) 
    	mv -fv "${@}" "$NEWNAME" 
    fi
    done
    }
    function get_names(){
    for value in "${@}"
    do
    WhatFolder_all_address=$(dirname "${@}" );
    RootFolder=$(dirname "$WhatFolder_all_address" | sed s'/\/\/[^/]//'g );
    WhatFolder=$(dirname "${@}"  );
    FileName=$(basename "${@}" );
    Extension=${FileName##*.};
    FOLDER=$(echo "$Downloads")/$(echo "${@}" | cut -d '/' -f 5 ) ;
    ARTIST_FOLDER=$(echo "${@}" | cut -d '/' -f 5 ) ;
    done
    if [[ -n "$WhatFolder_all_address" ]] && [[ -n "$RootFolder" ]] && [[ -n "$WhatFolder" ]] && [[ -n "$FileName" ]] && [[ -n "$Extension" ]] && [[ -n "$FOLDER" ]];
    then 
    	type_media "${@}"
    fi
    }
    function type_media(){
    for value in "${@}"
    do
    # немножко цвета
    Red='\e[1;31m'
    Green='\e[1;32m'
    Blue='\e[1;34m'
    Black='\e[0;30m'
    DarkGray='\e[1;30m'
    Light_Red='\e[1;31m'
    Light_Green='\e[1;32m'
    Brown_Orange='\e[0;33m' 
    Yellow='\e[1;33m'
    Light_Blue='\e[1;34m'
    Purple='\e[0;35m'
    Light_Purple='\e[1;35m'
    Cyan='\e[0;36m'
    Light_Cyan='\e[1;36m'
    Light_Gray='\e[0;37m'
    White='\e[1;37m'
    # отмена цвета
    NC='\e[0m'
    #echo -e ${Brown_Orange}"type_media"${NC}
    if [[ -n "$Extension" ]];
    then
    if [[ "$ExVideo" =~ "$Extension" ]]; 
    	then
    		#echo -e "Обнаружены ${Cyan}VIDEO${NC} файлы."
    		#echo "${file[@]}"
    		sort_video "${@}"
    fi
    if [[ "$ExMusic" =~ "$Extension" ]]; 
    	then
    		#echo -e "Обнаружены ${Yellow}LOSSLESS${NC} файлы."
    		#echo "${file[@]}"
    		sort_music "${@}"
    fi
    fi
    done
    }
    function convert_video(){
    # convert video
    for value in "${@}"
    do ffmpeg -y -i "$@" -sn "${@%.*}.mkv" ; rm -rf "$@" || rm -rf  "${@%.*}.mkv"; done
    }
    function convert_music(){
    #echo -e ${Light_Cyan}"Начинаю конвертацию FLAC"${NC}
    for value in "${@}"
    do
    		#convert music
    		#echo -e "Обнаружены ${Yellow}CUE${NC} файлы."
    		#echo -e "Convert ${Yellow}FLAC ${NC}файлов."
    		# перекодирует CUE файл в UTF8 cp1251
    		dos2unix "$CUEFILE"
    		enconv -L russian -x utf8 "$CUEFILE" && echo "success $?" || enconv -c -x utf8 "$CUEFILE" 
    		# получаем жанр и год из CUE файла. 
    		function parsecue(){
    		GENRE=$(head -n 6 "$CUEFILE" | grep -i GENRE | sed "s/REM GENRE //i" )
    		DATE=$(head -n 6 "$CUEFILE" | grep -i "DATE" | sed "s/REM DATE //i" )
    		}
    		# распилим его на отдельные FLAC части
    		cuebreakpoints "$CUEFILE" | shnsplit -o flac -d "$TempMusic" "$File"
    		# проставим тэги из CUE в новые FLAC части.
    		cuetag "$CUEFILE" "$TempMusic"/split-track*.flac ;
    		# напарсим не хватающих тэгов жанра и года выпуска из CUE файла.
    		parsecue
    		# впишем тэги и приведём имена файлов нарезанных частей в человеческий вид
    		for SLICE in "$TempMusic"/split-track*.flac; 
    		do
    		metaflac --set-tag "GENRE=$GENRE" --set-tag "DATE=$DATE" "$SLICE"
    		ARTIST=$(metaflac "$SLICE" --show-tag=ARTIST | sed s/.*=//g)
    		TITLE=$(metaflac "$SLICE" --show-tag=TITLE | sed s/.*=//g)
    		TRACKNUMBER=$(metaflac "$SLICE" --show-tag=TRACKNUMBER | sed s/.*=//g)
    		TRACKNAME=$(echo "$TRACKNUMBER - $TITLE.flac" | sed -f "$Template")
    		mv -fv "$SLICE" "$TempMusic"/"$TRACKNAME"
    		done
    		sleep 0.5s
    		clean "$WhatFolder_all_address"/*
    		sleep 2s
    		mv "$TempMusic"/* "$WhatFolder_all_address"/
    		#exit_stop 0
    done
    }
  • Как передать значение переменной за пределы bash скрипта?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    MaxKozlov, спасибо. устала мучаться. решила так, где это требовалось :
    mv -fv "$file" "$RENAME" > /dev/null 2>&1 && sleep 0.1s


    Но, Ваше решение лучше )
  • Как передать значение переменной за пределы bash скрипта?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    MaxKozlov,
    sh)  -replace ‘.*->' -replace '/mnt/d/Downloads/(.*)'
     '
     '/mnt/d/Films/Novyj.fajl.mkv'


    В первую строку попадает '
  • Как передать значение переменной за пределы bash скрипта?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    MaxKozlov , сергей кузьмин
    Спасибо, ребята. Общими усилиями мы это сделали )) ниже пример того, что переменная в Powershell получает. Остался один момент, который никак не могу «заграбить»: убирать всё, что содержит вывод из папки Downloads.
    Запуская в powershell wsl /mnt/c/Users/MissAnastasiia/Script/start.sh
    Хочу оставить только
    -> '/mnt/d/Serials/Falshivyj.flag.S01.2019'

    Такой вариант почему-то не сработал

    (wsl /mnt/c/Users/MissAnastasiia/Script/start.sh) | -replace ‘.*Downloads (.*)', '-> $1’


    Весь вывод в Powershell
    renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E08.2019.WEB-DL.1080p.mkv' -> '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E08.2019.mkv' renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E07.2019.WEB-DL.1080p.mkv' -> '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E07.2019.mkv' renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E06.2019.WEB-DL.1080p.mkv' -> '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E06.2019.mkv' renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E05.2019.WEB-DL.1080p.mkv' -> '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E05.2019.mkv' renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E04.2019.WEB-DL.1080p.mkv' -> '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E04.2019.mkv' renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E03.2019.WEB-DL.1080p.mkv' -> '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E03.2019.mkv' renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E02.2019.WEB-DL.1080p.mkv' -> '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E02.2019.mkv' renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E01.2019.WEB-DL.1080p.mkv' -> '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p/Falshivyj.flag.S01.E01.2019.mkv' renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019.WEB-DL.1080p' -> '/mnt/d/Downloads/Falshivyj.flag.S01.2019' renamed '/mnt/d/Downloads/Falshivyj.flag.S01.2019' -> '/mnt/d/Serials/Falshivyj.flag.S01.2019'
  • Как передать значение переменной за пределы bash скрипта?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    MaxKozlov, выводится уже раз 30) никак не убираются
  • Как передать значение переменной за пределы bash скрипта?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    MaxKozlov, слушайте, чуть переписала скрипт bash и вывод тянется в Powershell. Спасибо за идею.
    вываливается только это мусор, который не понимаю, откуда лезет
    5 B   C A B 0 = > 2 ; 5 = = K E   4 8 A B @ 8 1 C B 8 2 > 2   ? > 4 A 8 A B 5 < K   W i n d o w s   4 ; O   L i n u x .         8 A B @ 8 1 C B 8 2 K   < > 6 = >   C A B 0 = > 2 8 B L   8 7   M i c r o s o f t   S t o r e :       h t t p s : / / a k a . m s / w s l s t o r e

    64442c38173e4070604866.png
    IMG-6635.png
  • Как передать значение переменной за пределы bash скрипта?

    MsAnastasiia
    @MsAnastasiia Автор вопроса
    сергей кузьмин, спасибо, да. а можно для "д@билов" показать как сделать?