├── README.md ├── mk-intel-driver.sh └── plex_stats.sh /README.md: -------------------------------------------------------------------------------- 1 | # Misc.-Scripts 2 | 3 | ## plex_stats.sh 4 | This script was an edit of a script made by [ajkis](https://github.com/ajkis/scripts/blob/master/plex/plex-library-stats.sh). 5 | It also utilizes some sql commands written by [bbobrian](https://www.reddit.com/user/bbobrian) [[here](https://www.reddit.com/r/PleX/comments/gnuz9c/cpu_usage_to_generate_intro_video_markers_on_8700/frdejds/)]. 6 | If there are any changes you'd like to see let me know. 7 | 8 | ## mk-intel-driver.sh 9 | This script will create and install the intel media driver for CPU's that are not supported on systems like Ubuntu 16.04/18.04. Thjis script replaces this repo. https://github.com/Visorask/i965-Driver-Fix 10 | 11 | 12 | -------------------------------------------------------------------------------- /mk-intel-driver.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Initialization & Pre-requisites 4 | echo "$(date "+%d.%m.%Y %T") INFO: *** Initializing Script ***" 5 | cd "$HOME/" 6 | echo "$(date "+%d.%m.%Y %T") INFO: *** Installing prerequisites needed to build the iHD driver. ***" 7 | sudo apt-get install -y software-properties-common vainfo autoconf libtool libdrm-dev xorg xorg-dev openbox libx11-dev libgl1-mesa-glx libgl1-mesa-dev xutils-dev build-essential cmake 8 | 9 | # Master directory 10 | echo "$(date "+%d.%m.%Y %T") INFO: *** Creating master directory. ***" 11 | mkdir intel-driver 12 | sleep 5 13 | cd "$HOME/intel-driver" 14 | 15 | # LibVA 16 | echo "$(date "+%d.%m.%Y %T") INFO: *** Cloning libva git. ***" 17 | git clone "https://github.com/intel/libva.git" 18 | sleep 5 19 | cd "$HOME/intel-driver/libva" 20 | echo "$(date "+%d.%m.%Y %T") INFO: *** Building and installing libva (VAAPI). ***" 21 | ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu 22 | sleep 5 23 | make -j8 24 | sleep 5 25 | sudo make install 26 | sleep 5 27 | cd $HOME/intel-driver 28 | 29 | # GMMLib 30 | echo "$(date "+%d.%m.%Y %T") INFO: *** Cloning gmmlib git. ***" 31 | git clone https://github.com/intel/gmmlib.git 32 | sleep 5 33 | cd "$HOME/intel-driver/gmmlib" 34 | echo "$(date "+%d.%m.%Y %T") INFO: *** Building and installing gmmlib ***" 35 | mkdir build && cd build 36 | sleep 5 37 | cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr ../ 38 | sleep 5 39 | make -j8 40 | sleep 5 41 | sudo make install 42 | sleep 5 43 | cd $HOME/intel-driver 44 | 45 | # Media Driver 46 | echo "$(date "+%d.%m.%Y %T") INFO: *** Cloning media-driver git. ***" 47 | git clone https://github.com/intel/media-driver.git 48 | sleep 5 49 | mkdir build_media 50 | sleep 5 51 | cd "$HOME/intel-driver/build_media" 52 | echo "$(date "+%d.%m.%Y %T") INFO: *** Building media-driver. ***" 53 | cmake -DCMAKE_BUILD_TYPE=release-internal -DCMAKE_INSTALL_PREFIX=/usr ../media-driver 54 | sleep 5 55 | make -j8 56 | sleep 5 57 | sudo make install 58 | cd $HOME/intel-driver 59 | 60 | # # Removing and copying new driver. 61 | # echo "$(date "+%d.%m.%Y %T") INFO: *** Removing old iHD driver. ***" 62 | # sudo rm -rf "/usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so" 63 | # sudo cp "$HOME/intel-driver/build_media/media_driver/iHD_drv_video.so" "/usr/lib/x86_64-linux-gnu/dri/" 64 | 65 | # Testing 66 | export "LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri/" 67 | export "LIBVA_DRIVER_NAME=iHD" 68 | echo "$(date "+%d.%m.%Y %T") INFO: *** Script is now complete. ***" 69 | 70 | echo "$(date "+%d.%m.%Y %T") INFO: *** Running vainfo to verify script worked. ***" 71 | vainfo 72 | -------------------------------------------------------------------------------- /plex_stats.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Generate Plex Library stats 3 | 4 | #### Variables #### 5 | 6 | #Change to where you want the logfile to go. 7 | logfile="$HOME/logs/plexstats.log" 8 | #Change this to your plex database location. 9 | #db="/opt/plex/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db" 10 | db="/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db" 11 | #Change this to the name of your docker. It must match exactly. If not using then just leave the default. 12 | docker="plex" 13 | #Change to the location of your media scanner. This is the default one. It will work for docker and linux. 14 | scanner="/usr/lib/plexmediaserver/Plex Media Scanner" 15 | 16 | ####End Variables#### 17 | 18 | list_section_id() { 19 | echo "**************************************" 20 | echo "** List of section ID's to utilize. **" 21 | echo "**************************************" 22 | if [[ $(docker ps --filter "name=^/$docker$" --format '{{.Names}}') == "$docker" ]]; then 23 | docker exec -it $docker "$scanner" --list 24 | else 25 | "$scanner" --list 26 | fi 27 | } 28 | 29 | get_array() { 30 | if [[ $(docker ps --filter "name=^/$docker$" --format '{{.Names}}') == "$docker" ]]; then 31 | readarray -t d_section < <(docker exec -it $docker "$scanner" --list | sed 's/:.*//') 32 | else 33 | readarray -t section < <( "$scanner" --list | sed 's/:.*//' ) 34 | fi 35 | } 36 | 37 | choice() { 38 | echo "**************************************************************************************************" | tee -a $logfile 39 | echo "** Please enter the number of the section id, as seen above, that you want to check intros for. **" | tee -a $logfile 40 | echo "**************************************************************************************************" | tee -a $logfile 41 | if [ -n "$d_section" ]; then 42 | select id in "${d_section[@]}"; do 43 | [[ -n $id ]] || { echo "Invalid choice. Please try again." >&2; continue; } 44 | break 45 | done 46 | else 47 | select id in "${section[@]}"; do 48 | [[ -n $id ]] || { echo "Invalid choice. Please try again." >&2; continue; } 49 | break 50 | done 51 | fi 52 | } 53 | 54 | library_stats() { 55 | echo "Date: $(date "+%d.%m.%Y %T")" | tee -a $logfile 56 | echo "" | tee -a $logfile 57 | echo "************************" | tee -a $logfile 58 | echo "** Plex Library Stats **" | tee -a $logfile 59 | echo "************************" | tee -a $logfile 60 | echo "" | tee -a $logfile 61 | echo "Media items in Libraries" | tee -a $logfile 62 | echo "" | tee -a $logfile 63 | query="SELECT Library, Items \ 64 | FROM ( SELECT name AS Library, \ 65 | COUNT(duration) AS Items \ 66 | FROM media_items m \ 67 | LEFT JOIN library_sections l ON l.id = m.library_section_id \ 68 | WHERE library_section_id > 0 GROUP BY name );" 69 | sqlite3 -header -line "$db" "$query" | tee -a $logfile 70 | echo " " | tee -a 71 | echo "" | tee -a $logfile 72 | } 73 | 74 | sql_library() { 75 | query="SELECT count(*) FROM media_items" 76 | result=$(sqlite3 -header -line "$db" "$query") 77 | echo "Library Total = ${result:11} files in library" | tee -a $logfile 78 | echo "" | tee -a $logfile 79 | } 80 | 81 | sql_intro() { 82 | echo "--Skip intro stats:--" 83 | echo "" 84 | query="SELECT count(*) FROM media_parts mp JOIN media_items mi on mi.id = mp.media_item_id WHERE mi.library_section_id = $id and mp.extra_data like '%intros=%';" 85 | result=$(sqlite3 -header -line "$db" "$query") 86 | echo "${result:11} files analyzed for skip intros." | tee -a $logfile 87 | 88 | query="SELECT count(*) FROM media_parts mp JOIN media_items mi on mi.id = mp.media_item_id WHERE mi.library_section_id = $id and mp.extra_data not like '%intros=%';" 89 | result=$(sqlite3 -header -line "$db" "$query") 90 | echo "${result:11} files that have not been analyzed for skip intros." | tee -a $logfile 91 | 92 | query="SELECT count(*) FROM media_parts mp JOIN media_items mi on mi.id = mp.media_item_id WHERE mi.library_section_id = $id and mp.extra_data like '%intros=%%7B%';" 93 | result=$(sqlite3 -header -line "$db" "$query") 94 | echo "${result:11} files that actually have skip intros." | tee -a $logfile 95 | echo "" 96 | } 97 | 98 | sql_analyze() { 99 | echo "--Analyze stats:--" | tee -a $logfile 100 | echo "" | tee -a $logfile 101 | query="SELECT count(*) FROM media_items WHERE bitrate is null" 102 | result=$(sqlite3 -header -line "$db" "$query") 103 | echo "${result:11} files missing analyzation info" | tee -a $logfile 104 | 105 | query="SELECT count(*) FROM metadata_items meta \ 106 | JOIN media_items media on media.metadata_item_id = meta.id \ 107 | JOIN media_parts part on part.media_item_id = media.id \ 108 | WHERE part.extra_data not like '%deepAnalysisVersion=2%' \ 109 | and meta.metadata_type in (1, 4, 12) and part.file != '';" 110 | result=$(sqlite3 -header -line "$db" "$query") 111 | echo "${result:11} files missing deep analyzation info." | tee -a $logfile 112 | echo "" | tee -a $logfile 113 | } 114 | 115 | sql_deleted() { 116 | echo "--Deleted stats:--" | tee -a $logfile 117 | echo "" | tee -a $logfile 118 | query="SELECT count(*) FROM media_parts WHERE deleted_at is not null" 119 | result=$(sqlite3 -header -line "$db" "$query") 120 | echo "${result:11} media_parts marked as deleted" | tee -a $logfile 121 | 122 | query="SELECT count(*) FROM metadata_items WHERE deleted_at is not null" 123 | result=$(sqlite3 -header -line "$db" "$query") 124 | echo "${result:11} metadata_items marked as deleted" | tee -a $logfile 125 | 126 | query="SELECT count(*) FROM directories WHERE deleted_at is not null" 127 | result=$(sqlite3 -header -line "$db" "$query") 128 | echo "${result:11} directories marked as deleted" | tee -a $logfile 129 | echo "" | tee -a $logfile 130 | } 131 | 132 | 133 | 134 | list_section_id 135 | get_array 136 | choice 137 | library_stats 138 | sql_library 139 | sql_intro 140 | sql_analyze 141 | sql_deleted 142 | 143 | exit 144 | --------------------------------------------------------------------------------