Software

Articoli legati alle tecnologie software, il linguaggi di programmazione e le nuove app


Questo non sarà il solito articolo su come fa crescere il proprio Social Network per monetizzare; ma vi suggerirò proprio come costruirne uno, dal lato programmatore. Nell’era dei Social Network, è bene che un aspirante sviluppatore o programmatore sappia come ne funziona uno. Vuoi perché un giorno potreste ritrovarvi a lavorare per Meta, o LinkedIn (magari), vuoi perché vi ritroverete a svilupparne uno da soli. Oltretutto, la tendenza per il futuro sembra convergere tutta sui Social. Già oggi esistono Social Network dedicati a quasi ogni aspetto della vita quotidiana. Ci sono Social generici, come Facebook e Twitter, Social per foto/video come Instagram e TikTok, Social professionali come LinkedIn, Social per gamer come Ludomedia e Social aggregatori, come ComeHome o NextDoor. Sembra che ciò che un tempo si faceva tra portali con Forum e mIRC, oggi si sia spostato sui Social Network. E le aziende iniziano ad investirci. Ma per un programmatore, come funziona un Social Network? Quali sono i linguaggi di programmazione da usare, quali framework? Quali competenze servono per crearne uno? Scopriamolo.

È tutta una questione di database

Quando pensiamo ai Social Netowrk, la prima immagine che ci viene in mente è il sito “finito”. In generale, quando si parla di qualsiasi sito si pensa al suo front-end, ovvero la resa finale che esso ha sul nostro browser. Ma i siti hanno anche un back-end, ovvero il codice con cui sono realizzati, che rappresenta il motore che li fa girare. Il back-end di un Social Network riceve le richieste dagli utenti e fornisce come risposta una pagina html autogenerata. Questa pagina può rappresentare un semplice profilo utente, un feed con i post degli utenti collegati, la pagina dei messaggi privati, un album di foto etc.

Il sistema che rende tutto possibile è basato sui database. Se togliamo ai Social Network la parte visuale, spogliandoli da HTML e CSS, vediamo un cumulo di codice che non fa che collegare tra loro i record di un enorme database degli utenti. In sostanza:

  • L’utente manda una richiesta HTTP al server del Social Network;
  • Il server elabora la richiesta;
  • Se la richiesta è una HTTP POST con, ad esempio, user e password (o email e password), allora il server cerca nel database una corrispondenza e fa loggare l’utente;
  • Se invece la richiesta è una HTTP GET, il server controlla se negli URL presenti nella sua lista, esiste la pagina richiesta dall’utente;
  • Il server poi, si collega al database utenti e ricava dai record tutte le informazioni di cui ha bisogno;
  • Dopo aver recuperato le informazioni dai record del database, il server cerca il template adatto (configurato su un apposito file) e genera un file html da restituire all’utente che ha fatto la richiesta

Il database in questione contiene diverse informazioni, tra cui username, password, email, numero di telefono, post, foto, video, storie, utenti seguiti/amici, pagine seguite etc. Alcuni di essi sono dati sensibili (come email e password) e sono visibili solo all’utente che ne è proprietario. Altri sono elementi pubblici, come i post, le foto, i video e altro.

Che linguaggi di programmazione usare?

Qui il campo è abbastanza libero. Voglio dire, il risultato finale sarà sempre una pagina HTML e la sua grafica sarà sempre collegata ad un CSS, con magari qualche elemento in JavaScript. Ma per il back-end la scelta è pressoché ampia. Più che di un linguaggio di programmazione, abbiamo bisogno di un framework adatto. Quindi, se troviamo un linguaggio di programmazione con un buon framework che consente di creare un web server, allora possiamo tranquillamente utilizzarlo.

Comunque, se volete farvi un’idea, di seguito vi faccio un elenco di ciò di cui potreste aver bisogno. Alcuni elementi sono essenziali, altri a scelta. Ma comunque servirà a farvi un’idea. Dunque, per costruire un Social Network “from scratch” vi servirà conoscere:

Per il Front-End

  • HTML;
  • CSS;
  • JavaScript (React);
  • Eventualmente, le librerie di Bootstrap (che sono in CSS e JavaScript)

Per il Back-End (qua la scelta è libera)

  • PHP;
  • JavaScript (con framework come Node.js, o Express);
  • Python (con framework come Django);
  • Java (con framework come Spring);
  • ASP.NET;
  • SQL, MySQL, o PostgreSQL per la gestione dei database

Ovviamente i miei sono solo consigli. Sta a voi poi decidere da dove iniziare e con quale linguaggio. Le combinazioni possono essere innumerevoli. Quello che vi consiglio io è di documentarvi su quali siano i linguaggi di programmazione utilizzati oggi dai siti più importanti e cominciare a studiare quelli. Creare un Social Network, dal lato programmatore, non è una cosa certo semplice, ma neanche così comoplicata…se saprete impegnarvi.

BuddyBoss (ex-BuddyPress)

Per chi invece non ha voglia di scrivere il codice da zero, esistono CMS dedicati anche alla creazione di Social Network. Tra i più famosi annoveriamo BuddyBoss (un tempo conosciuto come BuddyPress). Si tratta di un plug-in per WordPress che contiene un insieme di elementi comuni ai tipici Social Network e consente di aggiungere ulteriori funzionalità attraverso l’ecosistema dei plug-in WordPress (come Elementor, Astra e tanti altri).

BuddyPress è stato creato con l’obiettivo di facilitare la creazione di siti web per il Social Networking. Potente, ma nel contempo semplice da usare. Pensato per sviluppatori e programmatori alle prime armi, che però “smanettano” bene con WordPress.

Read More

Parliamo di Linguaggi di Programmazione legati ai siti più famosi del momento. Da quando internet è diventato d’uso comune, siamo passati dai semplici siti web scritti in HTML, con un pochino di JavaScript e quel po’ di CSS per rendere la grafica più dinamica, a vere e proprie applicazioni per il web, che offrono servizi online di ogni tipo. Oggi il sito web non è più visto come un semplice ipertesto con delle informazioni, ma più come un’applicativo da usare all’interno del browser. Anche i semplici blog, che una volta avevano CMS molto rudimentali (vi ricordate di Splinder?), in cui dovevi comunque conoscere un po’ di HTML per poter realizzare qualcosa di carino, oggi hanno dei motori molto più complessi per la loro realizzazione (vedi WordPress, Joomla, Blogger etc.). Quindi, per un aspirante programmatore/sviluppatore che vuole entrare nel mondo della programmazione web, quali sono i linguaggi di programmazione che si possono consigliare? Vediamoli.

Front-End o Back-End?

Quando si parla di programmazione web, è bene dividere il processo in due: il front-end e il back-end. Il front-end è il sito così come appare all’utente, il back-end è il “motore” che lo fa girare. Per quanto riguarda il front-end, o lato client,la trafila è sempre la stessa da anni, ovvero si usano HTML, CSS e JavaScript per creare la pagina. Col tempo sono nate diverse librerie per il front-end e diverse raccolte di elementi grafici pronti all’uso. Una delle raccolte più famose è Bootstrap. Un insieme di moduli ed elementi grafici per CSS e JavaScript. Il back-end invece, o lato server dispone di un’ampia scelta che va da Java a Python, passando per alcune librerie di JavaScript e per i classici PHP, ASP.NET e altri.

Se vorrete avvicinarvi alla programmazione web quindi, sappiate che potrete scegliere. Potrete volervi dedicare solo a un aspetto (front-end o back-end), oppure a tutti e due. Chi programma sia front che back è detto “Full-Stack Developer”. Una volta capito di cosa volete occuparvi, bisogna scegliere il linguaggio di programmazione più adatto alle vostre esigenze. Di seguito, vi elenco i linguaggi di programmazione usati dai siti più famosi al momento, considerando che però il web è grande e la scelta è vastissima.

Java

Java è un linguaggio di programmazione orientato agli oggetti. È open source e multipiattaforma. Grazie alla sua versatilità può essere utilizzato per i progetti più disparati. È un linguaggio back-end, in quanto non dispone di una libreria grafica per i siti web, ma è capace di generare pagine HTML attraverso i giusti framework. Nonostante la sua potenza e la grande richiesta di cui gode nel mercato delle web app, non lo consiglio a chi vuole iniziare da zero perché è un linguaggio molto difficile da imparare.

PHP

PHP è un linguaggio di scripting (ovvero non ha bisogno di un compilatore per far girare i programmi) basato su C e Perl. Con PHP si possono programmare siti web dinamici e web app. È abbastanza semplice da imparare anche per un principiante e si integra benissimo con l’ HTML. Dispone di un ampio supporto a diversi tipi di database e ha una buona integrazione con il protocollo internet. È uno dei linguaggi più studiati dagli aspiranti programmatori per via della sua semplicità. Sebbene però sia facile e potente, ad oggi è anche diventato obsoleto, in quanto con l’avvento dei framework per il web di JavaScript e Python, PHP è finito in disuso. Tuttavia, alcuni gestori di siti ancora vi si affidano.

JavaScript

JavaScript è un linguaggio di scripting orientato agli oggetti. Nonostante il nome, non ha niente a che vedere con Java, se non che tutti e due derivano dal linguaggio C. Il nome JavaScript fu scelto per via della popolarità di Java all’epoca in cui fu inventato, oltre che per la somiglianza con quest’ultimo nella struttura del suo codice. È un linguaggio dinamico, in grado di aggiungere tante funzionalità a un pagian web, anche dal punto di vista back-end. Ad oggi è il linguaggio più usato per l’E-Commerce e dispone di una serie di framework e librerie per il web che lo rendono ogni anno più popolare. Per iniziare ad addentrarsi nel mondo della programmazione web, è forse uno dei “primi gradini” migliori da salire.

Python

Python è il linguaggio di programmazione del momento, utilizzato da gran parte dei siti più famosi. Anch’esso un linguaggio di scripring, poiché non dispone di un compilatore per far girare i programmi, bensì di un interprete. Al pari di Java, Python è indipendente dalla piattaforma. Grazie alla sua immensa fornitura di librerie e framework, con Python è possibile programmare praticamente di tutto. Dalle semplici applicazioni per il PC alla programmazione di IA. Dispone di una vasta scelta di framework anche per le applicazioni web. Il più famoso è Django, con il quale, per fare un esempio, sono stati concepiti siti web come Instagram e Pinterest. La sua facilità lo rende tra i linguaggi più scelti dagli aspiranti programmatori e la sua potenza lo mette ai primi posti tra quelli più scelti in assoluto dalle aziende.

Go

Go, conosciuto anche come Golang, è un linguaggio di programmazione creato da Google e ispirato a C. È stato concepito per la programmazione di applicazioni web/server, middleware e database. È supportato da una vasta gamma di librerie, che lo rendono uno dei linguaggi più potenti per scrivere per il web dal lato server.

C++

In ultimo, ma non per importanza, vi cito il linguaggio più vecchio tra quelli menzionati in tutto l’articolo. Il C++. Nato dal linguaggio C, C++ rappresenta un’evoluzione di quest’ultimo. Molto semplice da memorizzare, in quanto dispone di appena una sessantina di parole chiave, è considerato uno dei linguaggi più potenti, per la sua vicinanza al linguaggio macchina. La sua vicinanza al linguaggio macchina, combinata al lessico abbastanza povero, fa di C++ uno dei linguaggi più complessi da scrivere, per via delle sintassi non sempre molto chiare. Tuttavia, è uno dei linguaggi più utilizzati quando si parla di sistemi operativi e applicazioni.

I siti web più famosi e i linguaggi di programmazione utilizzati

Fatta questa breve panoramica sui linguaggi di programmazione più utilizzati per il web, di seguito ecco un riassunto dei maggiori siti del momento e dei linguaggi da essi utilizzati per lo sviluppo

SITO WEBFRONT-ENDBACK-END
GoogleJavaScript, HTML, CSSC, C++, Go, Java, Python, PHP
FacebookJavaScript, HTML, CSSHack, PHP, Python, C++, Java, Erlang, D, XHP, Haskell
WhatsAppXMLAndroid, Swift, Java
YoutubeJavaScript, HTML, CSSC, C++, Python, Java, Go
InstagramJavaScript, HTML, CSSPython
AmazonJavaScript, HTML, CSSJava, C++, Perl
TikTokJavaScript, HTML, CSSC, Java, Python, Swift
TwitchJavaScript, HTML, CSSRuby
Tabella dei siti più popolari e dei linguaggi di programmazione più utilizzati
Read More

L’acronimo VPN sta per Virtual Private Network, che significa “Rete Privata Virtuale”. Una VPN serve a proteggere la connessione a internet e la privacy. Cifra i dati attraverso la crittografia e nasconde e maschera l’indirizzo IP, fornendo ai provider un indirizzo alternativo. In questo modo le connessioni a reti pubbliche, come un Wi-Fi pubblico, sono più sicure. Se attivate una VPN sul vostro smartphone, nessuno potrà tracciarvi e non ci sarà il rischio che qualcuno vi rubi i dati. E se dovete accedere a un contenuto bloccato nel nostro paese, tramite VPN potrete impostare un indirizzo IP di un paese in cui quel contenuto è libero e accedervi lo stesso.

In questo modo, se volete guardare un film o una serie TV che sono nel catalogo americano di Netflix, ma non in quello italiano, potete collegarvi a una VPN americana e guardarla grazie ad essa. Ma non solo; ammettiamo che per lavoro vi troviate a Hong Kong e dovete usare TikTok per condividere un video. A Hong Kong TikTok è stato bloccato, quindi avrete bisogno di una VPN italiana per poterlo usare. MA la VPN ha anche un’altra utilità: potreste dovervi connettere ad un cloud riservato per lavorare in smart working. Omagari dovete collegarvi col computer di casa mentre siete in viaggio. In quel caso, la VPN garantirebbe la sicurezza non solo dei vostri dati, ma anche del lavoro in generale.

Come connettersi a una VPN con i propri dispositivi

Esistono diversi servizi di VPN online. Alcuni gratuiti, altri a pagamento. Il più famoso è sicuramente NordVPN, ma la lista è davvero lunga. Oltre alle app poi, la VPN si può integrare anche all’interno dei propri browser come plug-in. Esistono poi alcuni browser, come Brave, che la hanno integrata di default. Microsoft dispone di un servizio VPN per Azure chiamato Gateway VPN, che consente alle aziende di creare reti estese per tutti i dipendenti che lavorano in mobilità.

Come funziona una VPN

Nella connessione a internet classica, il provider di servizi internet mette in comunicazione il computer dell’utente con la destinazione desiderata. Ad esempio, se scrivete sul vostro browser “google.com”, il vostro provider elabora la richiesta e vi collega direttamente ai server di Google. In questo modo, a Google arrivano tutte le informazioni sul vostro computer. Da che città vi siete collegati, che IP state utilizzando, che browser e poi anche tutto ciò che farete all’interno del sito (le ricerche, nel caso di Google). Questi dati potranno essere poi utilizzati dallo stesso Google per inviarvi annunci pubblicitari.

Ma come questi dati possono essere presi e riutilizzati da Google, la stessa cosa possono farla anche eventuali siti con brutte intenzioni. O potete addirittura essere intercettati mentre, ad esempio, vi collegate tramite app alla vostra banca per effettuare pagamenti o visualizzare il saldo. Per fare in modo che la connessione sia sempre sicura, occorre crittografarla. E un servizio di Virtual Private Network, o VPN in pratica serve a questo. Quando voi scrivete l’indirizzo di un sito sul vostro browser, il provider (che prende i dati dalla vostra app VPN) vi reindirizza al server della Virtual Private Network (crittografando i dati). Il server vi fornirà un nuovo indirizzo IP e solo dopo inoltrerà la richiesta al sito di destinazione. In questo modo i dati è come se viaggiassero in un furgone blindato. Mentre prima giravano in monopattino.

Se l’argomento ti è piaciuto, se ti interessa l’informatica e vuoi continuare a seguirmi, allora seguimi sui miei Social, magari connettiti con una VPN!

Mi trovi su FacebookInstagramTikTokWavefulTwitter e Github

Read More

Grazie a un BOT costruito con Python e instapy, utilizzare Instagram diventerà più semplice. Vediamo come.

Da quando internet è diventato commerciale, le cose sono cambiate di molto. I più “datati” tra chi sta leggendo queste righe ricorderanno bene come era negli anni ’90. Niente Social, niente app, connessioni lente, niente dsl o fibra. La rete era un enorme massa di ipertesti collegati fra loro, che fornivano informazioni e basta. C’erano pochissimi servizi online, e quasi tutti molto macchinosi. Gli stessi blog giravano su cms rudimentali in cui bisognava comunque avere delle basi di HTML per fare post un po’ più “accattivanti”. E per interagire con altri utenti c’erano i forum, i gruppi di discussione, qualche instant messenger nascente e le chat, che potevano essere interne a un sito, oppure sui canali di mIRC.

Negli anni però è arrivata la rivoluzione. Grazie alle connessioni sempre più veloci e all’arrivo di nuovi device come smartphone e tablet, i servizi sono iniziati ad aumentare. Tra le innovazioni portate con questa ventata di cambiamento, quella più epocale è stata sicuramente il Social Network. Nei primi anni 2000, Tom Anderson ci provò con MySpace. Fu un grande successo, ma col tempo venne surclassato alla grande da Facebook e Twitter. Nel mentre, altre piattaforme nascenti cercavano di affermarsi. Come non menzionare Netlog, o Google+? E tra le varie piattaforme Social, ce ne era una che piano piano si faceva timidamente strada, fino ad arrivare a farsi acquistare da Facebook (oggi Meta). Sto parlando di Instagram, al momento la terza app Social più utilizzata al mondo, dopo WhatsApp e Facebook (tutte figlie di mamma Meta) e subito prima di TikTok. Superata per un breve periodo in Italia solo da Waveful.

I Social, la svolta del decennio

Grazie ai Social, oggi è possibile mettersi in contatto con chiunque. Ed è anche possibile raggiungere tutti i propri contatti istantaneamente. Grazie agli hashtag poi, si possono raggiungere anche persone che non si hanno nella lista contatti. Più un hashtag è di tendenza, più persone riesce a raggiungere. E proprio grazie a questo meccanismo, aziende e professionisti hanno iniziato a imporsi e ad allargare il proprio target di riferimento. Parlando di Instagram in particolare, oggi si può dire che esiste la professione dell’ Instagrammer, che al pari dello YouTuber o del TikToker, può far portare a casa la leggendaria pagnotta.

Come funziona? È molto semplice! Se hai un profilo Instagram molto seguito e sai come interagire con i tuoi follower e soprattutto con gli hashtag di tendenza, le aziende stesse ti contatteranno per offrirti collaborazioni. In cambio di pubblicità ai loro prodotti tramite i loro hashtag dal tuo profilo, potranno offrirti una sponsorizzazione. Tutto sta nella tua costanza nel postare nuovi contenuti ogni giorno e nell’interagire con i tuoi follower il più possibile. In modo da risultare un utente attivo e sempre aggiornato. Se continui a seguirmi, in uno dei prossimi articoli ti suggerirò anche qualche modo per far crescere i tuoi Social efficacemente.

Perché usare un BOT?

Ma potresti non avere tutto il tempo necessario da dedicare ai Social. Magari per lavoro non hai tanto tempo libero a disposizione per metterti a controllare tutto. Per questo ho pensato di darti un aiutino. Se vai sul mio profilo Github troverai un’app chiamata InstaBOT. Si tratta di un bot per Instagram scritto in Python con la libreria instapy, che ti permetterà di automatizzare alcune azioni senza doverti ogni volta collegare e fare tutto da te. Ricorda però, a Meta non piacciono i BOT e quindi se esageri, potresti ritrovarti con l’account limitato. Cerca di non esagerare e usalo con parsimonia. Ricordati anche che un buon Instagrammer è uno che interagisce in prima persona con i suoi follower, non lascia fare tutto ai bot. Quindi InstaBOT deve essere solo un supporto alle tue azioni quotidiane. Deve essere qualcosa che va a completare il lavoro là dove non puoi arrivare tu. Non deve diventare il tuo sostituto su Instagram. Ma vediamo subito quali sono i comandi base che ho utilizzato nella mia app.

InstaBOT: il codice

Prima di tutto: per far funzionare il nostro BOT per Instagram con Python, occorre installare instapy e schedule, la prima è libreria di Python dedicata a Instagram, la seconda una libreria che ti consentirà di programmare le azioni secondo un’agenda definita. Installarla è semplice, come per tutte le librerie di Python, si usa pip:

pip install instapy 
pip install schedule

Dopodiché, con il tuo IDE preferito (io uso VS Code e Atom, ma puoi usare qualsiasi editor ti piaccia), apri un nuovo file e dagli un nome che abbia l’estensione .py, ad esempio “app.py”. E per prima cosa, importa quello che ti serve dalla libreria instapy

from instapy import InstaPy
from instapy import smart_run
from instapy import set_workspace
import time
import schedule

Una volta importate le classi, definiamo le variabili per il login, settiamo un workspace e logghiamoci.

user = "" #inserisci il tuo username tra le virgolette
pwd = "" #inserisci la tua password tra le virgolette

set_workspace(Path=None)

#effettuiamo il log-in con username e password impostate in precedenza
instagrammer = InstaPy(user, pwd) 

E ora, definiamo le funzioni per l’automazione. In questa app di esempio creerò due funzioni; una per mettere like e commentare determinati hashtag, l’altra per seguire le persone.

#funzione per commentare, mettere like e seguire altri utenti
def automation():
    with smart_run(instagrammer):
        instagrammer.set_do_comment(enabled = True, percentage = 20)
        #inserisci il commento tra le virgolette. Attenzione, puoi inserire anche più commenti all'interno della lista, tutti tra virgolette e separati da una virgola
        instagrammer.set_comment([""])

        #come per i commenti, inserisci gli hashtag tra le virgolette. Puoi inserire anche più hashtag all'interno della lista, tutti tra virgolette e separati da una virgola
        instagrammer.like_by_tags([""], amount=100, media = "Photo")
        instagrammer.set_do_follow(enabled = True, percentage = 25, times = 2)

def get_followers():
    with smart_run(instagrammer):
        #inserisci lo username di un utente a scelta da cui prendere i followers
        instagrammer.grab_followers(username="", live_match=True, store_locally=True, amount="full")

Ora che abbiamo definito le funzioni, passiamo al corpo principale del programma: ovvero la schedulazione. Impostiamo, ad esempio, la funzione per prendere i follower da un altro utente ogni lunedì a mezzogiorno, mentre per i like e i commenti facciamo tutti i mercoledì alle 10.

schedule.every().monday.at("12:00").do(get_followers)
schedule.every().wednesday.at("10:00").do(automation)

while(True):
    schedule.run_pending()
    time.sleep(10)

E adesso, tutti su Github!

Come ho detto in precedenza, il codice sorgente della mia applicazione si trova sul mio Github, a questo link. Se continuate a seguirmi e a seguire il mio Github, col tempo la migliorerò, aggiungendo anche una veste grafica in modo da farvi trovare un’applicazione in grado di farvi effettuare il log-in con i dati che inserite voi, e che vi farà seguire/commentare/mettere like a qualsiasi profilo decidiate, semplicemente scrivendo il suo username in un campo di testo. Per ora, accontentatevi della “base”. Ma, come al solito…STAY TUNED!

Read More

Ormai YouTube è diventato la piattaforma video per eccellenza. Gratuita (a meno che non vogliamo sottoscrivere l’abbonamento Premium) e ricca di contenuti. Ma a volte, per qualche motivo, non possiamo disporre della connessione a internet. Magari siamo in qualche punto in cui il segnale è debole. In quei casi quasi rimpiangiamo gli anni 2000 e il lettori DVD o MP3 portatili. Ma non tutto è perduto. Infatti, se vogliamo scaricare i nostri video sul nostro smartphone, o anche solo le tracce audio, si può fare. Il modo più rapido sarebbe quello di abbonarsi a YouTube Premium. Ma volendo, c’è un trucchetto ancora più facile (e gratuito).

Con Python infatti, è possibile creare un’app in grado di scaricare video da YouTube. Sia che vogliate scaricare tutto il video, o anche solo l’audio (magari di una canzone che vi piace), col linguaggio di programmazione del pitone questo è possibile! Sul mio Github ho inserito il Repository completo. Qui invece voglio analizzare con voi il “core” dell’app.

Innanzitutto, bisogna prima installare sul nostro computer la libreria PyTube di Python. Per farlo basta usare pip scrivendo il seguente comando dal vostro terminale Linux/MacOS/Windows:

pip install pytube

Dopodiché, aprite il vostro editor preferito. Io uso sia VS Code che Atom, ma qualsiasi editor usiate va bene. C’è chi usa PyCharm e chi usa vim. L’importante è che sia un ambiente a voi comodo. Una volta aperto l’editor e impostato il nuovo progetto, aprite un nuovo file e dategli l’estensione .py (ad esempio: app.py, o youtube-downloader.py). La prima cosa che dovete fare è importare la libreria che vi interessa all’interno del file:

from pytube import YouTube

Bisogna poi creare un oggetto di classe YouTube, che prenderà lo stream direttamente dal video e due oggetti che conterranno le informazioni che ci servono per questo programma.

yt = YouTube("https://www.youtube.com/<indirizzodelvideo>/")
video = yt.get_highest_resolution()
audio = yt.streams.get_by_itag(140)

Come avete visto, l’oggetto yt prende il video direttamente dall’URL. L’oggetto video invece, cattura lo stream alla miglior risoluzione possibile. Per quanto riguarda l’oggetto audio, ho usato un particolare filtro. Nella pagina di documentazione di pytube c’è un elenco di tag che servono per i vari filtri. Il 140 corrisponde al formato audio/mp4 a 128 kb/s.

Ora che avete impostato gli oggetti, per scaricare il video e l’audio, basta eseguire i seguenti comandi:

video.download()
audio.download()

E il gioco è fatto!

Ovviamente, vorrete creare qualcosa di più vivo, più accattivante. Più graficamente accettabile di un semplice programmino a riga di testo. Per questo io ho usato nella mia app la libreria Tkinter. Ho creato un contenitore con il logo dell’app, una barra di ricerca e i pulsanti per cercare il video con le informazioni e scaricare audio e video. Il codice sorgente è su Github, ma per chi non fosse pratico del portale lo riporto anche qui, completo di commenti. In altri articoli vi insegnerò come si installa e usa la libreria Tkinter. STAY TUNED!

from cProfile import label
from cgitb import text
import tkinter as tk
from tkinter import *
from tkinter import filedialog
from tkinter.font import BOLD, ITALIC
from pytube import YouTube

window = tk.Tk()
window.title("YouTube Downloader")
#window.iconbitmap("icona_yt.ico")
window.tk.call('wm', 'iconphoto', window._w, tk.PhotoImage(file='icona_yt.png'))
window.geometry("800x600")
window.config(bg="#ffd0bf")

#Funzione che scarica i Video completi
def download_video():
    if yt_video.get() == "":
        print("Inserire prima un URL valido")
    else:
        video_search()
        download_button.config(state=tk.DISABLED)
        yt_video.config(state=tk.DISABLED)
        audiosave_button.config(state=tk.DISABLED)
        download_dir = filedialog.askdirectory(title="Seleziona la cartella di destinazione")
        yt = YouTube(yt_video.get())
        video = yt.streams.get_highest_resolution()
        video.download(output_path=download_dir)
        download_button.config(state=tk.ACTIVE)
        yt_video.config(state=tk.ACTIVE)
        audiosave_button.config(state=tk.ACTIVE)

#Funzione che ricerca su YouTube il video richiesto e fornisce tutti i dettagli (titolo, descrizione e lunghezza video)
def video_search():
    if yt_video.get() == "":
        print("Inserire prima un URL valido")
    else:
        yt = YouTube(yt_video.get())
        video = yt.streams.get_highest_resolution()

        video_label = tk.Label(window, text=yt.title, font = ("Arial", 10, BOLD), bg="#ffd0bf", fg="red")
        video_label.grid(row=6, column=0, pady=20)
    
        video_description = tk.Label(window, text=yt.description, justify=LEFT, wraplength=500, font = ("Arial", 8, ITALIC), bg="#ffd0bf", fg="black")
        video_description.grid(row=8, column=0)

        video_info = tk.Label(window, text="Durata: "+str(yt.length)+" secondi; Visualizzazioni: "+str(yt.views), justify=LEFT, wraplength=500, font = ("Arial", 8, BOLD), bg="#ffd0bf", fg="black")
        video_info.grid(row=7, column=0, pady=10)

#Funzione per scaricare l'audio dai video. Il formato scelto è Mp4
def download_audio():
    if yt_video.get() == "":
        print("Inserire prima un URL valido")
    else:
        video_search()
        download_button.config(state=tk.DISABLED)
        yt_video.config(state=tk.DISABLED)
        audiosave_button.config(state=tk.DISABLED)
        download_dir = filedialog.askdirectory(title="Seleziona la cartella di destinazione")
        yt = YouTube(yt_video.get())
        audio = yt.streams.get_by_itag(140)
        audio.download(output_path=download_dir)
        download_button.config(state=tk.ACTIVE)
        yt_video.config(state=tk.ACTIVE)
        audiosave_button.config(state=tk.AACTIVE)

#Imposto l'app
# in alto, il logo di YouTUbe, con la scritta "Downloader" sotto di esso  
logo_youtube = PhotoImage(file="icona_yt.png")
title_label = tk.Label(window, image=logo_youtube, font=("Arial",20, BOLD), bg="#ffd0bf", fg = "red")
title_label_text = tk.Label(window, text="Downlader", font=("Arial",20, BOLD), bg="#ffd0bf", fg = "red")
title_label.grid(row=1, column=0, pady=5)
title_label_text.grid(row=2, column=0, pady=5)

#Sotto il titolo dell'app, la nostra "call to action"
instruction_label = tk.Label(window, text="Inserisci URL del video da scaricare:", font =("Arial", 12, ITALIC), bg="#ffd0bf", fg="black")
instruction_label.grid(row=3, column=0)

#La barra di testo in cui inserire l'URL del video di YouTube
yt_video = tk.Entry(window, bd=3, width=80)
yt_video.grid(row=4, column=0, padx=5)

#I tre pulsanti d'azione:
#Ricerca
search_icon = PhotoImage(file="lente.png")
search_button = tk.Button(window, image=search_icon, width=20, height=20, bd=3, bg="red", command = video_search)
search_button.grid(row=4, column = 1, pady=20)

#Salva video
savefile = PhotoImage(file="savefile.png")
download_button = tk.Button(window, image=savefile, width=20, height=20, bd=3, bg="red", command = download_video)
download_button.grid(row=4, column = 2, pady=20)

#Salva audio
audiosave = PhotoImage(file="audiosave.png")
audiosave_button = tk.Button(window, image=audiosave, width=20, height=20, bd=3, bg="red", command= download_audio)
audiosave_button.grid(row=4, column=3, pady=20)

window.mainloop()

Una volta inserito tutto il codice e creata l’app, per farla partire basta andare sul Terminale, nella cartella dell’app e digitare il comando di python. Attenzione, se avete installato Python 3, al posto di “python” dovrete scrivere “python3”

python nomecheavetedatoallapp.py
Read More

Oggi parliamo di AlgoBuild: il software gratuito per creare algoritmi e flow chart (diagrammi di flusso) in tutta semplicità, per sviluppare al meglio i nostri software. Ma prima di tutto, cos’è un algoritmo?
Leggiamo cosa dice Wikipedia:

Un algoritmo è una strategia che serve per risolvere un problema ed è costituito da una sequenza finita di operazioni (dette anche istruzioni), che consente di risolvere tutti i quesiti di una stessa classe.

In sostanza, quando si deve risolvere un problema il metodo scientifico impone di creare prima un modello semplificato, sulla base del quale verranno definite in seguito le operazioni per la risoluzione del problema. Per fare un esempio: se il problema è “devo andare a lavoro, ma non ho la macchina”, il modello semplificato in questo caso è una mappa della città, su cui evidenziare la strada da casa a lavoro e tutte le fermate di autobus, tram e metro nel mezzo. Dopodiché bisogna vedere quali mezzi passano da quelle fermate e poi scrivere il percorso con una formula tipo:

  • Esci di casa. Vai alla fermata all’incrocio A, prendi la metropolitana Y, scendi alla fermata X, poi prendi il tram numero N, scendi alla fermata Z e prosegui a piedi per 100 metri fino a via B. Sei arrivato a lavoro.

Ecco un rudimentale esempio di Algoritmo.

Gli algoritmi  si usano per determinare la risoluzione di problemi matematici fin dai tempi più antichi. Prima ancora di scrivere le equazioni; matematici, fisici, chimici e scienziati di tutte le categorie semplificano il problema con un modello matematico elementare, per poi definire le istruzioni di base. Successivamente aggiungono le variabili del caso e completano l’equazione.

Gli Algoritmi e i Flow Chart in Informatica

In informatica, l’algoritmo è un concetto fondamentale. È la base della calcolabilità. Un problema risulta calcolabile quando si può risolvere con un algoritmo. In fase di programmazione e sviluppo del software, l’algoritmo è un elemento essenziale. Sviluppare un buon algoritmo prima di scrivere il codice aiuta il programmatore (e lo sviluppatore) ad avere tutti i tasselli da incastrare al posto giusto già prima della codifica.

Per creare un algoritmo funzionale, la prima cosa da fare è disegnare il relativo diagramma di flusso, o Flow Chart. Questi diagrammi sono una rappresentazione schematica del processo risolutivo del problema. A un Flow Chart si può affiancare uno pseudo codice. Lo pseudo codice è un codice scritto con un linguaggio semi-naturale, che successivamente viene tradotto dal programmatore in linguaggio di programmazione. Con un Algoritmo ben studiato e il suo relativo Flow Chart, scrivere lo pseudo codice è più facile. Così facendo, sarà più facile scrivere anche il codice vero e proprio. E AlgoBuild aiuta nelle prime due fasi: ovvero creare il Flow Chart e il relativo pseudo codice.

AlgoBuild: il software per Algoritmi e Flow Chart

Come scaricare e installare AlgoBuild

Il software, totalmente gratuito, è multipiattaforma. Gira tranquillamente su Windows, Linux e Mac OS. Trattandosi di un eseguibile jar scritto in Java, è sufficiente avere installato nel proprio computer un interprete Java. AlgoBuild è scaricabile dal sito ufficiale, alla sezione Download.

Una volta scaricato, bisogna aprire il file zip ed estrarre i file che ci servono. Il file jar è il programma, mentre gli altri file sono gli eseguibili dei vari sistemi operativi. Scegliete il vostro (bat e exe sono file Windows, i due sh sono per Linux e Mac OS).

AlgoBuild: come funziona

AlgoBuild è un software molto semplice e minimale. All’apertura troverete una semplice schermata con due finestre affiancate. Una con il diagramma e una con lo pseudo codice. Progredendo nel disegno del diagramma, il codice si aggiornerà automaticamente ad ogni istruzione.

AlgoBuild: il software per Algoritmi e Flow Chart

Alla fine dell’algoritmo, avremo lo pseudo codice completo sul lato destro. Per verificare la correttezza del programma, dal menu “Run” si può selezionare “Esegui Istruzioni” (oppure basta premere il pulsante F9). Con questa funzione, AlgoBuild eseguirà il programma, facendoci vedere sia la sequenza dal Flow Chart, sia dalle istruzioni in pseudo linguaggio. Una volta verificato tutto, saremo pronti. L’ultimo step è quello di scegliere il linguaggio con cui codificare il tutto e tradurre lo pseudo codice.

AlgoBuild: il software per Algoritmi e Flow Chart

AlgoBuild: quali vantaggi con algoritmi e flow chart

Il vantaggio più grande nell’avere un algoritmo ben sviluppato, con il Flow Chart e lo pseudo codice, consiste nell’avere praticamente il programma già scritto per metà. Pensate di dover scrivere un programma molto complesso, pieno di funzioni, sotto-programmi, sub-routine. Un software come AlgoBuild fornirà un punto di riferimento fondamentale a cui potrà fare riferimento anche un intero team di programmatori.

Ti è piaciuto questo articolo su AlgoBuild, il software per algoritmi e flow chart?  Resta sintonizzato per seguire gli altri articoli della serie! Contattami su Facebook o su Twitter e parliamone insieme! E se non vuoi perderti gli aggiornamenti del blog, iscriviti al canale Telegram!  Ah, ti ricordo che io scrivo anche per i blog di Stolas Informatica e Satyrnet. Facci un salto!

Read More