Puppy Linux Discussion Forum Forum Index Puppy Linux Discussion Forum
Puppy HOME page : puppylinux.com
"THE" alternative forum : puppylinux.info
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

The time now is Thu 14 Dec 2017, 09:39
All times are UTC - 4
 Forum index » Advanced Topics » Additional Software (PETs, n' stuff) » Utilities
RefDnD
Post new topic   Reply to topic View previous topic :: View next topic
Page 1 of 1 [5 Posts]  
Author Message
stemsee

Joined: 27 Jun 2013
Posts: 2001
Location: In The Way

PostPosted: Wed 12 Oct 2016, 09:07    Post subject:  RefDnD
Subject description: Dragndrop directory or single items for scene/file router. Build (reference) lists and edit
 

refdnd follows on from work done on a previous script of a desktp file router. This version is refined and extended.

The refdnd pane has six tabs.
Tab 1 is the desktop file router dnd (drag n drop) pane. The intention here is to be able to drag a directory which has a work scene; that is a set of files that you want to work on in one session These files can be images, video, music all of these will be routed to appropriate apps (defaults or playlist for mplayer for audio/video.) Docs to libreoffice, text to geany for example, and pdf to epdfview. Just prepare driectories with the files you want to work with.

tab 2 is a dnd pane for building lists/text documents
tab 3 shows additions dropped on tab2
tab 4 is a dnd pane that routes multiple media files to playlist and also to the next refs2 tab list view
tab 5 is refs2 list which is newly created each session. Use this to edit text and drop to dnd pane 1.

tab 6 is for new lists, save lists replace refs1 with refs2 and play next entry in mplayer playlist.

There is a tray icon with rightclick menu.

A playlist opens up which gets updated as media items are added/removed.
Multiple selections can be taken from this playlist and then select 'ok', then Options > Play next track, this will open mediaplayer with this new playlist. Options > play next can then be used to return to main playlist.
xscreenshot-20170807T120226.png
 Description   
 Filesize   37.97 KB
 Viewed   67 Time(s)

xscreenshot-20170807T120226.png

xscreenshot-20170807T120240.png
 Description   
 Filesize   35.8 KB
 Viewed   65 Time(s)

xscreenshot-20170807T120240.png

refdnd.tar.gz
Description 
gz

 Download 
Filename  refdnd.tar.gz 
Filesize  9.06 KB 
Downloaded  21 Time(s) 

Last edited by stemsee on Mon 07 Aug 2017, 07:06; edited 2 times in total
Back to top
View user's profile Send private message MSN Messenger 
stemsee

Joined: 27 Jun 2013
Posts: 2001
Location: In The Way

PostPosted: Wed 16 Nov 2016, 12:15    Post subject:  

removed
Last edited by stemsee on Mon 07 Aug 2017, 06:58; edited 1 time in total
Back to top
View user's profile Send private message MSN Messenger 
stemsee

Joined: 27 Jun 2013
Posts: 2001
Location: In The Way

PostPosted: Wed 07 Dec 2016, 20:15    Post subject:  

Updated so that now tracks can be directly selected from the yad playlist window (single or multiple).

There are now two scripts one for vlc the other for mplayer systems. I should add a checkbox option to select which and thus return to a single universal script.

mplayer variant
see update

Last edited by stemsee on Thu 16 Nov 2017, 12:04; edited 2 times in total
Back to top
View user's profile Send private message MSN Messenger 
stemsee

Joined: 27 Jun 2013
Posts: 2001
Location: In The Way

PostPosted: Mon 07 Aug 2017, 06:32    Post subject:  

see update
Back to top
View user's profile Send private message MSN Messenger 
stemsee

Joined: 27 Jun 2013
Posts: 2001
Location: In The Way

PostPosted: Thu 16 Nov 2017, 12:09    Post subject:  

refdnd - vlc version

Drag and Drop directory with media and image/doc files etc (or single files- but not dirs and single files togeter (Wish i knew why not)!?!).

This is working quite nicely. And any images in te dir will also be played as a slideshow on the desktop background, before re-applying default image.

This is another way to operate vlc if it is on a different display/screen from the cursor.

One weakness of tis script is that you will need to edit the options string so vlc ses your soundcard.

Code:
#!/bin/sh
#refdnd reference or what-have-you list builder/editor
#by stemsee, with code from step and MochiMoppel 2016
rm -f /tmp/f4
if [ "$1" = reset ]; then
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
do
   rm -f /tmp/list$i.m3u
   rm -f /tmp/dirlist$i
done
killall refdnd
exit 0
fi

slyd=`busybox which yad`
[[ ! -z "$slyd" ]] && cp "$slyd" "$slyd"7
is=`mount | grep -e '/initrd/mnt/dev_save'`
si=`mount | grep -e '/initrd/mnt/dev_ro2'`

if [[ -z "$is" && ! -z "$si" ]]; then
   path=/initrd/mnt/dev_ro2
else
   path=/initrd/mnt/dev_save
fi

[[ /tmp/rmyn ]] && /tmp/rmyn
lf=$HOME/refs1.txt
lf2=$HOME/refs2.txt
lf3=$HOME/refs3.m3u
[[ ! /tmp/mplayerpipe ]] && mkfifo -m 755 /tmp/mplayerpipe

function other1fn () { #pdf
none1=`cat /tmp/list6.m3u`
if [[ ! -z "$none1" ]]; then
   while read line
   do
      /tmp/pidf
      masterpdfeditor "$line"
      pdfpid=$!
      task=`kill $pdfpid`
      echo "#!/bin/sh
      pdfpid=$pdfpid
      $task
      rm /tmp/pidf
      " > /tmp/pidf
      chmod 755 /tmp/pidf
      sed -i "s/$line//g" /tmp/list6.m3u
   done < /tmp/list6.m3u
fi
}
export -f other1fn

function other2fn () { #word/odt
none2=`cat /tmp/list7.m3u`
if [[ ! -z "$none2" ]]; then
while read line
do
   /opt/libreoffice*/program/soffice "$line" &
   rm -f /tmp/list7.m3u
done < /tmp/list7.m3u
fi
}
export -f other2fn

function modefn (){
   mode=Stretch
   export mode
}
export -f modefn

function dslfn (){
echo /usr/share/backgrounds/default.jpg >> /tmp/list16.m3u
while read line
do

nice --40 rox --RPC << EOF
<?xml version="1.0"?>
<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope">
 <env:Body xmlns="http://rox.sourceforge.net/SOAP/ROX-Filer">
  <SetBackdrop>
   <Filename>$line</Filename>
   <Style>Stretch</Style>
  </SetBackdrop>
 </env:Body>
</env:Envelope>
EOF
conky2 -x 10 -y 10 -t "$line" -f MingLiU:size=14 -a top_middle &
conkpid=$!
sleep 4
kill $conkpid
sld=`cat /tmp/list16.m3u`
[[ -z "$sld" ]] && break
done < /tmp/list16.m3u
}
export -f dslfn

function other3fn () { #images
[[ /tmp/refpids ]] && . /tmp/refpids
none3=`cat /tmp/list8.m3u`
if [[ ! -z "$none3" ]]; then
rm -f /tmp/list16.m3u
touch /tmp/list16.m3u
cat /tmp/list8.m3u > /tmp/list16.m3u
bash -c dslfn &
   while read line
   do
      defaultimageviewer "$line"
            rm -f /tmp/list8.m3u
      exit
      #sed -i "s/$line//g" /tmp/list8.m3u
   done < /tmp/list8.m3u
fi
}
export -f other3fn

function other4fn () { #media
mpm=`busybox which vlc`
mply=`echo $mpm | grep 'mplayer'`
if [[ ! -z "$mpm" ]]; then
      options='--aout=alsa --alsa-audio-device="card 1: PCH [HDA Intel PCH], device 0: ALC233 Analog"'
fi

none4=`cat /tmp/list1.m3u`
if [[ -e /tmp/f4 ]]; then
if [[ ! -z "$none4" ]]; then
   mlt=/tmp/list1.m3u
   #conky -x 20 -y 20 -t "`cat /tmp/list1.m3u`" -f sans:size=14 -a top_middle &
   #cip=$!
   pkill vlc
   vlc --loop "$mlt" "$options"
   #rm -f "$mlt"
else
   #conky -x 20 -y 20 -t "`cat /root/list1.m3u`" -f sans:size=14 -a top_middle &
   #cip=$!
   [[ -f /root/list1.m3u ]] && vlc --loop /root/list1.m3u  "$options"
fi
   rm -f /tmp/f4
fi
}
export -f other4fn

function other5fn () { #text .sh files
none5=`cat /tmp/list9.m3u`
if [[ ! -z "$none5" ]]; then
while read line
do
   defaulttexteditor "$line"
done <  /tmp/list9.m3u
   rm -f /tmp/list9.m3u
fi
}
export -f other5fn

function other6fn () { #html files
[[ /tmp/refpids ]] && . /tmp/refpids
none6=`cat /tmp/list10.m3u`
if [[ ! -z "$none6" ]]; then
   defaultbrowser "`cat /tmp/list10.m3u | tr '\n' ' '`"
   rm /tmp/list10.m3u
fi
}
export -f other6fn

function other7fn () {
if [[ /tmp/list11.m3u ]]; then
   while read line
   do
      wine -e "$line" &
      sed -i "s/$line//g" /tmp/list11.m3u
   done < /tmp/list11.m3u
fi
}
export -f other7fn

function other8fn () {
none8=`cat /tmp/list12.m3u`
if [[ ! -z "$none8" ]]; then

   while read line
   do
      qjackctl -s 2> /dev/null &
      hydrogen -s "$line" &
      sed -i "s/$line//g" /tmp/list12.m3u
   done < /tmp/list12.m3u
fi
}
export -f other8fn

function other9fn () {
if [[ /tmp/list13.m3u ]]; then
   while read line
   do
      /opt/Ardour*/bin/ardour[1-19] -E "$line" &
      sed -i "s/$line//g" /tmp/list13.m3u
   done < /tmp/list13.m3u
fi
}
export -f other9fn

function other10fn () {
if [[ /tmp/list14.m3u ]]; then
   while read line
   do
      cp -f "$line" "$path"/FatHouse/zdrv_FatHouse64-S.sfs &
      sed -i "s/$line//g" /tmp/list14.m3u
   done < /tmp/list14.m3u
fi
}
export -f other10fn

function mplist () {
   #lfp=/tmp/list1.m3u
   ./tmp/mplst
   killall yad7
   none4=`cat /tmp/list1.m3u`
   if [[ ! -z "$none4" ]]; then
      lfp=/tmp/list1.m3u
   else
      [[ /root/list1.m3u ]] && lfp=/root/list1.m3u
   fi
   tail -n 1000 "$lfp" | awk '{fflush();print;fflush()}' | rev | cut -f1 -d'/' | rev | yad7 --window-icon="/usr/share/pixmaps/leafpad.png" --on-top  --title="Play List" --dclick-action="bash -c control" --geometry=180x380-140+200 --list --multiple --column="PlayList" | cut -f1 -d'|' > /tmp/dirlist8 &
   pid1=$!
   task='kill $mpid'
   echo "#!/bin/sh
   mpid=$pid1
   $task
   rm -f /tmp/mplst
   " > /tmp/mplst
   chmod 755 /tmp/mplst
   algo=`cat /tmp/dirlist8`
   if [[ ! -z "$algo" ]]; then
      killall vlc
      bash -c control
   fi
   exit 0
}
export -f mplist
bash -c mplist

function mediap () {
   lf3=$HOME/refs3.m3u
    STUFFMP="${0//file:\/\//}"
   printf %s\\\n "$STUFFMP" | grep -e '.mov' -e '.mpg' -e '.mpeg' -e '.mp3' -e '.mp4' -e '.vob' -e '.avi' -e '.mkv'  -e '.flac' -e '.aac' -e '.wav' -e '.flv' -e '.ogg' -e '.3gp' -e '.dat' >> /tmp/list1.m3u
   printf %s\\\n "$STUFFMP"  >> $lf3
   [[ -f /tmp/vlcflag ]] && rm -f /tmp/vlcflag
   while read line    #filter off dir lines
   do
   if [[ -d "$line" ]]; then
      ls "$line"/*/*/*/*/*/* > /tmp/dirlist1
      ls "$line"/*/*/*/*/* > /tmp/dirlist2
      ls "$line"/*/*/*/* > /tmp/dirlist3
      ls "$line"/*/*/* > /tmp/dirlist4
      ls "$line"/*/* > /tmp/dirlist5
      ls "$line"/* > /tmp/dirlist6
      sed -i "s/^/$line/g" /tmp/dirlist*
   fi
      sed -i "s/$line//g" "$lf3"
      for i in 1 2 3 4 5 6
      do
         while read line
         do
         chk=`cat /tmp/dirlist | grep "$line"`
         if [[ -z "$chk" ]]; then
            echo "$line" >> /tmp/dirlist
         fi
         done < /tmp/dirlist$i
         rm -f /tmp/dirlist$i
      done
      sed -i "s/^/$line/g" /tmp/dirlist
   done < "$lf3"
   spawn=`cat /tmp/list1.m3u`
while read it #route lines by extension to lists
do
case "$it" in
   *.m4v|*.M4V|*.swf|*.SWF|*.flv|*.FLV|*.WMV|*.wmv|*.ogg|*.OGG|*.3gp|*.3GP|*.dat|*.DAT |*.3gp|*.mp3|*.mp4|*.MP4|*.VOB|*.AVI|*.mpg|*.MPG|*.mpeg|*.MPEG|*.avi|*.vob|*.MKV|*.mkv|*.wav|*.WAV|*.pcm|*.PCM|*.flac|*.FLAC|*.wma|*.WMA|*.m4a|*.MP3|*.MOV|*.mov|*.MOV) echo "$it"  >> /tmp/list1.m3u;; #for defaultmediaplayer list
   *.xml|*.XML|*.doc|*.DOC|*.docx|*.DOCX|*.odg|*.ODG|*.odt|*.ODT|*.odf|*.ODF) echo "$it" >> /tmp/list7.m3u;; #defaultwordprocessor list
   *.pdf|*.PDF) echo "$it" >> /tmp/list6.m3u;; #defaultpdfviewer list
   *.jpg|*.JPG|*.png|*.PNG|*.bmp|*.BMP) echo "$it" >> /tmp/list8.m3u;; #defaultimageviewer list
   *.html|*.htm|*.com|*.co.uk|*.org|*.ac.uk|www.*|ftp*|http*) echo "$it" >> /tmp/list10.m3u;;
   *.exe|*.msi) echo "$it"  >> /tmp/list11.m3u;;
   *.h2song) echo "$it"  >> /tmp/list12.m3u;;
   *.ardour) echo "$it"  >> /tmp/list13.m3u;;
   *.aup|*.AUP) echo "$it" >> /tmp/list15.m3u;;
   *.sfs) echo "$it" | awk  >> /tmp/list14.m3u;;
   *) file "$it" | grep -e 'ASCII' | cut -f1 -d ':'  >> /tmp/list9.m3u;; #default text/script editor
esac
sed -i "s/$it//g" /tmp/dirlist
done < /tmp/dirlist
rm -f "$lf3"
rm -f /tmp/dirlist
      cat /tmp/list1.m3u > /tmp/list0.m3u
      sed 's/#####:TM.*//' /tmp/list0.m3u > /tmp/list1.m3u
   other2fn &
   other3fn &
   if [[ ! -f /tmp/f4 ]] ; then
      touch /tmp/f4
      other4fn &   
   fi
   other5fn &
   other6fn &
   other7fn &
   other8fn &
   other9fn &
   other10fn &
   if [[ -z "$spawn" ]]; then
      mply=`busybox which mplayer`
      #mply=`echo $mpm | grep -e 'mplayer'`
      mpm=`busybox which vlc`
      #if [[ -z "$mpm" ]]; then
      #defaultmediaplayer=mplayer
         #options=" -slave -input file=/tmp/mplayerpipe -playlist "
      if [[ ! -z "$mpm" ]]; then
         defaultmediaplayer="vlc --loop"
         options='--aout=alsa --alsa-audio-device="card 1: PCH [HDA Intel PCH], device 0: ALC233 Analog"'
      fi
      sleep 1
   fi
   check=`cat /tmp/list1.m3u`
   if [[ -z "$check" ]]; then
      rm -f /tmp/list1.m3u
   fi
   if [[ -f /tmp/vlcflag ]]; then
      exit 0
   fi
   bash -c mplist
   [[ ! -f /tmp/vlcflag ]] && touch /tmp/vlcflag
   [[ ! -f /tmp/vlcflag ]] && vlc /tmp/list1.m3u "$options"
   sed -i '1d' "$lfp"
   rm -f /tmp/vlcflag
   if [[ ! -e /tmp/flag ]]; then
      other1fn &
      touch /tmp/flag
   fi
   exit 0
}
export -f mediap

function control () {
   lfp=/tmp/list1.m3u
   pmp=`cat /tmp/dirlist8`
   rm -f /tmp/dirlist8
[[ ! -z "$pmp" ]] && grep "$pmp"  /tmp/list1.m3u > /tmp/dirlist9.m3u
   sed 's/#####:TM.*//' "$lfp" > /tmp/format
   cat /tmp/format > "$lfp"
   rm -f /tmp/format
      mply=`busybox which mplayer`
      mpm=`busybox which vlc`
      if [[ ! -z "$mpm" ]]; then
         defaultmediaplayer="vlc --loop"
         options='--aout=alsa --alsa-audio-device="card 1: PCH [HDA Intel PCH], device 0: ALC233 Analog"'
      fi
   if [[ ! -z "$pmp" ]]; then
      mlt=/tmp/dirlist9.m3u
   else
      mlt=/tmp/list1.m3u
   fi
   [[ "$mlt" = /tmp/list1.m3u ]] && sed -i '1d' "$mlt"
   killall vlc
   sleep 1
   check=`cat /tmp/list1.m3u`
   if [[ -z "$check" && -z "$pmp" ]]; then
      rm -f /tmp/vlcflag
      bash -c mplist
      [[ -e /tmp/f4 ]] && rm -f /tmp/f4
      [[ -f /root/list1.m3u ]] && vlc --loop /root/list1.m3u "$options"
      exit 0
   fi
   if [[ ! -z "$pmp" ]]; then
      mlt=/tmp/dirlist9.m3u
   else
      mlt=/tmp/list1.m3u
   fi
   bash -c mplist
   vlc --loop "$mlt" "$options"
   exec /tmp/mplst &
exit 0
}
export -f control

function newplist () {
   rm -f /tmp/list*.m3u
   rm -f /tmp/dirlist
   rm -f ~/refs3.m3u
   rm -f /tmp/f4
   rm -f /root/list1.m3u
   bash -c mplist
exit 0
}
export -f newplist

function editor () {
mv /tmp/xyp /tmp/pyx
lf=$HOME/refs1.txt
lf2=$HOME/refs2.txt
[[ "$lf2" ]] && mv "$lf2" "$lf"
refdnd &
sleep 1
/tmp/pyx
}
export -f editor

function dostuff {
    lf2=$HOME/refs2.txt
    STUFF="${0//file:\/\//}"
   printf %s\\\n "$STUFF" >> "$lf2"
}
export -f dostuff

function edit () {
   geany /tmp/list1.m3u
}
export -f edit

function save () {
fix=$(date | awk '{print $3,$2,$4}' | tr ' ' '_')
cp -f ~/refs1.txt ~/$fix-refs1.txt
cp -f  ~/refs2.txt ~/$fix-refs2.txt
cp -f /tmp/list1.m3u /root/list1.m3u
}
export -f save

function blank () {
lf=$HOME/refs1.txt
lf2=$HOME/refs2.txt
mv /tmp/xyp /tmp/pyx
rm -f "${lf}"
rm -f "${lf2}"
touch "${lf}"
touch "${lf2}"
refdnd &
sleep 1
/tmp/pyx
}
export -f blank

if [ ! -f /tmp/rmyn ]; then
   yad --image /usr/share/pixmaps/dndmplayer.png --text "End dndwidget" --notification --menu="New Session!rm -f /tmp/flag!/usr/share/pixmaps/document-open-folder.png|Stop play!killall vlc!/usr/share/pixmaps/dndmplayer.png|Reset lists!refdnd reset!/usr/share/pixmaps/close.png|Reset Playlist!bash -c newplist!/usr/share/pixmaps/leafpad.png|View playlist!bash -c mplist!/usr/share/pixmaps/leafpad.png|Edit playlist!bash -c edit!/usr/share/pixmaps/leafpad.png|Close Tray!/tmp/rmyn!/usr/share/pixmaps/closer.png" --command="refdnd" &
   note=$!
   task='kill $yadn'
   echo "#!/bin/sh
   yadn=$note
   $task
   rm -f /tmp/rmyn
   " > /tmp/rmyn
   chmod 755 /tmp/rmyn
fi
yad --plug=$$ --tabnum=2 --text="Drag-n-drop items/text here\nThey will be added to\n/root/refs1.txt list\n---" --dnd --command "bash -c 'printf %s\\\\n \"\${0//file:\/\//}\"'" >> "$lf" &
yp=$!
task='kill $pid'
echo "#!/bin/sh
yp=$yp
$task
" > /tmp/xyp
chmod 755 /tmp/xyp
tail -n 1000 -f "$lf" | awk '{fflush();print;fflush()}' | yad --plug=$$ --tabnum=3 --editable --listen --tail --text-info &
yad --plug=$$ --tabnum=4 --text="Drag-n-drop edits from refs1\nOr refs2 / any source\nThey will create /root/refs2.txt\n---\n" --dnd --command "bash -c dostuff" > "$lf2" &
yad --plug=$$ --tabnum=6 --form --field="Replace refs1 with refs2:fbtn" "bash -c editor" --field="'Start New' refs lists:fbtn" "bash -c blank" --field="Save Refs/Plist by date in /root:fbtn" "bash -c save" --field="Play/Next Track:fbtn" "bash -c control" &
tail -f "$lf2" | awk '{fflush();print;fflush()}' | yad --plug=$$ --tabnum=5 --editable --listen --tail --text-info &
yad --plug=$$ --tabnum=1 --text="\n This is a file router.\n\n Prepare a directory with links/files\n DragNDrop directory here\n Files will be routed to apps\n\n Media gets added to /tmp/list1.m3u\n Playlist opened by media player" --listen --dnd --command "bash -c mediap" &
yad --window-icon=/usr/share/pixmaps/leafpad.png --geometry=80x80-80+280 --no-buttons --on-top --notebook --key=$$ --title="D'n'D Ref-lists & PlayMedia" --command "kill $YAD_PID" --tab="Player" --tab="DnD1" --tab="refs1" --tab-pos=bottom --tab="DnD2" --tab="refs2" --tab="Save" &
Back to top
View user's profile Send private message MSN Messenger 
Display posts from previous:   Sort by:   
Page 1 of 1 [5 Posts]  
Post new topic   Reply to topic View previous topic :: View next topic
 Forum index » Advanced Topics » Additional Software (PETs, n' stuff) » Utilities
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group
[ Time: 0.0611s ][ Queries: 15 (0.0060s) ][ GZIP on ]