News:

If you have an Android device, check out VoxWav!

Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - xtermin8r

#1
Quote from: nikeb on July 22, 2015, 06:38:48 PM
hi xtermin8or

I m asking you about this old topic because i can't see the old pics.
Great work on that interface, i saw it on YT.

I would love to figured out how you can parse on an RSS your voxlog.txt or if there is a way on rainmeter of keeping the voxlog on a notes box or something.

If i'm OT any mod can please tell me.

Thanks in advantage.

Hi
Ill post some info for you soon.
#2
WAY Off Topic / Re: The xtermin8r has returned
August 18, 2015, 10:42:09 AM
Quote from: jitterjames on August 17, 2015, 10:31:50 PM
Welcome back. Where did you go?  :P

I took a break from everything and decided to explore and experiment with virtual worlds.
#3
WAY Off Topic / The xtermin8r has returned
August 17, 2015, 11:36:02 AM
hi everyone
im back.

Snap - The Ex-Terminator - 1992 (Rare)
https://www.youtube.com/watch?v=myFu0jtXcd8
#4
below is my method to enable line in for winamp by using command line parameters : Simple

<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 1.9.5.6-->
<command id="1169" name="Line In" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
 <action>
   <cmdType>Launch.Hidden</cmdType>
   <params>
     <param>E:\Appz\Media Players\Winamp_5.66\winamp.exe</param>
     <param>linein://</param>
   </params>
   <cmdRepeat>1</cmdRepeat>
 </action>
 <phrase>Line In</phrase>
</command>


#5
Quote from: jitterjames on August 24, 2014, 11:49:10 AM
I think the burning question is, how do you get milkdrop to respond to the TTS audio.

terribly sorry, i thought that video had something to do with the milkdrop osd being displayed.

this is how it's done :

1. Enable line in for winamp by right clicking on the eject button and selecting open url then pasting linein:// as the url.
2. Enable stereo mix

that's it i think.

some info to guide you :
http://vjforums.info/threads/winamp-milkdrop-audio-input.6637/
#6
Quote from: Hiryu on August 20, 2014, 05:46:33 PM
Is this through something like VAC to Winamp?  How does one do this?

i dont use vac, i think i used vc or an autoit script to write to a  file called milk2_msg.ini, which resides in the milkdrop visualisation folder, then i refresh the milkdrop visualisation.

i will take a look again and let you know how i did it.
#7
XML Exchange / Re: What can I Say a la Siri Style !
July 30, 2014, 11:46:52 AM
I was planning on doing the same thing but in python.
Thanks.
#8
Quote from: yonisade on July 25, 2014, 06:17:25 AM
I've installed the v2.0 and for some reason the application won't open.
I can see in Task Manager that the process opens and closes immediately everytime i run it.

Try right clicking on voxcommado.exe and run as administrator.
#10
artist to m3u playlist, this script scans the musicvideos.xml file created by the 1st script ScanMusicVideos.py and extracts all entries containing artist name and creates a m3u playlist file for mpc.


#-------------------------------------------------------------------------------
# Name:        Scan Music VidcArtists to m3u
# Purpose:
#
# Author:      xtermin8r
#
# Created:     18/07/2014
# Copyright:   (c) xtermin8r 2014
# Licence:     To Kill
#-------------------------------------------------------------------------------
from itertools import groupby
import urllib, urllib2
import re
import os
from re import findall
from xml.etree import ElementTree as ET
import sys
import subprocess
import urllib

pathmpc = "E:\Appz\Media Players\MPC-HC.1.7.3.x86\mpc-hc.exe"
pathvc = "E:\Appz\Vox\VoxCommando_1.951\VoxCommando.exe"
m3ufile = open("E:\\Appz\\Vox\\payloads\\Artist_list.m3u", "wb")

xml = "E:\Appz\Vox\Payloads\musicvideos.xml"

#-------------------------------------------------------------------------------
# get comamnd line arguments
#-------------------------------------------------------------------------------
if(len(sys.argv) > 1):
   string1 = (sys.argv)
   # join list as a string
   string1 = ' '.join(string1)
   # regex commandline argument from vc
   string1 = (re.findall('.py (.*)',string1))
   #store match 0
   string1 = string1[0]
#-------------------------------------------------------------------------------
# vc stuff
#-------------------------------------------------------------------------------
#DEBUG
#string1 = 'andain'
url = urllib.URLopener()
url.open('http://127.0.0.1:8081/api/tts.speak&&playing music videos by  ' + string1)
#-------------------------------------------------------------------------------

value = []
phrase = []

def ReadXml():
   for child in root:
       global nodup
       c1 = (child.find('value').text)
       if c1 is not None:
           if string1.lower() in c1.lower():
               value = (c1.encode("UTF-8"))
               m3ufile.write(str(value) + "\n")
               #print value
               phrase.append(value)
   return

#MAIN
tree = ET.parse(xml)
root = tree.getroot()
m3ufile.write("#EXTM3U" + "\n")
ReadXml()
m3ufile.close()
subprocess.call([pathmpc, "E:\Appz\Vox\Payloads\Artist_list.m3u"])


vc command to execute the script:

<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 1.9.5.6-->
<command id="890" name="Play videos by Artist" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
 <action>
   <cmdType>Launch.Hidden</cmdType>
   <params>
     <param>E:\Appz\Programming\Python26\python</param>
     <param>E:\Appz\Vox\PY\Artist2m3u.py {PF.1}</param>
   </params>
   <cmdRepeat>1</cmdRepeat>
 </action>
 <action>
   <cmdType>OSD.ShowText</cmdType>
   <params>
     <param>{PF.1}</param>
     <param />
     <param>30</param>
   </params>
   <cmdRepeat>1</cmdRepeat>
 </action>
 <phrase>play music videos by</phrase>
 <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">E:\Appz\Vox\Payloads\ArtistVideos.xml</payloadFromXML>
</command>
#11
more to follow.
#12
Scan music video artists, this script will extract all artist names to an xml from the musicvideos.xml generated by the above script ScanMusicVideos.py,  make sure there is a hyphen between artist and song name.

#-------------------------------------------------------------------------------
# Name:        Extract elements from XML
# Purpose:
#
# Author:      xtermin8r
#
# Created:     10/06/2014
# Copyright:   (c) xtermin8r 2014
# Licence:     <your licence>
#-------------------------------------------------------------------------------
import urllib, urllib2
import re
import os
from re import findall
from xml.etree import ElementTree as ET

txtfile = open("E:\\Appz\\Vox\\payloads\\artist_videos.txt", "wb")
xmlin = "E:\Appz\Vox\Payloads\musicvideos.xml"
xmlout = "E:\\Appz\\Vox\\payloads\\ArtistVideos.xml"

#function: get rid of unwanted characters
def cfix(zx):

   f2 = re.sub( '\s+', ' ', zx).strip()
   #Remove Digits
   #f2 = re.sub(r"(^|\W)\d+", "", f2)

   f2 = f2.replace('xDR;', ' ')
   f2 = f2.replace(" -", " ")
   f2 = f2.replace("- ", " ")
   f2 = f2.replace(" - ", " ")
   f2 = f2.replace("-", " ")
   f2 = f2.replace(":", " ")
   f2 = f2.replace("_", " ")
   f2 = f2.replace("5.1", "")
   f2 = f2.replace(".", " ")
   f2 = f2.replace("!", " ")
   f2 = f2.replace("?", " ")
   f2 = f2.replace("@", " ")
   f2 = f2.replace("&#150", "-")
   f2 = f2.replace("1080p", " ")
   f2 = f2.replace("720p", " ")
   f2 = f2.replace("720P", " ")
   f2 = f2.replace("x264", " ")
   f2 = f2.replace("ac3", " ")
   f2 = f2.replace("AC3", " ")
   f2 = f2.replace("DTS", " ")
   f2 = f2.replace("DVD", " ")
   f2 = f2.replace("DvD", " ")
   f2 = f2.replace("VOB", " ")
   f2 = f2.replace("rip", " ")
   f2 = f2.replace("aac", " ")
   f2 = f2.replace("Rip", " ")
   f2 = f2.replace("hd", " ")
   f2 = f2.replace("HD", " ")
   f2 = f2.replace("Hd", " ")
   f2 = f2.replace("Hq", " ")
   f2 = f2.replace("BluRay", " ")
   f2 = f2.replace("Blu Ray", " ")
   f2 = f2.replace("1080i", " ")
   f2 = f2.replace("H264", " ")
   f2 = f2.replace("h264", " ")
   f2 = f2.replace("(", " ")
   f2 = f2.replace(")", " ")
   f2 = f2.replace("]", " ")
   f2 = f2.replace("[", " ")
   f2 = f2.replace("AlbumArtSmall", " ")
   f2 = f2.replace("folder", " ")
   f2 = f2.replace("AlbumArt", " ")
   f2 = re.sub( '\s+', ' ', f2).strip()
   global x
   x = f2
   return x

tree = ET.parse(xmlin)
root = tree.getroot()

#create the root </PayloadsRoot> <PayloadsRoot>
root_element = ET.Element("PayloadsRoot")

global t1
t1 = ""
n1 = 1

for data in root.findall('payload'):
   phrase = data.find('phrase').text
   value = data.find('value').text
   head, tail = os.path.split(value)
   value = ('.').join(tail.split('.')[:-1])
   #remove beginning digits
   value = re.sub('^[0-9]+.', '', value)
   #Remove empty lines
   #split before hyphen
   value = value.split('-', 1)[0]
   cfix(value)
   value = x
   if (value.lower() != t1.lower()):
       if t1 != value:
           if (value != ""):
               #remove beginning digits
               artist = re.sub('^[0-9]+.', '', value)

               #create the first subelemet <payload> </payload>
               pay_element = ET.SubElement(root_element, "payload")
               #create the first child <value> </value>
               child = ET.SubElement(pay_element, "value")
               child.text = str(n1)

               #create the second child <phrase> </phrase>
               child = ET.Element("phrase")

               child.text = artist
               #now append
               pay_element.append(child)

               child = ET.Element("subsetmatching")
               child.text = "true"
               #now append
               pay_element.append(child)

               n1 = n1 + 1
               #txtfile.write(str(artist) + "\n")
               txtfile.write(artist + "\n")
               #print(value)
   t1 = artist

txtfile.close()
def indent(elem, level=0):
   i = "\n" + level*'\t'
   if len(elem):
       if not elem.text or not elem.text.strip():
           elem.text = i + '\t'
       if not elem.tail or not elem.tail.strip():
           elem.tail = i
       for elem in elem:
           indent(elem, level+1)
       if not elem.tail or not elem.tail.strip():
           elem.tail = i
   else:
       if level and (not elem.tail or not elem.tail.strip()):
           elem.tail = i

indent(root_element)
#View xml tree
print ( ET.tostring(root_element) )

output_file = open(xmlout, 'w' )
output_file.write( '<?xml version="1.0" encoding="utf-8"?>'+'\n' )
output_file.write( '<!--A VoxCommando Payload file-->' +'\n' )
output_file.write( ET.tostring(root_element) )
output_file.close()


#13
Scan contents of directories and sub directories to xml, click on the link below to download the script.

#-------------------------------------------------------------------------------
# Name:        Scan Music Videos
# Purpose:     I need it
#
# Author:      xtermin8r
#
# Created:     21/05/2014
# Copyright:   (c) xtermin8r 2014
# Licence:
#-------------------------------------------------------------------------------
import re
import os
from re import findall
from xml.etree import ElementTree as ET
import urllib, urllib2

# Set the directories
rootDir = "E:\Videos\Music Vids"
rootDir2 = "F:\Videos\Music Vids"
xmlpath = "E:\\Appz\\Vox\\payloads\\musicvideos.xml"
txtfile = open("E:\\Appz\\Vox\\payloads\\music_videos_list.txt", "wb")

#function: get rid of unwanted characters
def cfix(zx):
   global x
   f2 = re.sub( '\s+', ' ', zx).strip()
   f2 = f2.replace(" -", " ")
   f2 = f2.replace("- ", " ")
   f2 = f2.replace(" - ", " ")
   f2 = f2.replace("-", " ")
   f2 = f2.replace(":", " ")
   f2 = f2.replace("_", " ")
   f2 = f2.replace("5.1", "")
   f2 = f2.replace(".", " ")
   f2 = f2.replace("!", " ")
   f2 = f2.replace("1080p", " ")
   f2 = f2.replace("720p", " ")
   f2 = f2.replace("x264", " ")
   f2 = f2.replace("ac3", " ")
   f2 = f2.replace("AC3", " ")
   f2 = f2.replace("DTS", " ")
   f2 = f2.replace("DVD", " ")
   f2 = f2.replace("DvD", " ")
   f2 = f2.replace("VOB", " ")
   f2 = f2.replace("rip", " ")
   f2 = f2.replace("aac", " ")
   f2 = f2.replace("Rip", " ")
   f2 = f2.replace("hd", " ")
   f2 = f2.replace("HD", " ")
   f2 = f2.replace("Hd", " ")
   f2 = f2.replace("Hq", " ")
   f2 = f2.replace("BluRay", " ")
   f2 = f2.replace("Blu Ray", " ")
   f2 = f2.replace("1080i", " ")
   f2 = f2.replace("H264", " ")
   f2 = f2.replace("h264", " ")
   f2 = f2.replace("(", " ")
   f2 = f2.replace(")", " ")
   f2 = f2.replace("]", " ")
   f2 = f2.replace("[", " ")
   f2 = f2.replace("AlbumArtSmall", " ")
   f2 = f2.replace("folder", " ")
   f2 = f2.replace("AlbumArt", " ")
   f2 = re.sub( '\s+', ' ', f2).strip()
   x = f2
   return x

#create the root </PayloadsRoot> <PayloadsRoot>
root_element = ET.Element("PayloadsRoot")


def Scan(rootDir):
   for dirName, subdirList, fileList in os.walk(rootDir):
       for fname in fileList:
           if not fname.endswith (".jpg") :
               #create the first subelemet <payload> </payload>
               pay_element = ET.SubElement(root_element, "payload")
               #create the first child <value> </value>
               child = ET.SubElement(pay_element, "value")
               child.text = dirName +"\\" + fname
               #create the second child <phrase> </phrase>
               child = ET.Element("phrase")
               #get the filename without the extension
               fname = ('.').join(fname.split('.')[:-1])
               #Call function get rid of unwanted characters
               cfix(fname)
               fileName = x

               #Debug : Display file names
               #print(fileName)

               #Write filename to text file
               txtfile.write(str(fileName) + "\n")

               #now append
               child.text = fileName
               pay_element.append(child)

               child = ET.Element("subsetmatching")
               child.text = "true"

               pay_element.append(child)

def indent(elem, level=0):
   i = "\n" + level*'\t'
   if len(elem):
       if not elem.text or not elem.text.strip():
           elem.text = i + '\t'
       if not elem.tail or not elem.tail.strip():
           elem.tail = i
       for elem in elem:
           indent(elem, level+1)
       if not elem.tail or not elem.tail.strip():
           elem.tail = i
   else:
       if level and (not elem.tail or not elem.tail.strip()):
           elem.tail = i

#Main
#Call function Scan directory
Scan(rootDir)
#Another directory to scan
#Scan(rootDir2)
txtfile.close()

indent(root_element)
#Debug : View xml tree
#print ( ET.tostring(root_element) )

output_file = open(xmlpath, 'w' )
output_file.write( '<?xml version="1.0" encoding="utf-8"?>'+'\n' )
output_file.write( '<!--A VoxCommando Payload file-->' +'\n' )
output_file.write( ET.tostring(root_element) )
output_file.close()

#Send tts command to vox over http
url = urllib.URLopener()
url.open('http://127.0.0.1:8081/api/tts.speak&&scan has completed,sir')

#14
All mpc commands for vc, click on the link below to download them.

#15
Hi lja
I'll try uploading a video tonight, integration is complete, if you want to try it then download what's needed.