Recherche avancée

Médias (1)

Mot : - Tags -/publier

Autres articles (86)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (7293)

  • Tracking User Acquisition and Social Media Activity with Piwik

    25 avril 2017, par Florian Hieß — Community

    Being able to monitor user acquisition and social media activity is essential for determining whether the outcome of your campaigns is in line with the business objectives. Determining the source of each website visit that gets you closer to your business goals enables you to focus your efforts in the directions that are worth it. In this article you will learn why it is important to identify your traffic sources and how you can track user acquisition with Piwik Analytics.

    Why Is It Important to Identify Traffic Sources on Your Website ?

    Since brands nowadays use multiple channels for promotion and advertising, identifying the touch points and traffic sources of a lead or customer seems to become more and more difficult. And yet, this channel multiplication is what makes the source of a purchase more important. Once you identify the traffic origin and how each source is performing you are able to increase your efforts on the best performers, both in terms of human resources and monetary investments, to attract more leads or customers in these marketing channels.

    The default referrer types are defined by :

    • Search engine
    • Direct traffic
    • Websites and
    • Campaigns

    But consider that within the “Campaigns” type, each of the following referrers is a possible traffic source for your website and can be tracked with the Piwik URL builder :

    • Google AdWords
    • Display Ads, Banners
    • Links in Newsletters, Emailing
    • Affiliate links
    • Tweets
    • Facebook Ads

    Measure your performance and conversion

    With so many options, wouldn’t you like to know which one of them worked best ? To rate channels based on their performance, you first need to establish conversion goals and attribution.

    A conversion can be anything from sign-ups or downloads to leads, registered users and even paying customers. Define conversions based on what you want people to do once they’ve landed on your website.

    Piwik Conversion Goals

    You need to define each conversion type in the Piwik dashboard, so that the analytics platform knows what to track. As far as attribution goes, Piwik by default links the conversion and attributes to the last seen (non-direct) referrer. You are able to change that to the first referrer in the attribution line by following the instructions in this conversion attribution FAQ.

    Track Your User Acquisition Right with Piwik

    Using the Piwik URL Builder tool, you can tag each URL you promote in your campaigns using relevant keywords. Provided that your URLs are tagged, whenever someone clicks on them, the campaign will be listed as the referrer in the Piwik dashboard. Once you’ve generated trackable URLs, you can include them in your social media posts which could be planned and scheduled using a social media management tool such as Swat.io.

    Piwik Campaign URL Builder

    Campaign URLs work wonders for telling which campaign helped you reach your goals faster, more efficiently and so on but they do have a downside. They only work for URLs that you’ve shared. If someone decides to share a link of yours on social media they won’t be tagged beforehands. This is where the Referrers section of Piwik comes in handy, as it acts as a backup for tracking traffic sources. The overview tab features a graph that can help you identify when spikes occurred.

    Piwik Referrer Overview

    As well as a numerical representation of the main referrer categories for the selected time period.

    Piwik Referrer Overview

    Switching from Overview to Websites & Social, you can see a graphical representation of the social networks acting as referrers. The visualization can be changed to bar graphs or table, and can be easily exported in various formats for reports.

    Piwik Referrer Websites and Social

    The websites list features not only the social referrers, but all of the websites generating visits to your website. With Piwik you should not have issues with referrer spam, as the Piwik core team has tackled this problem early on, as detailed in how to stop referrer spam. Our analytics spam blacklist is a public project on GitHub.

    Piwik Referrer Websites

    Assuming that you’re relying only on Facebook and VK.com for your campaigns, as the above screenshot would suggest, you might want to give paid advertising a try on these two social networks. Paid ads can increase reach and engagement, can get more relevant visitors to your website and can have a snowball effect in a short period of time.

    What Social Networks Can Piwik Track ?

    Piwik’s built-in social network list is quite extensive, as it currently features 70 platforms. The entries range from popular social networks such as Facebook, Twitter and LinkedIn to more obscure ones such as Renren. However, this list is not available by default, and to see it or alter it, you would need a third-party plugin.

    How Does the Referrers Manager Plugin for Piwik Work ?

    The Referrers Manager plugin for Piwik provides access to the list of search engines and social networks that this analytics platform can handle by default. The simple plugin can come in handy when sorting out referrers. First of all, it displays a list of all search engines and social networks that Piwik can handle by default. Secondly, it enables users to disable/enable the platform’s default social network list. And using Referrers Manager, you can add custom engines or social networks to the referrers list in case they’re not already available.

    Piwik Referrer Manager Addon

    Conclusions

    Piwik is a very capable analytics platform as it is, but combined with third-party plugins such as Referrers Manager, it can provide even better insights on where your visitors are coming from. Remember to correlate the referrers with goals in order to determine which website or social network performs best in your context. And don’t forget to assign a monetary revenue value to each goal, in order to determine your social media ROI with greater accuracy.

  • ADD Image overlay to ffmpeg video stream

    1er juillet 2017, par Chris

    I am new to ffmpeg and want to add an HUD to the video stream, so a few questions.

    1. What file do I need to edit.
    2. What do I need to do to achieve this.

    Thanks in advance. Also I am VERY new to all of this, I will need instructions step by step

    I saw other questions saying to add this : ffmpeg -n -i video.mp4 -i logo.png -filter_complex "[0:v]setsar=sar=1[v];[v][1]blend=all_mode='overlay':all_opacity=0.7" -movflags +faststart tmb/video.mp4

    But I dont know where to put it, i entered it in the terminal and got this :

    pi@raspberrypi:~ $ ffmpeg -n -i video.mp4 -i logo.png -filter_complex "[0:v]setsar=sar=1[v];[v][1]blend=all_mode='overlay':all_opacity=0.7" -movflags +faststart tmb/video.mp4
    ffmpeg version N-86215-gb5228e4 Copyright (c) 2000-2017 the FFmpeg developers
     built with gcc 4.9.2 (Raspbian 4.9.2-10)
     configuration: --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --extra-libs=-ldl
     libavutil      55. 63.100 / 55. 63.100
     libavcodec     57. 96.101 / 57. 96.101
     libavformat    57. 72.101 / 57. 72.101
     libavdevice    57.  7.100 / 57.  7.100
     libavfilter     6. 90.100 /  6. 90.100
     libswscale      4.  7.101 /  4.  7.101
     libswresample   2.  8.100 /  2.  8.100
     libpostproc    54.  6.100 / 54.  6.100
    video.mp4: No such file or directory

    I dont understand what i am supposed to do with the video.mp4 ?

    HERE IS THE SCRIPT THAT SENDS THE VIDEO.

    import subprocess
    import shlex
    import re
    import os
    import time
    import urllib2
    import platform
    import json
    import sys
    import base64
    import random


    import argparse

    parser = argparse.ArgumentParser(description='robot control')
    parser.add_argument('camera_id')
    parser.add_argument('video_device_number', default=0, type=int)
    parser.add_argument('--kbps', default=450, type=int)
    parser.add_argument('--brightness', default=75, type=int, help='camera brightness')
    parser.add_argument('--contrast', default=75, type=int, help='camera contrast')
    parser.add_argument('--saturation', default=15, type=int, help='camera saturation')
    parser.add_argument('--rotate180', default=False, type=bool, help='rotate image 180 degrees')
    parser.add_argument('--env', default="prod")



    args = parser.parse_args()



    server = "runmyrobot.com"
    #server = "52.52.213.92"


    from socketIO_client import SocketIO, LoggingNamespace

    # enable raspicam driver in case a raspicam is being used
    os.system("sudo modprobe bcm2835-v4l2")


    if args.env == "dev":
       print "using dev port 8122"
       port = 8122
    elif args.env == "prod":
       print "using prod port 8022"
       port = 8022
    else:
       print "invalid environment"
       sys.exit(0)


    print "initializing socket io"
    print "server:", server
    print "port:", port
    socketIO = SocketIO(server, port, LoggingNamespace)
    print "finished initializing socket io"

    #ffmpeg -f qtkit -i 0 -f mpeg1video -b 400k -r 30 -s 320x240 http://52.8.81.124:8082/hello/320/240/


    def onHandleCameraCommand(*args):
       #thread.start_new_thread(handle_command, args)
       print args


    socketIO.on('command_to_camera', onHandleCameraCommand)


    def onHandleTakeSnapshotCommand(*args):
       print "taking snapshot"
       inputDeviceID = streamProcessDict['device_answer']
       snapShot(platform.system(), inputDeviceID)
       with open ("snapshot.jpg", 'rb') as f:
           data = f.read()
       print "emit"

       socketIO.emit('snapshot', {'image':base64.b64encode(data)})

    socketIO.on('take_snapshot_command', onHandleTakeSnapshotCommand)


    def randomSleep():
       """A short wait is good for quick recovery, but sometimes a longer delay is needed or it will just keep trying and failing short intervals, like because the system thinks the port is still in use and every retry makes the system think it's still in use. So, this has a high likelihood of picking a short interval, but will pick a long one sometimes."""

       timeToWait = random.choice((0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 5))
       print "sleeping", timeToWait
       time.sleep(timeToWait)



    def getVideoPort():


       url = 'http://%s/get_video_port/%s' % (server, cameraIDAnswer)


       for retryNumber in range(2000):
           try:
               print "GET", url
               response = urllib2.urlopen(url).read()
               break
           except:
               print "could not open url ", url
               time.sleep(2)

       return json.loads(response)['mpeg_stream_port']

    def getAudioPort():


       url = 'http://%s/get_audio_port/%s' % (server, cameraIDAnswer)


       for retryNumber in range(2000):
           try:
               print "GET", url
               response = urllib2.urlopen(url).read()
               break
           except:
               print "could not open url ", url
               time.sleep(2)

       return json.loads(response)['audio_stream_port']



    def runFfmpeg(commandLine):

       print commandLine
       ffmpegProcess = subprocess.Popen(shlex.split(commandLine))
       print "command started"

       return ffmpegProcess



    def handleDarwin(deviceNumber, videoPort, audioPort):


       p = subprocess.Popen(["ffmpeg", "-list_devices", "true", "-f", "qtkit", "-i", "dummy"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

       out, err = p.communicate()

       print err

       deviceAnswer = raw_input("Enter the number of the camera device for your robot from the list above: ")
       commandLine = 'ffmpeg -f qtkit -i %s -f mpeg1video -b 400k -r 30 -s 320x240 http://%s:%s/hello/320/240/' % (deviceAnswer, server, videoPort)

       process = runFfmpeg(commandLine)

       return {'process': process, 'device_answer': deviceAnswer}


    def handleLinux(deviceNumber, videoPort, audioPort):

       print "sleeping to give the camera time to start working"
       randomSleep()
       print "finished sleeping"


       #p = subprocess.Popen(["ffmpeg", "-list_devices", "true", "-f", "qtkit", "-i", "dummy"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
       #out, err = p.communicate()
       #print err


       os.system("v4l2-ctl -c brightness={brightness} -c contrast={contrast} -c saturation={saturation}".format(brightness=args.brightness,
                                                                                                                contrast=args.contrast,
                                                                                                                saturation=args.saturation))


       if deviceNumber is None:
           deviceAnswer = raw_input("Enter the number of the camera device for your robot: ")
       else:
           deviceAnswer = str(deviceNumber)


       #commandLine = '/usr/local/bin/ffmpeg -s 320x240 -f video4linux2 -i /dev/video%s -f mpeg1video -b 1k -r 20 http://runmyrobot.com:%s/hello/320/240/' % (deviceAnswer, videoPort)
       #commandLine = '/usr/local/bin/ffmpeg -s 640x480 -f video4linux2 -i /dev/video%s -f mpeg1video -b 150k -r 20 http://%s:%s/hello/640/480/' % (deviceAnswer, server, videoPort)
       # For new JSMpeg
       #commandLine = '/usr/local/bin/ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s -f mpegts -codec:v mpeg1video -s 640x480 -b:v 250k -bf 0 http://%s:%s/hello/640/480/' % (deviceAnswer, server, videoPort) # ClawDaddy
       #commandLine = '/usr/local/bin/ffmpeg -s 1280x720 -f video4linux2 -i /dev/video%s -f mpeg1video -b 1k -r 20 http://runmyrobot.com:%s/hello/1280/720/' % (deviceAnswer, videoPort)


       if args.rotate180:
           rotationOption = "-vf transpose=2,transpose=2"
       else:
           rotationOption = ""

       # video with audio
       videoCommandLine = '/usr/local/bin/ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s %s -f mpegts -codec:v mpeg1video -s 640x480 -b:v %dk -bf 0 -muxdelay 0.001 http://%s:%s/hello/640/480/' % (deviceAnswer, rotationOption, args.kbps, server, videoPort)
       audioCommandLine = '/usr/local/bin/ffmpeg -f alsa -ar 44100 -ac 1 -i hw:1 -f mpegts -codec:a mp2 -b:a 32k -muxdelay 0.001 http://%s:%s/hello/640/480/' % (server, audioPort)


       print videoCommandLine
       print audioCommandLine

       videoProcess = runFfmpeg(videoCommandLine)
       audioProcess = runFfmpeg(audioCommandLine)

       return {'video_process': videoProcess, 'audioProcess': audioProcess, 'device_answer': deviceAnswer}



    def handleWindows(deviceNumber, videoPort):

       p = subprocess.Popen(["ffmpeg", "-list_devices", "true", "-f", "dshow", "-i", "dummy"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)


       out, err = p.communicate()
       lines = err.split('\n')

       count = 0

       devices = []

       for line in lines:

           #if "]  \"" in line:
           #    print "line:", line

           m = re.search('.*\\"(.*)\\"', line)
           if m != None:
               #print line
               if m.group(1)[0:1] != '@':
                   print count, m.group(1)
                   devices.append(m.group(1))
                   count += 1


       if deviceNumber is None:
           deviceAnswer = raw_input("Enter the number of the camera device for your robot from the list above: ")
       else:
           deviceAnswer = str(deviceNumber)

       device = devices[int(deviceAnswer)]
       commandLine = 'ffmpeg -s 640x480 -f dshow -i video="%s" -f mpegts -codec:v mpeg1video -b 200k -r 20 http://%s:%s/hello/640/480/' % (device, server, videoPort)


       process = runFfmpeg(commandLine)

       return {'process': process, 'device_answer': device}



    def handleWindowsScreenCapture(deviceNumber, videoPort):

       p = subprocess.Popen(["ffmpeg", "-list_devices", "true", "-f", "dshow", "-i", "dummy"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)


       out, err = p.communicate()

       lines = err.split('\n')

       count = 0

       devices = []

       for line in lines:

           #if "]  \"" in line:
           #    print "line:", line

           m = re.search('.*\\"(.*)\\"', line)
           if m != None:
               #print line
               if m.group(1)[0:1] != '@':
                   print count, m.group(1)
                   devices.append(m.group(1))
                   count += 1


       if deviceNumber is None:
           deviceAnswer = raw_input("Enter the number of the camera device for your robot from the list above: ")
       else:
           deviceAnswer = str(deviceNumber)



       device = devices[int(deviceAnswer)]
       commandLine = 'ffmpeg -f dshow -i video="screen-capture-recorder" -vf "scale=640:480" -f mpeg1video -b 50k -r 20 http://%s:%s/hello/640/480/' % (server, videoPort)

       print "command line:", commandLine

       process = runFfmpeg(commandLine)

       return {'process': process, 'device_answer': device}




    def snapShot(operatingSystem, inputDeviceID, filename="snapshot.jpg"):    

       try:
           os.remove('snapshot.jpg')
       except:
           print "did not remove file"

       commandLineDict = {
           'Darwin': 'ffmpeg -y -f qtkit -i %s -vframes 1 %s' % (inputDeviceID, filename),
           'Linux': '/usr/local/bin/ffmpeg -y -f video4linux2 -i /dev/video%s -vframes 1 -q:v 1000 -vf scale=320:240 %s' % (inputDeviceID, filename),
           'Windows': 'ffmpeg -y -s 320x240 -f dshow -i video="%s" -vframes 1 %s' % (inputDeviceID, filename)}

       print commandLineDict[operatingSystem]
       os.system(commandLineDict[operatingSystem])



    def startVideoCapture():

       videoPort = getVideoPort()
       audioPort = getAudioPort()
       print "video port:", videoPort
       print "audio port:", audioPort

       #if len(sys.argv) >= 3:
       #    deviceNumber = sys.argv[2]
       #else:
       #    deviceNumber = None
       deviceNumber = args.video_device_number

       result = None
       if platform.system() == 'Darwin':
           result = handleDarwin(deviceNumber, videoPort, audioPort)
       elif platform.system() == 'Linux':
           result = handleLinux(deviceNumber, videoPort, audioPort)
       elif platform.system() == 'Windows':
           #result = handleWindowsScreenCapture(deviceNumber, videoPort)
           result = handleWindows(deviceNumber, videoPort, audioPort)
       else:
           print "unknown platform", platform.system()

       return result


    def timeInMilliseconds():
       return int(round(time.time() * 1000))



    def main():

       print "main"

       streamProcessDict = None


       twitterSnapCount = 0

       while True:



           socketIO.emit('send_video_status', {'send_video_process_exists': True,
                                               'camera_id':cameraIDAnswer})


           if streamProcessDict is not None:
               print "stopping previously running ffmpeg (needs to happen if this is not the first iteration)"
               streamProcessDict['process'].kill()

           print "starting process just to get device result" # this should be a separate function so you don't have to do this
           streamProcessDict = startVideoCapture()
           inputDeviceID = streamProcessDict['device_answer']
           print "stopping video capture"
           streamProcessDict['process'].kill()

           #print "sleeping"
           #time.sleep(3)
           #frameCount = int(round(time.time() * 1000))

           videoWithSnapshots = False
           while videoWithSnapshots:

               frameCount = timeInMilliseconds()

               print "taking single frame image"
               snapShot(platform.system(), inputDeviceID, filename="single_frame_image.jpg")

               with open ("single_frame_image.jpg", 'rb') as f:

                   # every so many frames, post a snapshot to twitter
                   #if frameCount % 450 == 0:
                   if frameCount % 6000 == 0:
                           data = f.read()
                           print "emit"
                           socketIO.emit('snapshot', {'frame_count':frameCount, 'image':base64.b64encode(data)})
                   data = f.read()

               print "emit"
               socketIO.emit('single_frame_image', {'frame_count':frameCount, 'image':base64.b64encode(data)})
               time.sleep(0)

               #frameCount += 1


           if False:
            if platform.system() != 'Windows':
               print "taking snapshot"
               snapShot(platform.system(), inputDeviceID)
               with open ("snapshot.jpg", 'rb') as f:
                   data = f.read()
               print "emit"

               # skip sending the first image because it's mostly black, maybe completely black
               #todo: should find out why this black image happens
               if twitterSnapCount > 0:
                   socketIO.emit('snapshot', {'image':base64.b64encode(data)})




           print "starting video capture"
           streamProcessDict = startVideoCapture()


           # This loop counts out a delay that occurs between twitter snapshots.
           # Every 50 seconds, it kills and restarts ffmpeg.
           # Every 40 seconds, it sends a signal to the server indicating status of processes.
           period = 2*60*60 # period in seconds between snaps
           for count in range(period):
               time.sleep(1)

               if count % 20 == 0:
                   socketIO.emit('send_video_status', {'send_video_process_exists': True,
                                                       'camera_id':cameraIDAnswer})

               if count % 40 == 30:
                   print "stopping video capture just in case it has reached a state where it's looping forever, not sending video, and not dying as a process, which can happen"
                   streamProcessDict['video_process'].kill()
                   streamProcessDict['audio_process'].kill()
                   time.sleep(1)

               if count % 80 == 75:
                   print "send status about this process and its child process ffmpeg"
                   ffmpegProcessExists = streamProcessDict['process'].poll() is None
                   socketIO.emit('send_video_status', {'send_video_process_exists': True,
                                                       'ffmpeg_process_exists': ffmpegProcessExists,
                                                       'camera_id':cameraIDAnswer})

               #if count % 190 == 180:
               #    print "reboot system in case the webcam is not working"
               #    os.system("sudo reboot")

               # if the video stream process dies, restart it
               if streamProcessDict['video_process'].poll() is not None or streamProcessDict['audio_process'].poll():
                   # wait before trying to start ffmpeg
                   print "ffmpeg process is dead, waiting before trying to restart"
                   randomSleep()
                   streamProcessDict = startVideoCapture()

           twitterSnapCount += 1

    if __name__ == "__main__":


       #if len(sys.argv) > 1:
       #    cameraIDAnswer = sys.argv[1]
       #else:
       #    cameraIDAnswer = raw_input("Enter the Camera ID for your robot, you can get it by pointing a browser to the runmyrobot server %s: " % server)

       cameraIDAnswer = args.camera_id


       main()

    ERROR :

    ffmpeg -n -f mpegts -i http://54.183.232.63:12221 -i logo.png -filter_complex "[0:v]setsar=sar=1[v];[v][1]blend=all_mode='overlay':all_opacity=0.7" -movflags +faststart tmb/video.mp4
    ffmpeg version N-86215-gb5228e4 Copyright (c) 2000-2017 the FFmpeg developers
     built with gcc 4.9.2 (Raspbian 4.9.2-10)
     configuration: --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --extra-libs=-ldl
     libavutil      55. 63.100 / 55. 63.100
     libavcodec     57. 96.101 / 57. 96.101
     libavformat    57. 72.101 / 57. 72.101
     libavdevice    57.  7.100 / 57.  7.100
     libavfilter     6. 90.100 /  6. 90.100
     libswscale      4.  7.101 /  4.  7.101
     libswresample   2.  8.100 /  2.  8.100
     libpostproc    54.  6.100 / 54.  6.100
    [mpegts @ 0x1a57390] Could not detect TS packet size, defaulting to non-FEC/DVHS
    http://54.183.232.63:12221: could not find codec parameters
  • Stage-Whisper is not working because of missing files

    24 novembre 2023, par Tingtong

    I tried to install this here : https://github.com/Stage-Whisper/Stage-Whisper

    


    Once i put the audio file in it, it is still loading and loading but not transcribing it.

    


    So after that i checked the requirements and packages, if there is something missing and there is. I installed those here :

    


    Node (required for Electron)
Yarn (required for Electron)
Python 3.x (required for backend)
Rust (required for backend)
ffmpeg (required for backend)
Poetry (required for backend)


    


    I installed them with homebrew. There are some errors showing up, once i launch the electron programm with "yarn dev" : ERROR : "could not locate binding files"

    


    I also tried "poetry run python stagewhisper —input /path/to/audio/file.mp3", but got following message. Poetry could not find a pyproject.toml file in /Users/Administrator/Desktop/Stage-Whisper or its parents.

    


    Where do i have to put the file pyproject.toml and what do i have to write in it ?

    


    So i checked with brew info all tools which i need for Stage-Whisper. Screenshots :enter image description here
[enter image description here](https://i.stack.imgur.com/sirb3.png)

    


    What i tried was to update those packages/requirements which where missing, with "sudo port install requirementPackageName ". But after checking with brew info again, those parts are still missing. So does that actually work or do i have to install those missing stuff with homebrew ? I have Mac Mojave 10.14.6 and Homebrew 4.1.18 Version.

    


    I also got an error, while i installed those tools with homebrew :

    


    ERROR : You are using macOS 10.14.
We (and Apple) do not provide support for this old version. It is expected behaviour that some formulae will fail to build in this old version... etc

    


    Thank you for your help guys.

    


    Edit :

    


    


    yarn install v1.22.19 warning ../../../package.json : No license field
[1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4]
🔗 Linking dependencies... warning "@emotion/react >
@emotion/babel-plugin@11.10.2" has unmet peer dependency
"@babel/core@^7.0.0". warning "@emotion/react > @emotion/babel-plugin

    


    


    @babel/plugin-syntax-jsx@7.18.6" has unmet peer dependency "@babel/core@^7.0.0-0". warning " > autoprefixer@10.4.4" has unmet
peer dependency "postcss@^8.1.0". warning " >
eslint-config-airbnb@19.0.4" has unmet peer dependency
"eslint-plugin-react-hooks@^4.3.0".
[----------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 0/890^[4/4] 🔨 Building fresh packages... [1/7] ⠁ better-sqlite3
[-/7] ⠁ waiting... [3/7] ⠁ sqlite3 [4/7] ⠁ esbuild error
/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3 :
Command failed. Exit code : 1 Command : prebuild-install || npm run
build-release Arguments : Directory :
/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3
Output : prebuild-install warn install No prebuilt binaries found
(target=20.9.0 runtime=node arch=x64 libc= platform=darwin)

    


    


    


    better-sqlite3@7.6.2 build-release
node-gyp rebuild —release

    


    


    gyp info it worked if it ends with ok gyp info using node-gyp@9.3.0
gyp info using node@20.9.0 | darwin | x64 gyp info find Python using
Python version 3.9.14 found at "/usr/local/bin/python3" gyp info spawn
/usr/local/bin/python3 gyp info spawn args [ gyp info spawn args
    
'/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/electron-rebuild/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp', gyp info spawn args '-f', gyp
info spawn args 'make', gyp info spawn args '-I', gyp info spawn
args
    
'/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3/build/config.gypi',
gyp info spawn args '-I', gyp info spawn args
    
'/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/electron-rebuild/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I', gyp info spawn args
    
'/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library', gyp info spawn args
'-Dvisibility=default', gyp info spawn args
    
'-Dnode_root_dir=/Users/administrator/Library/Caches/node-gyp/20.9.0',
gyp info spawn args
    
'-Dnode_gyp_dir=/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/electron-rebuild/node_modules/node-gyp',
gyp info spawn args
    &#xA;'-Dnode_lib_file=/Users/administrator/Library/Caches/node-gyp/20.9.0/<(target_arch)/node.lib',&#xA;gyp info spawn args
    &#xA;'-Dmodule_root_dir=/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3',&#xA;gyp info spawn args '-Dnode_engine=v8', gyp info spawn args
    &#xA;'—depth=.', gyp info spawn args '—no-parallel', gyp info spawn&#xA;args '—generator-output', gyp info spawn args 'build', gyp info&#xA;spawn args '-Goutput_dir=.' gyp info spawn args ] gyp info spawn&#xA;make gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
    &#xA;TOUCH ba23eeee118cd63e16015df367567cb043fed872.intermediate ACTION&#xA;deps_sqlite3_gyp_locate_sqlite3_target_copy_builtin_sqlite3&#xA;ba23eeee118cd63e16015df367567cb043fed872.intermediate TOUCH&#xA;Release/obj.target/deps/locate_sqlite3.stamp CC(target)&#xA;Release/obj.target/sqlite3/gen/sqlite3/sqlite3.o LIBTOOL-STATIC&#xA;Release/sqlite3.a CXX(target)&#xA;Release/obj.target/better_sqlite3/src/better_sqlite3.o In file&#xA;included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:24 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-array-buffer.h:12 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-local-handle.h:12 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;SHARED_EXTERNAL_POINTER_TAGS(CHECK_SHARED_EXTERNAL_POINTER_TAGS)&#xA;^ /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;PER_ISOLATE_EXTERNAL_POINTER_TAGS(CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS)&#xA;^ /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:693:61 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;static_assert(kJSObjectType + 1 == kFirstJSApiObjectType) ;&#xA;^&#xA;, "" /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:694:55 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;static_assert(kJSObjectType < kLastJSApiObjectType) ;&#xA;^&#xA;, "" /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:695:63 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;static_assert(kFirstJSApiObjectType < kLastJSApiObjectType) ;&#xA;^&#xA;, "" In file included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:24 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-array-buffer.h:13 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-object.h:9 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-maybe.h:106:45 :&#xA;error : no template named 'is_lvalue_reference_v' in namespace 'std' ;&#xA;did you mean 'is_lvalue_reference' ? template >&#xA; ^ &#xA;is_lvalue_reference /Library/Developer/CommandLineTools/usr/include/c++/v1/type_traits:780:50 :&#xA;note : 'is_lvalue_reference' declared here template struct&#xA;_LIBCPP_TEMPLATE_VIS is_lvalue_reference : public false_type {} ;&#xA;^ In file included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:24 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-array-buffer.h:13 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-object.h:9 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-maybe.h:106:69 :&#xA;error : expected '(' for function-style cast or type construction
    &#xA;template
    >&#xA; ^ /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-maybe.h:123:43 :&#xA;error : no template named 'is_lvalue_reference_v' in namespace 'std' ;&#xA;did you mean 'is_lvalue_reference' ? template * = nullptr>&#xA; ^ &#xA;is_lvalue_reference /Library/Developer/CommandLineTools/usr/include/c++/v1/type_traits:780:50 :&#xA;note : 'is_lvalue_reference' declared here template struct&#xA;_LIBCPP_TEMPLATE_VIS is_lvalue_reference : public false_type {} ;&#xA;^ In file included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:24 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-array-buffer.h:13 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-object.h:9 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-maybe.h:123:67 :&#xA;error : expected '(' for function-style cast or type construction&#xA;template * =&#xA;nullptr>&#xA; ^ In file included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:33 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-function.h:11 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-function-callback.h:151:66 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;kReturnValueDefaultValueIndex - kReturnValueIndex) ;&#xA;^&#xA;, "" /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-function-callback.h:153:50 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;kIsolateIndex - kReturnValueIndex) ;&#xA;^&#xA;, "" ./src/util/macros.lzz:157:21 : error : no member named&#xA;'AccessorSignature' in namespace 'v8'&#xA;v8::AccessorSignature::New(isolate, recv)&#xA; ^ ./src/util/binder.lzz:37:51 : error : no member named 'CreationContext' in 'v8::Object'&#xA;v8::Local ctx = obj->CreationContext() ;&#xA; ^ 22 warnings and 6 errors generated. make : ***&#xA;[Release/obj.target/better_sqlite3/src/better_sqlite3.o] Error 1 rm&#xA;ba23eeee118cd63e16015df367567cb043fed872.intermediate gyp ERR ! build&#xA;error gyp ERR ! stack Error : make failed with exit code : 2 gyp ERR !&#xA;stack at ChildProcess.onExit&#xA;(/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/electron-rebuild/node_modules/node-gyp/lib/build.js:203:23)&#xA;gyp ERR ! stack at ChildProcess.emit (node:events:514:28) gyp ERR !&#xA;stack at ChildProcess._handle.onexit&#xA;(node:internal/child_process:294:12) gyp ERR ! System Darwin 18.7.0 gyp&#xA;ERR ! command "/usr/local/bin/node"&#xA;"/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/.bin/node-gyp"&#xA;"rebuild" "—release" gyp ERR ! cwd&#xA;/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3

    &#xA;

    &#xA;

    Same goes for the the "poetry install" command in the backend folder :

    &#xA;

    8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/onig_sys-3a9a2f947b5ad744/outwarning: variable does not need to be mutable --> tokenizers-lib/src/models/unigram/model.rs:265:21 | 265 |                 let mut target_node = &amp;mut best_path_ends_at[key_pos]; |                     ----^^^^^^^^^^^ |                     | |                     help: remove thismut| = note:#[warn(unused_mut)]` on by default

    &#xA;

    warning : variable does not need to be mutable&#xA;—> tokenizers-lib/src/models/unigram/model.rs:282:21&#xA;|&#xA;282 | let mut target_node = &mut best_path_ends_at[starts_at + mblen] ;&#xA;| ----^^^^^^^^^^^&#xA;| |&#xA;| help : remove this mut

    &#xA;

    warning : variable does not need to be mutable&#xA;—> tokenizers-lib/src/pre_tokenizers/byte_level.rs:200:59&#xA;|&#xA;200 | encoding.process_tokens_with_offsets_mut(|(i, (token, mut offsets))| &#xA;| ----^^^^^^^&#xA;| |&#xA;| help : remove this mut

    &#xA;

    error : casting &amp;T to &amp;mut T is undefined behavior, even if the reference is unused, consider instead using an UnsafeCell&#xA;—> tokenizers-lib/src/models/bpe/trainer.rs:526:47&#xA;|&#xA;522 | let w = &words[*i] as *const _ as *mut _ ;&#xA;| -------------------------------- casting happend here&#xA;...&#xA;526 | let word : &mut Word = &mut (*w) ;&#xA;| ^^^^^^^^^&#xA;|&#xA;= note : #[deny(invalid_reference_casting)] on by default

    &#xA;

    warning : tokenizers (lib) generated 3 warnings&#xA;error : could not compile tokenizers (lib) due to previous error ; 3 warnings emitted

    &#xA;

    Caused by :&#xA;process didn't exit successfully : /Users/administrator/.rustup/toolchains/stable-x86_64-apple-darwin/bin/rustc --crate-name tokenizers --edition=2018 tokenizers-lib/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no --cfg &#x27;feature="cached-path"&#x27; --cfg &#x27;feature="clap"&#x27; --cfg &#x27;feature="cli"&#x27; --cfg &#x27;feature="default"&#x27; --cfg &#x27;feature="http"&#x27; --cfg &#x27;feature="indicatif"&#x27; --cfg &#x27;feature="progressbar"&#x27; --cfg &#x27;feature="reqwest"&#x27; -C metadata=cb36f9861d265e60 -C extra-filename=-cb36f9861d265e60 --out-dir /private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps -L dependency=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps --extern aho_corasick=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libaho_corasick-021885281f13d108.rmeta --extern cached_path=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libcached_path-767095c4d4a77107.rmeta --extern clap=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libclap-c92d2593d8a75e62.rmeta --extern derive_builder=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libderive_builder-833217c2af636976.dylib --extern dirs=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libdirs-f12e99ecd3a76eae.rmeta --extern esaxx_rs=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libesaxx_rs-b694f04df571686b.rmeta --extern indicatif=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libindicatif-39491a3282a24810.rmeta --extern itertools=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libitertools-b322e49e83853c17.rmeta --extern lazy_static=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/liblazy_static-28a96417d88df3c9.rmeta --extern log=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/liblog-937f94f366843d8a.rmeta --extern macro_rules_attribute=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libmacro_rules_attribute-d4d77bee9330e675.rmeta --extern onig=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libonig-7f9dab4334743bdf.rmeta --extern paste=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libpaste-a36a4a0dbc2ac63f.dylib --extern rand=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/librand-4b1adc86e35ea892.rmeta --extern rayon=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/librayon-d134e48f83d52e6e.rmeta --extern rayon_cond=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/librayon_cond-5715a923c66c54a9.rmeta --extern regex=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libregex-a5c54f2d0034ab98.rmeta --extern regex_syntax=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libregex_syntax-58c405f62323b6ed.rmeta --extern reqwest=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libreqwest-1551c89d20e17f58.rmeta --extern serde=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libserde-f4748cc953dd1338.rmeta --extern serde_json=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libserde_json-5fba404e8440399e.rmeta --extern spm_precompiled=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libspm_precompiled-6bd24072bd3c9d31.rmeta --extern thiserror=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libthiserror-bcbb2769006ee534.rmeta --extern unicode_normalization_alignments=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libunicode_normalization_alignments-658520cf6a5461dc.rmeta --extern unicode_segmentation=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libunicode_segmentation-fffd829ab6256bb0.rmeta --extern unicode_categories=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libunicode_categories-e3815c3d18c1086b.rmeta -L native=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/bzip2-sys-d2cb72d65b178690/out/lib -L native=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/zstd-sys-ddff0154a55a136c/out -L native=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/esaxx-rs-69d9e34a40d41449/out -L native=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/onig_sys-3a9a2f947b5ad744/out (exit status : 1)&#xA;error : cargo rustc --lib --message-format=json-render-diagnostics --manifest-path Cargo.toml --release -v --features pyo3/extension-module --crate-type cdylib -- -C &#x27;link-args=-undefined dynamic_lookup -Wl,-install_name,@rpath/tokenizers.cpython-311-darwin.so&#x27; failed with code 101

    &#xA;

    at /usr/local/lib/python3.11/site-packages/poetry/installation/chef.py:166 in _prepare&#xA;162│&#xA;163│ error = ChefBuildError("\n\n".join(message_parts))&#xA;164│&#xA;165│ if error is not None :&#xA;→ 166│ raise error from None&#xA;167│&#xA;168│ return path&#xA;169│&#xA;170│ def _prepare_sdist(self, archive : Path, destination : Path | None = None) -> Path :

    &#xA;

    Note : This error originates from the build backend, and is likely not a problem with poetry but with tokenizers (0.12.1) not supporting PEP 517 builds. You can verify this by running 'pip wheel —no-cache-dir —use-pep517 "tokenizers (==0.12.1)"'.

    &#xA;

    UPDATE (SOLVED) :

    &#xA;

      &#xA;
    • i found a solution and this worked for me :
    • &#xA;

    &#xA;

    "I had the same problem and nothing mentioned here worked for me. Here is what worked for me :

    &#xA;

    **("Didnt do this Part")"Require all dependencies you need in the main.js file that is run by electron."**    &#xA;

    &#xA;

    What i did was :&#xA;Run npm i -D electron-rebuild to add the electron-rebuild package&#xA;Remove the node-modules folder, as well as the packages-lock.json file.&#xA;Run npm i to install all modules.&#xA;Run ./node_modules/.bin/electron-rebuild (.\node_modules.bin\electron-rebuild.cmd for Windows) to rebuild everything

    &#xA;

    It is very important to run ./node_modules/.bin/electron-rebuild directly after npm i otherwise it did not work on my mac."

    &#xA;

    But now i get following Error, when i upload and transcribe the file :

    &#xA;

    > [ELECTRON] NewEntry: Creating new entry with UUID: XY...&#xA;[ELECTRON] NewEntry: Copying audio file to store...&#xA;[ELECTRON] NewEntry: Audio file copied to store.&#xA;[ELECTRON] NewEntry: Entry added to database!&#xA;[ELECTRON] RunWhisper: Running model with args [&#xA;[ELECTRON]   &#x27;--verbose&#x27;,&#xA;[ELECTRON]   &#x27;true&#x27;,&#xA;[ELECTRON]   &#x27;--output_dir&#x27;,&#xA;[ELECTRON]   &#x27;/Users/administrator/Library/Application Support/stagewhisper/store/whisper/2a07203b-ad88-438c-babf-b600cb76aa1d&#x27;,&#xA;[ELECTRON]   &#x27;--task&#x27;,&#xA;[ELECTRON]   &#x27;translate&#x27;,&#xA;[ELECTRON]   &#x27;--model&#x27;,&#xA;[ELECTRON]   &#x27;base&#x27;,&#xA;[ELECTRON]   &#x27;--device&#x27;,&#xA;[ELECTRON]   &#x27;cpu&#x27;,&#xA;[ELECTRON]   &#x27;--input&#x27;,&#xA;[ELECTRON]   &#x27;/Users/administrator/Library/Application Support/stagewhisper/store/audio/harvard.mp3&#x27;&#xA;[ELECTRON] ]&#xA;[ELECTRON] RunWhisper: Child process closed with code 1&#xA;[ELECTRON] RunWhisper: Error running whisper script!&#xA;[ELECTRON] Error occurred in handler for &#x27;run-whisper&#x27;: Error: Error running whisper script!&#xA;[ELECTRON]     at ChildProcess.<anonymous> (/Users/administrator/Desktop/Stage-Whisper/electron/main/handlers/runWhisper/runWhisper.js:234:31)&#xA;[ELECTRON]     at ChildProcess.emit (node:events:390:28)&#xA;[ELECTRON]     at maybeClose (node:internal/child_process:1064:16)&#xA;[ELECTRON]     at Socket.<anonymous> (node:internal/child_process:450:11)&#xA;[ELECTRON]     at Socket.emit (node:events:390:28)&#xA;[ELECTRON]     at Pipe.<anonymous> (node:net:687:12)&#xA;&#xA; &#xA;</anonymous></anonymous></anonymous>

    &#xA;