Wpis z mikrobloga

Napisałem skrypt który może się przydać ludziom pobierającym książki z packtpub.com w pdf

Ściągnąłem już sporo książek i irytują mnie nazwy jakie mają pliki. Nie da się tego posortować po nazwie i w ogóle są nieczytelne np **9781785880230-EXPERT_ANGULAR.pdf

Więc udostępniam skrypcik który zmienia te nazwy na bardziej przyjazne, może komuś się przyda
wynikowa nazwa to
EXPERT ANGULAR - 9781785880230.pdf
lub jeżeli ktoś woli bez doklejonego numerem ISBN to trzeba zmienić parametr i wychodzi po prostu:
EXPERT ANGULAR.pdf

W ten sposób nazwy są ładnie posortowane alfabetycznie i łatwiej jest wyszukiwać.

Skrypt jest dostępny tutaj - https://pastebin.com/Wipff83S To jest chyba pierwszy (i może ostatni) raz kiedy napisałem coś w power shellu więc proszę o wyrozumiałość :) Na pewno da się to napisać 100 razy lepiej.

Sposób użycia:
1. Ściągnąć plik/kod z https://pastebin.com/Wipff83S i zapisać jako skrypt.ps1
2. Umieścić skrypt w katalogu w którym trzymamy PDF-y pobrane z packtpub.com
3. Kliknąć prawym przyciskiem w skrypt i wybrać "Run with PowerShell" lub ewentualnie uruchomić z poziomu PowerShella wchodząc do odpowiedniego katalogu i wpisując ".\skrypt.ps1"

Skrypt wyświetli najpierw listę plików które mu pasują i zapyta czy zmieniać te nazwy więc jeżeli w katalogu masz inne pliki które nie pasują nazwami lub zmieniłeś część nazw ręcznie lub automatycznie (więc nazwy nie zaczynają się od 13 cyfrowego numeru ISBN) to skrypt powinien zostawić je w spokoju

Domyślnie ISBN jest doklejany na koniec nazwy, jeżeli chcesz to zmienić to zmień "$UseISBN = 1" na "$UseISBN = 0" (pomyśl wcześniej bo jak uruchomisz raz to już chyba nie da się cofnąć zmiany nazw plików)

Jak ktoś preferuje to można łatwo dopisać zmianę kapitalizacji liter i inne bajery.

POLECAM NAJPIERW PRZETESTOWAĆ NA KOPII KATALOGU xD**

#packtpubfreelearning

Waldemar_Morawiec - Napisałem skrypt który może się przydać ludziom pobierającym ksią...

źródło: comment_TNbAw0iU0nmgz9F5DoFYv8a8CcmqKXAG.jpg

Pobierz
  • 9
@S0Cool: @Waldemar_Morawiec: Biedny ten twój skrypt. W bashu zwykły jednolinijkowiec by wystarczył i to dla dowolnego formatu a nie tylko pdf xD

Zamiast się kopać z powershellem i ręcznym pobieraniem polecam:
https://github.com/igbt6/Packt-Publishing-Free-Learning

Jak widzisz są normalne nazwy:

myEbooksFromPackt$ ls

MasteringRust.epub MasteringRust.mobi MasteringRust.pdf MasteringRust.zip ProgrammingMicrosoftDynamicsNAV-FifthEdition.pdf


lub nawet inny projekt:
https://github.com/niqdev/packtpub-crawler
W bashu zwykły jednolinijkowiec by wystarczył i to dla dowolnego formatu a nie tylko pdf xD

@Kryspin013: Dawaj ten jednolinijkowy bash który robi to samo co mój skrypt. Bo że samą zmianę nazwy można zrobić w jednej lini w bashu czy powershellu czy dowolnym języku to wiadomo.
@Waldemar_Morawiec: Ale się pan waldemar zdenerwował ( ͡° ͜ʖ ͡°)

Chodzi mi oto, że robisz dużo więcej niż potrzebujesz a efekt i tak jest średni jak na taką ilość kodu. Mógłbyś chociaż coś z tymi tytułami zrobić.

IFS=$'\n' ; for f in $(ls *.epub *.pdf *.mobi) ; do mv $(echo -e "$f" "${f% -*}.${f##*.}"); done
Zrobiłem sobie nawet wyzwanie, żeby z regexpów nie korzystać. I tak formalnie
@Kryspin013:

Mógłbyś chociaż coś z tymi tytułami zrobić.

Ee właśnie zrobiłem - o to chodzi w tym skrypcie.

Napisałem że na pewno da się to napisać 100 razy lepiej bo po pierwsze nie używałem nigdy powershella a po drugie robiłem to na kolanie ale to co wkleiłeś trudno nawet porównać bo nie robi tego samego co mój kod. Nie wiem czy zauważyłeś ale oprócz zmiany nazwy dzieje się tam jeszcze parę
ale to co wkleiłeś trudno nawet porównać bo nie robi tego samego co mój kod


@Waldemar_Morawiec: Nie robi ale wynik jest ten sam. Odwróconej nazwy nie chciało mi się dopisywać ale byłoby to mniej więcej tyle samo kodu.

Jest jeszcze fakt że twój skrypt nie zwróci takich nazw jak mój oraz zrobi cichy fail przy nazwach plików które łatwo sobie wyobrazić.


Nie wiem czym jest cichy fail.

Prawdziwego jednolinijkowca mógłbyś klepnąć
Nie robi ale wynik jest ten sam. Odwróconej nazwy nie chciało mi się dopisywać ale byłoby to mniej więcej tyle samo kodu.

@Kryspin013: Nie chodzi już o nazwę tylko o sprawdzanie kilku warunków + check z użytkownikiem.

Nie wiem czym jest cichy fail.


Taki fail że jak w nazwie pliku znajdą się dwa myślniki to program nie zadziała tak jak powinien ale nie wysypie się tylko będzie działał dalej więc user
Taki fail że jak w nazwie pliku znajdą się dwa myślniki to program nie zadziała tak jak powinien ale nie wysypie się tylko będzie działał dalej więc user może tego nie zauważyć. Nie ma też trima i replace więc nawet na jednym z plików z mojego screena już byłby błąd że nazwa pliku zaczynałaby się od znaku "_".


@Waldemar_Morawiec: Zadziała bo nie wiesz jak działa ten replace w bashu. On znajduje
Co do shella to powershell jest na wszystkie systemy tak samo jak bash więc ¯_(ツ)_/¯


@Kryspin013: Skrót myślowy - chodzi o to co można odpalić na gołym systemie w konsoli bo wiadomo że zainstalować to sobie można wszystko.
Nie ma trimowania i tak jak wyżej pisałem checka z userem, selektywnego wybierania plików (moje sobie leżały w katalogu download z innym badziewiem) itd. Jednolinijkowiec to to nie jest ale fakt fajne, podobne